« Everything's Melting! | Main | Medical Diagnosis and Software Diagnosis »

January 22, 2007

Programming: Art and Engineering

We had a disagreement on my team the other day, which basically came down to the following issue: Is it more important to teach programmers architecture/design skills, or more mundane skills like accessible and secure code?

I'm firmly in the camp of the latter. There is a whole bunch of these kinds of goodness, which are often lumped under the rubric of "quality", and sometimes referred to as the "ilities" (as in localizability, securability, manageability, updateabilty, etc). Most of them aren't particularly glorious; they involve running down checklists, adding annotation to your code, doing reviews, making sure Is are dotted and Ts are crossed. But they are the root of the problems Microsoft is facing in the industry.

By contract, the architectural stuff (which is sometimes called "functional" design) is seen as "cool". The book Design Patterns is evidently the best-selling programming book ever. Sure it's nice to refactor your code into a nice clean Bridge pattern. That's the glory moment in software. But my view is that Microsoft hasn't been sued for millions of dollars because our classes weren't cohesive, or had to issue a QFE because our components were too tightly coupled, or had a remote exploit because we violated the open/closed principle of object-oriented design.

It's related to this ongoing question of whether programming is more art or science, more of a craft or an engineering discipline. I feel that if programming is ever to become a real engineering discipline, then we need to realize that a lot of what people should learn is the mundance nuts and bolts of the "ilities". Yes, it may be hard to keep 'em down on the farm once they've seen the glory of commonality/variability analysis, but we'll have to try.

Posted by AdamBa at January 22, 2007 11:23 PM

Trackback Pings

TrackBack URL for this entry:


Found this URL.


Would tend to agree. Art/architecture/design are more important...everything else is just a tool to facilitate them.

Posted by: No, art is better at January 23, 2007 02:09 PM

Harumph. If that represents what architects think and do, then count me as a tradesman and proud of it.

YES, maybe we will reach a day when those people can flit about the stratosphere thinking deep thoughts...but in the meantime, we need to get a house built that doesn't collapse.

- adam

Posted by: Adam Barr at January 24, 2007 12:53 AM

Um, what do you think architects do? I'd say they design houses so they don't collapse. Now that's not to say you can't architect for security or scaleability or performance...but that's very different than some toolkit or best practice approach to some lines of secure code. Microsoft may suffer from some insecure code (and has lots of that in their past), but one of their biggest issues is that even they have inconsistent architecture and customers implementing enterprise systems need ARCHITECTS that help the tradesmen avoid the pitfalls.

Fact is that orgs need both. Glad you're the second, and probably fits better with a role in a group that espouses "engineering excellence". In all my years at Microsoft I haven't seen anything resembling architecture come from EEG. And that's OK, that's not what they're there for. All nuts, bolts and hammers...good for what they're good for. You want to really design a building, cost it, PM it, and step back and see what it will look like before a single hammer swing...you take an architect's view (none of that is done at the code or memory pointer level). And I think you know that. Why do you think that true architects at Microsoft are so highly valued.

Posted by: Architects rock at January 24, 2007 02:22 AM

I have been sour on architects ever since I read that Frank Lloyd Wright dissed some client who complained that his roof leaked with something like, "It's a roof; it leaks." And ever since I read that the Kauffman family eventually moved out of Fallingwater, having renamed it "Rising Mildew" And then there was the lab building on the Penn campus that I just missed having to work in. It was situated at one of the prettiest spots on the campus. The Friday before Louis Kahn was supposed to deliver the final plans, he decided to redraft them to put all the windows about eye level because, "Scientists should aim their eyes to the heavens." I guess they were put back to the original since the windows are not above eye level.

My problem with architects (at least the stars) is that they see it as all about them.

That said, I firmly believe that if MS is ever to escape the trap of increasing complexity accompanying decreasing maintainability, there will have to be an architectural breakthrough. But I think that is the domain of MS research, not EEG.

Posted by: Marble Chair at January 25, 2007 06:01 AM