Cover Your Ass Software Development
By Spicer Matthews
Andrew Warner of Mixergy.com says that when he interviews founders of startups the one thing they always say is the first release of their product looked like crap. Over time the product has evolved, but in general looking back the first release was not something they are proud of today. Hearing that always makes me ponder. Sure, I believe in release early and release often. Of course building a MVP (minimal viable product) and getting it out to customers is much better then continuously polishing your product hiding behind the “its not perfect” curtain. The idea of releasing something you are not 100% proud of seems odd to me.
Many products are a spin off of a consulting firm, and founding teams often have client work backgrounds. It seems product teams forget their client work process when they build their own product. When working with clients you often practice what I call CYA (cover your ass) software development. You work with your client to really flush out their ideas. This often turns into a scope document, and the clients signs off. Then you often move into wireframes flushing out any micro detail, and once again the client signs off (covering your ass). Lastly, before much development takes place you might have some design rounds with the client getting the client to fully sign off before the development really starts. With client work you are going through these phases to really ensure you are delivering just what the client wants and make sure everyone is on the same page. What also happens during this process is you flush out the entire idea from high level all the way down to the micro details. You never say “oh we will figure that part out later”. With this process you deliver just what the clients wants on budget and on time. Never would you deliver something to your client that you are not proud of.
When building your own product so many development teams just dive right in, pick a point at random and start programing. Since it is their own product many developers tend to think the CYA process is not needed, and maybe sometimes a little boring. I say this is a mistake. Not working through the different user experience issues, the data model, the design, and so on while just hitting the ground coding is a great way to have headaches later on. The CYA process front loads resolving headaches and problems that may arise in the future. Why not do that with your own product?
I am proud that any product we have ever released at Cloudmanic Labs has been well thought out. We go through the same process we would go through with clients. Not one line of code is written until we fully flush out our ideas, manage the scope, and fully design the product. The first release of our products have often been far from crap. They are polished. Also, our development time is not any longer then other hit-the-ground coding teams. Our discipline to maintain the CYA process has made it so we have never released a product we were not proud of, no matter how far from our desired final form it is.
We of course don’t think we are going to be perfect on our first release in terms of features, customer needs, and bugs. There is always going to be things we messed up, and that is why user feedback is very important. We listen to it all and evolve our products with our customers in mind. We never skip out on any of the important steps of a product development cycle just because it is convenient to ignore them or because it is boring. We never say “oh we will figure that out later”.
CYA software development has an important role in non-client work as well.