During my career, I have observed a consistent theme with software projects: they fail often. When I say fail, I mean catastrophic, gut wrenching, goat rodeos involving huge financial loss; hundreds of thousands if not millions of dollars. A complete, rag-twisting waste. Reputations are ruined and in some cases, legal action follows.
I can think of at least three instances of failed software projects that I have been involved with – post-failure – in the past year and the futility sickens me. The failed launch of healthcare.gov (I speak nothing of the policy, but the technology) only serves to drive this point further and it should make your upper lip twitch if you understand the software development process.
In all three instances over the past year, I have had to break the news to business owners that yes, the money you spent is a complete loss and the only way to recover the product you thought was done, is to start over. A bottle of Kingsford lighter fluid on that brick of cash would have the same effect. It breaks my heart to do this, but I’m only the messenger of sobriety in a project drunk on dime-store peppermint schnapps.
I know that software developers are quick to judge that a project is in need of a re-write, that it can’t be helped, when really, the project could be salvaged by someone determined enough to do so. That does happen, but not in all three of these cases. They were all so poorly written that nothing could be saved. I know because I tried and ended up chasing my tail. I played whack-a-mole more than I should have.
Each of these software endeavors failed because of two parties: the business owners and the contractors. First of all, each business owner outsourced software development with little or no oversight as to the quality of the architecture or the code. But even if they oversaw the work, they where wholly unqualified to judge its merit anyway.
This boils down to a lack of specialized knowledge, knowledge about how software development works and about how to oversee it’s creation. Handing a wish list of features to a third party and expecting to receive a complete product delivered six months later is a fantasy. It’s pure naiveté. The only difference between that expectation and visiting a unicorn exhibit at the zoo is that the unicorn exhibit is much more likely to exist.
And the other point of failure on behalf of the business owners in all three cases is the pre-teen wet dream that contracting the project out to a third party in another country will save tons of money (cheap labor FTW). Sweet in the mouth, sour in the belly. I’m sure there are cases where that promise is fulfilled, but I have yet to witness a single case. Here’s a tip about building good software: you will pay full price every time, either up-stream, or down-stream. And if you wait to pay full admission until a later date, you will suffer brand tarnishment and personal ridicule because you won’t know your product is a failure until it’s in front of your customers and they are un-forgiving (mostly).
I worked directly with each of these business owners, all very smart people, intelligent with grand ideas and heaps of ambition. It’s not as if they are incompetent greedy rubes or anything, it’s just that they got themselves into a place they had no business being.
Ill-advised, but, smart entrepreneurs, they all figured software development was just like so many other things they’ve had to do themselves while establishing their business. Software development is complex and expensive. It’s not the place skimp, redeem coupons or farm out, especially when your entire business is based on a software product.
How many smart people, if they found themselves embroiled in a complex lawsuit, would try to manage their own defense? Or, find the cheapest lawyer possible and check in with him the day before the trial? Where the law is concerned, we hire lawyers with a proven record of success and pay them ridiculous sums of money to protect our name. Why do we do this? Because legal matters are complex and require highly specialized knowledge. Software is like that.
Then we have the other party to failure: cheap contractors. Not good contractors, there are many good ones, I’m talking about the opportunistic, promise the world, but deliver a steaming pile of shit type. You’d get your steaming pile of feces, if they don’t disband before the project is done, which happened in two of the instances I’m discussing here.
The details of how the business owner gets swindled are always vague, often having references to great sales pitches with promises of quick delivery and low cost. Just fog up the lens of your mind’s eye and picture a guy wearing a dark blue suit in front of a projector screen with colorful charts and graphs waving hands and articulating verbs mixed with technical buzzwords displaying great enthusiasm. That sort of thing.
“Due diligence to the the wind. These guys know their shit and they’re cheap. Where do we sign?”