[self-interest] Architecture and Programming

Richard 3prometheus at home.com
Tue Dec 5 03:58:13 UTC 2000


cramakrishnan at acm.org wrote:
> There's been a lot of recent discussion on this list about
> architecture and patterns.  Though it hasn't been explictly stated, i
> think there's an underlying assumption that programming has a deep
> connection to architecture.
> 
> Assuming i'm understanding correctly, would anyone like to make that
> argument?  Explain to me why you think there is a deeper connection
> between programming and architecutre than programming and any other
> creative endevor that humans engage in like music or, say, bowling?

Both programming and architecture must satisfy functional and human needs.
Music does not have any functional requirements so nowadays it's entirely
driven by corporations and personal taste. Because of the former, modern
music is a complete wasteland.

But programming per se has little connection to architecture. Rather,
computer science encompasses both programming and software architecture.
It is possible to do architecture without programming, even if this is
anathema to the Extreme Programming crowd and you can't get a job that
way. And of course, requiring aspiring software architects to prove
themselves as programmers makes as much sense as requiring building
architects to prove themselves as draftsmen. Training as a programmer
is actually a sure way to destroy the instincts of an architect. Too
much technical knowledge hinders your ability to envision the human
dimension.

It would be desirable for every programmer to also be an architect but
this is as unrealistic as expecting every engineer to also be a musician
(so they can tell the tension on the catapults by the pitch of the skeins
alone).

The job of the programmer is to instantiate software based on abstact
architectures. The job of the architect is to produce and improve
abstract architectures from existing software. These are fundamentally
different tasks.

I read a good paper (can't remember where) on the uselessness of software
reuse which explains that while the abstract architectures in two different
pieces of software may be identical, no code can be shared between them.
Moreover, recognizing that the architecture in code A is the one you need
for job B is in general a hopelessly difficult task.



More information about the Self-interest mailing list