As a founder-CEO, most of my time today is spent dealing with management tasks: hiring, fundraising, setting priorities etc. However, before I “moved to the dark side” and got an MBA, I was neck deep into technology and engineering (and loving it). This article uses the programming metaphor to glean out some startup best practices.
Entrepreneurs will know that most startups are not successful most of the time. Our hiring isn’t quite right, our funds are often running out, we don’t know if we have achieved a good product-market fit, or if the pricing we decided is optimal! On an average day, an entrepreneur has his/her hands full with more than one such challenge. In a sense a startup’s job is to deal with failure… and systematically eliminate it so we can scale up a roughly error-free business model.
Making a complex program is in many ways like building a successful startup, and “debugging” is the equivalent to changes and corrections that startups make to achieve success. The metaphor can be used to highlight 3 principles that I think entrepreneurs can learn from and apply to their business model evolution process:
# 1: “Comment your startup”: Good coders write programs that are commented well. Commenting is the documentation of a program- it describes what every block of code does, and how it achieves its outcomes. Similarly, one should document a startup in as much detail as possible. Documentation is important because it allows you to scale effectively.
Every good piece of documentation is an artifact that removes a dependency on you- the most scarce resource in your business. Like code commenting, documentation allows others to look at your business and understand its moving pieces easily, thereby making them effective contributors quickly. In our startup, we use tools like dropbox and Google Docs extensively for shared access, and document all business processes as much as possible.
# 2: Focus on performance, not only functionality: Making a program work is generally the easy part. What’s challenging is to do so with minimum resources (e.g. memory, CPU cycles). Similarly, good startups not only achieve business results, but achieve them efficiently, with minimum resources (capital, people, office space). Don’t just ship that product; ship it efficiently!
Even if you have VC funding, it’s important to remember that resources determine the bottomline of your business- if you build a large, bloated organization with low levels of productivity, sooner or later your system is going to crash due to a resource crunch!
# 3 Hunt for errors systematically: When you deal with failure, you have to tweak different factors and levers- the way you hire, the amount of money you spend, what business priorities you set, how you manage work… and any of these, if not done right, can lead to failure.
In contrast with these multitude of critical success factors, “failure” is often visible in only one dimension: all you notice at the high level is that sales are not happening, or that suddenly all your key people start to leave.
To handle such challenges, it’s critical to measure, and to do systematic root cause analysis on your successes and failures. Like in programming, it’s a good idea to execute smaller and manageable pieces first, and then build complexity incrementally on top of that.
What other lessons do you think startups can learn from software engineering /programming space?
[About the author: Amit Sharma is the Founder/CEO of Genesis Online Commerce, which runs specialized lifestyle eCommerce destinations driven by proprietary private labels. He has 10+ years of experience in technology and general management, and an MBA from the University of California, Los Angeles.]