Talking with Cara Sposa today about programmers she's hired in the past and how her role as architect and their role as craftsman comes into conflict over the big picture. She finds she often has to spend a large amount of time breaking down big-picture problems into solvable sections, since that's how they tend to be wired: to solve small, reconcilable issues.

It occurred to me after a while of verbally mulling this over that the flaw is actually in the work-model. Creating large-scale computing applications successfully is harder and more expensive to do as a cathedral-style endeavour, one in which the architect comes up with a blueprint that everyone subscribes to and fills in their area of expertise, just as a mason is handed his block from the master mason who is allotted his cupola from the council member, who is privy to the master architect's ultimate plan.

Evidence for this non-cathedral model is that the master architect has to keep interceding in the work of the mason, which would never work in a cathedral. Steve Jobs stalked the hallways of Apple, interfering in everything. Linus Thorvalds accepted or rejected patches personally.

Instead, system architecture is more like a religion. It has axioms/articles of faith, a tradition of ritual, and time-honoured reasons for doing arbitrary things. Once the programmer "gets" the religion, it's much more facile to create the superstructure by coding from accepted principles, i.e. standards and patterns. Every successful large-scale computing endeavour is more a culture than a project, and programmers in such a venture tend to treat their project managers like elders of the tribe rather than as foremen.

So, that old saw about the mythical man-month is not only with us, but it hasn't been applied deeply or thoroughly enough. Because the engineering universities are still putting out masons, not acolytes, I still see no real advantage (in the tech sector I work in) to hiring someone with a CS degree over anybody else with persistence and intelligence.