When someone asks you to build a better mousetrap, and you find yourself trapped inside it, building a worse mousetrap is not necessarily the solution.
Software Engineers often consider themselves as having Autistic or Aspergers behaviours and tendencies. To some degree, this may merely be self-aggrandising — Autistic people, while having crippling socially debilitating qualities, can also have savant-like super powers. Maybe we’re just anally retentive, and perhaps the effects are completely unrelated to Autism or Aspergers, but the behaviours do seem to correlate: Software guys are highly... er... organised.
This has led to some problems which are rather unique in the software industry, but I believe the recent back-lash against those problems will lead to even bigger problems. Two notable cases come to mind:
Tom DeMarco famously wrote:
You can’t control what you can’t measure
What’s important isn’t the statement itself but the vehemence with which it’s written. He’s since had a change of heart. Read the article and you’ll find a man coming to a realisation about himself and his peers: If you tell a bunch of software guys you can organise something, all software guys will listen. And they’ll listen hard.
Raymond: These are not boxer shorts. Mine are boxer shorts. These are Hanes 32.
Charlie: Underwear is underwear, Ray.
Raymond: My boxer shorts have my name and it says Raymond.
Charlie: All right, when we pass the store, we’ll pick you up a pair of boxer shorts.
Raymond: I get my boxer shorts at K-Mart in Cincinnati.
Charlie: We’re not going back to Cincinnati, Ray, so don’t even start with that.
- Rain Man
Tell a bunch of software engineers that they should define their processes, and they’ll define them so precisely, that everyone will wonder how they get any work done. Software engineers dot every “i”, cross every “t”. They ensure the dot is within acceptable limits, has the right shape and won’t run before they move on to the "t"s. They ensure every “t” looks exactly the same, the line is straight enough, the line is the right length. They measure and they control. Meanwhile there’s software to write. What you find is an Oppenheimer-esque Tom DeMarco rocking slowly back and forth, naked in the shower, attempting to repent for his past sins.
He’s not alone, there’s hordes of “Agile” and “lean” software processes now, attempting to destroy these boxes which we’ve all created and found ourselves trapped inside. In doing so, we’ve found the dogmatic are naive, and the pragmatic insane. There’s a downward pressure, indeed a downward spiral, in software development in a backlash to the strictures of yesteryear. While technically, they all continue to dot the "i"s and cross the "t"s, they also fail to grasp what they are truly saying between the lines: ignore measurements altogether, and skimp on quality and innovation in the process.
The second problem involves ivory towers. We build them. Give us a room to clean and we’ll spend months with a fine tooth comb and disinfectant. Every corner will be spotless, every detail checked and cleaned, spots covered. Give us enough time and we’ll build a self cleaning room. Many projects never ship, but are delayed over and over by ever escalating generality, dotting "i"s, crossing "t"s. There’s a backlash against this also.
Joel jumps to the other end of the extreme claiming that programmers who work with “duct tape and WD40” are the way to go, never realising that when you look around, nothing we see is held together with duct tape, and degreaser often needs new grease to go with it. You can fix anything with duct tape and WD-40, but you can’t use it to build new things. I see the sentiment: “Ship anything” is a better response once you’re used to “ship it when it's done”, but they’re both fatally flawed.
And so it’ll be that people will walk away from unit tests and code reviews, from higher levels of abstraction and generality, from processes and guidelines, to finding themselves in a worse position than when they started. I just hope this doesn’t come to pass, and that sanity will prevail.