The Architecture Analogy For Programming Is Wrong

Software Development has taken a lot of inspiration from architecture. Seems to build stable buildings, you have to plan as much as possible beforehand. Once things are put in concrete, it is too late or very expensive to fix mistakes and bugs. In analogy most IT companies try to do a lot of planning before sitting down to code.

I believe they might have drawn the wrong analogy, though: the final piece of software is not like the building. The proper analogy for the software is the final plan the architect emits. Building the building is more like then running the completed software on the computer, it happens when the work of the architect is already done. To be sure, while building buildings or running software, you’ll still notice the one or other flaw that you have to fix “on the fly”. But that doesn’t contradict the general notion.

Why does it matter? Because this misguided paradigm is stifling software development and turning it into an expensive and arduous chore. It is very difficult and therefore expensive to plan everything in software development beforehand.

Unfortunately I don’t know much about how architects really go about drawing their plans. There might be some interesting lessons there. To be sure there has to be some structure (a building needs windows, doors, stairs, toilets, …), but I suspect overall it is much more free form and creative than misguided software development. For now I just felt like throwing that thought snippet out there… Please comment.

3 Responses to “The Architecture Analogy For Programming Is Wrong”

  1. Willi Says:

    Bjoern, this is absolutely right, to have the adequate basic model really is essential how to conceive things, procedures, ressources. As I have been studying the rare disciplin of “information science” I came across this issue in an other area. Just think of the paradigm of hierarchical classification to navigate in knowledge, Dewey’s Decimal Classification looks like an almost irrational obsession seen from today. It roots (sic!) in the rather old metaphor of the “knowledge tree”. Since the corpus of knowledge is in dynamic the metaphor of a garden would have been less fatal.

    In doing knowledge management I had to think in floating structures and moving targets – this is more like gardening too. That does not mean that there are no plans! It means that there are overlapping and sometimes conflicting plans. I suppose, that in programming it will help to analyze dependencies of (a) goals and (b) structures at an early stage - and permanently. (But I am not in that business, maybe this is actually done that way.)

  2. Björn Says:

    I like the gardening analogy :-) Have you read “Otherland” by any chance? There is a story about knowledge organization as gardening in there. Not detailed enough to make an application out of it, but it makes me wonder how it could work that way.

  3. Willi Says:

    Wow, actually I see that “my” metaphor is not so original … hmm, quite a usual experience googling a “new” thought, this plant has become a brain. There even is a book with “knowledge gardening” in the title …
    coding “like gardening” - Google-Suche
    http://www.google.com/search?hl=de&client=safari&rls=de-de&q=coding+%22like+gardening%22&btnG=Suche&lr=
    “knowledge gardening” - Google-Suche
    http://www.google.com/search?hl=de&client=safari&rls=de-de&q=%22knowledge+gardening%22&btnG=Suche&lr=

Leave a Reply