Here’s the product development / release lifecycle in a quickly assembled OmniGraphSketcher chart:
Developers start working on a prototype, while the initial effort of creating something new is intense work as the idea becomes somewhat obvious there’s more busy work than challenge. Maybe you mocked up a prototype for a service to keep track of companies and products? While the initial work was a lot of late-nights, a few weeks into the product you find yourself tending to simple forms and just implementing relatively straightforward features of the product.
Clarity and a Drive to Done
Then you hit #3, a moment of clarity, when the business takes your initial idea and identifies something that will truly differentiate the offering. Usually this differentiator is going to involve a lot of difficult implementation effort. The project started out at an intense level at #1 and between #3 and #4 the work effort returns to this same level of late night hacking.
At the end of this phase, the development team gets together, they declare victory and all go out for beer. “The project’s finished!”, and the developers declare it “done”.
Getting “Beat Up” by the Business
The reality of almost every project I’ve been involved with is that, this is usually when reality sets in. The business receives a functional system from the developers, but there are more complicating tweaks to requirements. Because developers rarely do a good job modeling reality in an object model or API, there is almost always one or two “Big-Ass Requirements” (BARS) that have been overlooked. “Wait, you implemented an accounting system, but there’s no way to track different currencies? …. No, that feature can’t wait, it must be ready for launch.”
If everything is working as it should be, the business drives a high level of effort between #4 and #5. While the developers were initially celebrating the project as “finished”, a few weeks of making sure the systems actually delivers value to the business has everyone exhausted. This is the sort of phase that most new developers haven’t experienced. It isn’t enough to just deliver the software, you have to go through the often arduous process of making sure that the business can use it. This is the phase characterized by meetings between development and business that are tense, but not necessarily contentious.
Achieving Perfection (or “don’t think the CEO won’t cancel this project, tomorrow”)
Once the Boss thinks the product is done (“Boss” done #5), better products would be released to real customers for feedback. If a company is really committed to perfection, say a company like Apple, they won’t release a product until it has gone through an additional stage – perfecting the product for customers. And it’ll take as long as it takes. Very few developers ever get to experience this phase because most companies in the software field just don’t value perfection. There are only a handful of companies like Apple that can even afford this.
This last phase is very often about a brand manager, an art director, or (in the case of Apple) an uncompromising CEO. If you thought getting to the “‘Boss’ done” phase was difficult, getting the the customer-ready phase is downright grueling. There is usually no set date for release, projects can be dramatically altered (or even canceled) if they don’t meet the expectations of an uncompromising executive, and people are asked to do impossible things overnight. This stage isn’t fun and people will quit.
Startups and Perfection
If a company can afford this final stage it often makes the difference between a so-so product that will succeed in a market and a product that will redefine markets and change the industry. There are only a handful of companies that have the integrity and patience to pull this off.
The whole point of venture capital investment in technology startups is to give companies enough runway to commit to creating something that will alter the market. Right? I mean, companies don’t get a couple of million dollars to recreate the mundane? Or do they?
Startups: Don’t Release “Developer Done” Crapware
All too often I see startups just releasing some “Developer Done” stage crap and then trying to write some blog entries to gin up some traffic for the next Board Meeting or trip to Sand Hill Road. “Hey, look at us, we got $5 million in Series A, and we’re releasing this crappy infrastructure-management solution with absolutely no path toward revenue. Please ignore the fact that 50% of the product is static images covered up by images of cutesy animals. We’re like Twitter, we’ll figure out the business model later.”
If this is your startup, quit now while you are ahead, stop playing with other people’s money, and go work for someone else.