Wednesday, March 11, 2009

Are We Asking Too Much From Programmers?

In the olden days software teams were split into two distinct groups: architects and programmers. Architects designed the system and programmers implemented the design.

Then Extreme Programming came along and said splitting teams up wasn't a good idea. Everyone should be in the same room. Collective code ownership said that anyone should be able to work on any piece of code. Now architects had to code and programmers had to design.

Architects advanced to architect from programmer, so they'd coded before. The transition to writing code, while humbling, was not a huge task.

Programmers were programmers because they were not architects. They had not designed before. This transition is more troubling.

I'll cop out a little and lean back on the age old construction metaphor. See, construction workers aren't architects. Most of them don't even strive to be architects. They build things with their tools and their hands and enjoy it, why would they want to build things with paper and pencil?

In agile development we are asking programmers to design. Maybe they don't want to design. Maybe, for some reason, they can't design. It's not part of their mental makeup. They construct. They are good and constructing. Why are you asking me to do more than construct?

I've read and signed the Craftsmanship Manifesto, and joined their Google group, There is a thread in the group titled something like "Should we/can we convince programmers to care about their craft?" This thread got me thinking and that thinking lead to this blog.

So, are we, the Agilists and craftsmen, asking too much from programmers?


andrewsw said...

Okay, that's interesting. To carry the analogy further (coming from a family of architects and some-time builders), it's great to be an architect, but the best architects have spent time building. It clearly shows when you have architects who have not built at all and are designing beautiful, but impractical, nearly unbuildable, structures.

Does a parallel happen in the software world?

Curtis Cooley said...

I definitely see parallels in the real world. I still recall with utmost clarity my struggle to design before I'd written much code, but I was fortunate to be exposed to good designers while I was learning to construct in Java.

I still have my notebook that I drew all that UML in before I even knew what to draw. I like to take it out and flip through it once in a while to remind me of how much I didn't know. Reminds me of how much I still don't know,