Software Engineering No More
The software development community is abuzz because of this article written by Tom DeMarco, author of that seminal work “Peopleware” that I ordered from some joker on eBay about six weeks ago but has not come yet.
You really should read the article. I say this because I assume that you are a software engineer, like me. Otherwise, let me summarize it for you.
Nah, that’ll take too long. Let me sum up.
DeMarco basically says in the article the best software development on the most valuable software products with the highest degree of utility happens in the absence of control and measurement. In other words, everything every software engineer on earth was taught about software engineering in college is wrong.
Yeah, that’s pretty much what he’s saying.
This has led to a lot of discussion around what we call all those people that we used to call software engineers just last month. The impetus is that if the best software is created by not managing or quantifying the work and the deliverables in the project, is this really engineering per se?
Well, I’ve known this for a long time. I just haven’t said anything about it. Seriously, stop laughing. I don’t expect you to believe me. In fact, I’m happy to give credit to all the other people. But it is certainly true that, although I’ve had that word in my job title for well over a decade now, I’ve felt for some time that software engineers are unique from other types of engineers. Indeed, good “software engineering” requires creativity and artistry as much as it requires engineering. “Software craftsmanship” is the term Jeff Atwood at Coding Horror is pushing today; “Software Artisan” is another term I’ve heard today as the new replacement for “Software Engineer.”
Whatever. I know what it is I do, so you can call me a Software Masseur if you feel like you must. I’ll just keep doing my job like always.
Joking aside, this article is a big deal because someone (more specifically, someone people will listen to) has finally come out and said what we’ve felt all along – trying to measure and control the creation of software is not helping, primarily because it is at least as much a creative process as it is a technical one. Convincing the Employees Formerly Known As Software Engineers around the world this is true is not going to be a hard sell.
Convincing their employers and customers, on the other hand, is going to be tough. That’s because the customers have come to expect that they will know what features will be in what products by what date, and they aren’t likely to give that up willingly. They need (or think they need) to know all of this so they can plan – when to buy their next computer, when to get trained on the new version of a product, when to rollout system updates to an enterprise, when a partner can promise the delivery of new functionality to their customers, etc.
Interestingly, some organizations are able to avoid this expectation of their customers. Open source projects are particularly good at this. Eclipse, for example, delivers a release every year but makes no promise as to what features will be included in that release; other projects, like Linux and Apache, release whenever they feel like it.
I remember writing a software product that was going to be delivered as Apache modules for Apache 2.0, way back before Apache 2.0 was officially released. We e-mailed the Apache project during development to ask when Apache 2.0 was scheduled to ship, and they said in essence, “We don’t know. And, we don’t publicize or even set release date goals. We ship it when it is ready.” Of course that made it hard to plan, but part of me secretly wished I could get paid to work on Apache.
Open source projects are not the only ones that do this, however. I defy you to figure out when any given Google app will ship, for example. And consider Blizzard Software, one of the most successful video game companies EVER (ever heard of World of Warcraft?). As I understand it, they are like Apache in this regard – their product will ship when it is ready, and not a day before, and it doesn’t matter what big holiday or trade show is coming up. And so far they’ve done alright.
And then there’s Duke Nukem Forever. Wait…