January 21, 2008

...Learn TDD with Codemanship

Architecture vs. Design - An Artificial Distinction?

Software architects are a funny bunch. Putting aside our latent God complexes for a moment, we also have a tendency to tout some pretty dodgy, unsubstantiated rubbish from time to time. And I should know.

Take this notion that there is a distinction between architecture and design, for example. I've been told on numerous occasions by numerous architectural luminaries that if it's about how code is organised into classes, then that's "design", but if it's about how components are organised into systems, well, that's "architecture", apparantly.

Architects do not concern themselves with the details of what code goes where. It's all a question of scale, they confidently tell me.

Well, that's just a load of old codswallop, if you ask me. First, it presupposes that real architects - y'know, the ones we stole the name from - don't concern themselves with implementation details, or that there's a difference between a building "architect" and a building "designer". My father designs buildings. He is an architect. And yes, he does actually care about the little details. Any good architect should. Shoddy craftsmanship can ruin even the best designs, and my Dad worries about everything from the overall shape of the building down to the mix of the grout used to tile the bathrooms. It all matters.

This lofty - actually, "haughty" is probably a better word for it - idea that there is a special breed (apart) of software professional who concerns him or herself only with "big design decisions" seems to me to be largely about status than about actual demarcation of roles or responsibilities.

The division of scale is entirely arbitrary. Maybe someone who works at the global enterprise level might see the organisation of software components into systems as trivial, and not really "architecture" either. In which case, it's a relative term, and can therefore be applied at any level below which there exists another level of detail that we could describe as "design" (like the organisation of transistors in a silicon chip - or are people who design processors not allowed to call themselves "architects" either?)

My advice, if you happen to be one of these hifalutin so-called "architects", is to drop the airs and graces, roll up your sleeves and get stuck into the code, where 95% of the real design decisions - that have a real impact on maintainability, reusability, portability and all the other -ilities - actually get made.

Boy, I get especially tetchy when I've got a cold, don't I?
Posted 12 years, 2 months ago on January 21, 2008