Just as I was blowing my nose for the nth time, after having picked up yet another cold, I had a revelation: the common cold is the same as the unavoidable pains associated with Software Engineering. Let me explain.
Fred Brooks wrote The Mythical Man Month over 35 years ago where he spoke about the problems associated with large scale software development. A decade later, he wrote an essay (which later became a chapter in the book) about how there’s No Silver Bullet that will cure an essential subset of that pain because of software’s inherent complexity. The book is awesome and per Brooks himself, “everybody quotes it, some people read it, and a few people go by it.”
So it has been almost four decades since his book came out, let alone contributions from several others, and we have nothing real to show for it.
The cold has obviously been around since the beginning of time yet, there is no real cure. Man has surely had enough time and discomfort to figure out a cure but the fact is that when you feel that first itch in your nose or your throat, you know what you’re in for. And while no one has claimed that there’s no cure possible, at least there’s reasonable justification for lack of progress. There are also those who claim cures, surely I should try them out before making any snide remarks. Even flu vaccines are touch and go, the viruses are just too smart for their size.
Compare that with software: the pain has been around since the beginning and there’s no avoiding it. It has become an acceptable part of the industry and has only been increasing with our ambitions. At least Fred had the guts to claim there’s no cure so we’d stop hoping for one and get back to work.
No shortage of remedies
This is my pet peeve. Go to the cold aisle in any pharmacy and you will find a huge selection of “over the counter” remedies for your flu symptoms. Search on Google, there’s no shortage of home remedies either. Fact is that none of it works. You can pop your favorite pills, the cold will inevitably take the same amount of time to go. You have to put in the time, go through the pain. Best part is this huge industry is magically still in business selling everything but a cure. Expect nothing from that expectorant, that cough suppressant will only suppress your enthusiasm. If this stuff really works though, I’m the unfortunate exception.
Compare that with software: the lists of programming languages, software libraries, IDEs, design paradigms, development techniques, project management methods, etc. etc. are also limitless. All of them (cl)aim to make the development process easier, faster, fool proof, scalable, etc. All of them have their believers and ardent followers. Fact is that none of it really avoids the pain. You have to put in the time, the hours, the sweat. Per Fred, we are the biggest bug, and there’s no p(f)un in that.
If you have a cold, no one is going to sympathize with you. No one is going to shed a tear. They will laugh that you are complaining about such a trivial thing. Millions get the cold every day, what’s the big deal! Think of those with real diseases, suffering and dying every day. What’s so bad about your life? What do you have to complain about?
Compare that with software: it is your job to design it perfectly, churn out immaculate code, squash all bugs, wow your customers – no matter what it takes. Quit complaining, you get to sit in a chair in an air conditioned room all day and get paid well. Try mowing 8 lawns a day in 40°C weather. Or perhaps police the road in 40°F weather. Folks have real problems, stop glorifying your petty issues of Foo() and Bar().
No real interest
Considering no one (who doesn’t currently have the cold) cares per the previous point, would you want this to be your life’s work? Haah, he cured the cold while people still have real suffering due to real diseases. Big contribution indeed. But there’s a truckload of drugs on the market to alleviate the symptoms. The perfect cash cow – don’t cure it, just let people get sick and pay for an illusion of relief. Too bad for those academics and researchers slogging away in their labs while others get rich selling 3 hours of (apparent) relief at a time.
Compare that with software: would you invest years of your life trying to make life easier for your colleagues or creating the next Facebook or Google? Where’s the money and fame? Fred Brooks took the time to write a book and it became a life contribution. But per his own words, nothing has really changed. Even the avoidable problems are still around. Perhaps those who make software that can not afford to fail – like a life support system or the next rocket to Mars – might care. The PHP junkie next door doesn’t care. Most people don’t care and they probably don’t even need to.
No account of real impact
Quoting Wikipedia’s Common Cold entry, “An estimated 22 to 189 million school days are missed annually due to a cold. As a result, parents missed 126 million workdays to stay home to care for their children. When added to the 150 million workdays missed by employees suffering from a cold, the total economic impact of cold-related work loss exceeds $20 billion per year. This accounts for 40% of time lost from work.“. No joke, at least the economic impact of the cold is being investigated.
Compare that with software, unlimited time and money, and physical and mental well-being is being lost due to issues in Software Engineering. Bugs can cause major disasters or put someone out of business. The more benign ones can cause millions of hours of lost time waiting, rebooting, working around and complaining.
No one dies of the pain
Or do they? I don’t know how many people lose their lives to a cold, but considering how ubiquitous it is, I do wonder. For the most part though, no one is hosting fundraisers to cure the cold. The world tends to be this way. Texting and driving is effectively the same as drunk driving, yet getting caught doing the latter leaves a lifelong record.
Same story with software. There are instances where people have lost their lives due to faulty software, but for the most part, the cost of faulty software is not paid in lives. And I’m sure, even if it was, we would still be debating Vim vs Emacs. I’m for Vim by the way…