Consulting
Musings
Bio + Résumé Contact
Home >> Musings >> Process >> The Four-Sided Civil War

The Four-Sided Civil War
June 2007

There's a fascinating civil war going on in the world of software development, which chiefly consists of four factions. More amazingly, only two of these groups really have any idea that there's a battle raging, and the largest group of all doesn't even know it exists! It is this weird division that is crippling our ability as professionals to engage in a dialogue. Those with the credibility and expertise to get wound up and have a grand debate are a nearly invisible minority when compared with the vast remainder who don't know/don't care. That latter portion, is, ironically, the very cause of the problem.

The Coding Majority

In my estimation, practically everyone writing software today is part of the Coding Majority. These are people often without formal training and generally without much experience, who collectively churn out millions of lines of code per day in a desperate attempt to make the darned thing work. In itself such commitment is laudible, but in practice, working faster does not mean working smarter.

It's not too hard to spot a member of the Majority through evidence alone. Critical design decisions are made deep inside algorithims, code is cut-and-pasted and duplicated needlessly throughout, unreachable branches are produced, and testing becomes cursory. You know their work by the horrible software systems you use every day, in cellphones, on websites, and while stuck in touch-tone hell. These hardworking folks just don't have any idea how much damage they are doing, and that someone is working furiously on a solution to their problem. The wild west needed these cowboys, but the world has changed. Software is too essential to be an untamed frontier.

What is the Cost of Change?

Making changes in most projects in the world is cheap and easy at the beginning and expensive or catastrophic at the end (consider the Vasa). If your office tower grand opening is next week, now is not the time to suggest the lobby ceiling isn't tall enough. But with software, change just doesn't feel as expensive. It takes hours to repaint a car but switching your website's background color takes a second. Doesn't this make software different?

Those who believe the cost of change rises dramatically the deeper you get into the project form the next biggest faction: the Big Design Up Front Coalition. There's a range of just how many details you need to work out before you start writing code, but basically this group is unified in their belief that you have to know what you're going to do before you do it.

Alternately, a more rebelous gang of software folks have developed a radically distinct philosophy. These are the proponents of the Agile Manifesto, who claim that the cost of change is constant, that the software is the specification, that the customer must be in the room, and that people are more important than process. They also like to stand up for meetings to keep them short.

These two groups of people can't stand each other.

The Popular Tools Stink

The final cadre is the publicity darling of our community; those who passionately decry the overall cruddiness of common software development tools. Joel explains that it's manual memory management which kills our productivity (though you'd better not just learn Java and Joel is in the Big Design Camp, even though he teases the "nattering scorekeepers". Go Joel.) Paul says the right language was invented 40 years ago, and it made him rich, so there. Mr. Why and his cartoon foxes we need to use wildly different, poignant languages like Ruby. The Hungarian believes he has a whole new paradigm. This group acknowledges that people are having a debate about how you should write software, but shake their heads. "You're trying to hammer nails with a wet noodle!", they deride. If only we would listen.

Choose Sides or Straddle Fences

You can cast your lot with any of these groups, except for the Coding Majority. Typeity-typing lines of code all day makes you into a frustrating expense for the budget manager, who doesn't really know what you do and will outsource your job just as soon as the next issue of Forbes arrives. So choose sides, and take up arms! One day, we'll know how to write software, and you can help figure it out.

Blog: Turning Left Against Traffic
Current Project Upcoming Travel
None Planned
Email List
signup@right.here
Low Volume, Spam Free