Scott Hanselman: Yeah. I’m looking at Jason Gorman’s Twitter feed and he has a wonderful re- tweet from R. Tyler Croy who says “Let's all argue about whether Haskell or Clojure is better while someone else ships a product with PHP and duct tape.”

Though that's a pretty funny (and wise) tweet, much of the rest of the podcast it comes from is pretty far from the mark. Ironic, as it's talking about how the irony that programmers are far from the [management] mark.

If AMD and Intel can agree to build processors to the same spec, why can't coders agree on CRUD? RLY? That's a valid parallel? Look, we know how to rebuild Microsoft Word, don't we? In fact, nothing rebuilds as well as code. Folks run EXACTLY the same thing everywhere the code's deployed.

Look, medical devices with software don't crash not [exclusively] because the programmers are wonderful, but because they know how to test. You don't need accredited programmers. You need accredited testing plans.

Scott Hanselman: I wonder if, you know, there's been books on software architecture that have drawn long and extended analogies with software design, with building design, and they do... I think that buildings and how you put up a building and these kinds of things, how do you put up a building without it collapsing, are pretty well understood. Is that because we've got 2,000 years of practice, and with software we've really only got maybe 50 to 100 years?

Oh, please. Construction workers can build buildings that don't fall down because little mistakes in my house don't stop it from compiling. Nobody was building my house the way they do it now 2000, 1000, even 400 years ago. That's a clown statement, bro.

Have these guys ever not built but owned a house? It's a mess of screw-ups and bugs. The hot water doesn't reach the kitchen sink quickly. One window is a different size than the rest. The commode leaks after two months. Light switches are unintuitive. Wiring is faulty and comes lose. The dryer duct is blocked. Years later, the exterior walls gain too much moisture.

The problem, of course, is what I hinted at earlier: Copying software is so easy software development teams forget it happens. Look in some cookie cutter neighborhood that has 5 plans built over and over. Now go into each of those houses and ask their owners (well, knock first if you're overly literal) how quickly the master constructors made each. Find out from the foreman what mistakes were made on each house, and how different those problems were from house to house.

And these guys were working from explicit plans. If I gave you the code to The Gimp and had you type it in all Compute! Gazette style, even if you weren't a programmer at all, it could work. Unlike construction, you need exactly zero experience to reproduce code beyond understanding how to read, type, and hit save a lot.

Every new app requires making new plans. Get it? Every new program, every new library, every new plugin is a brand new plan. And a brand new construction effort. And something that builds a new commode essentially from scratch. Programmers are architects, R&D workers, construction workers, and housing inspectors.

That's the reason every programmer feels more like an artist than a laborer. It's all new. They're not reproducing somebody else's clear plan, even when they amazingly have great mock-ups and test plans. If they had plans, anyone could hit copy & paste.

Houses require constant upkeep. So does code. Drop the metaphor. Or, better yet, get it right.

Labels: , ,