One of the most challenging periods for any startup is passing through the “Valley of Death”. During this delicate phase, the organization’s burn rate is high and it has to rapidly achieve the following three goals:
- Move from a proof of concept (POC) to a functional commercial product
- Reach a cash flow break even
- Transition form seed\angel funding to venture capital funding
For startups focusing on the development of SaaS products, this phase also marks an important millstone in the maturity of their product. With increased volume of production users comes stricter SLA’s and the need to implement more advanced operational ability in areas such as: change control, build automation, configuration management, monitoring and data security.
If you are managing the technology organization in an early stage startup, you have every reason to be concerned. To the outsider, the success and failure of startups often seems to be shrouded in mystery–part luck part black magic. But ask a seasoned professional who has successfully gone through the startup meat grinder and he will tell you that success has nothing to do with luck, spells, or incantations.
Having worked with a number of startups, I have come to conclude that the most common reasons for product failure (beyond just not being able to build a viable POC) is the inability to control your product’s stability and scalability.
In the words of Ecclesiastes, there is a time and purpose for everything under heaven. In the early stages of a startup’s life cycle, process is negotiable. Too much process may hinder the speed in which you can build a functional POC. In later stages, reliable process and procedures (e.g. requirements, QA, unit testing, documentation, build automation, etc., ) are critical. They are the very foundations of any commercial grade product. Poor quality and performance are self evident and no matter how much marketing spin and management coercion you use, if you are trying to secure an early stage VC funding round, your problems will rapidly surface during the due diligence process.
To avoid the startup blues, keep your eyes on the following areas. Factoring them into your deployment will help you deliver on time and on budget, with the proper scalability and highest quality possible.
Before converting your POC to a functional product, take the time to design your core components (i.e. CRM, CMS, DB access, security, API, etc.). Create a high level design that identifies all major subsystems. Once you know what they are, zoom into each subsystem and provide a low level design for each these as well.
- Resist the temptation to code core functionality before you have a solid and approved scalable architecture (and the documentation for it).
- Let your team review and freely comment about the proposed platform architecture and deployment topology. Just because a vocal team member has religious technology preferences doesn’t mean that everyone should convert.
- No matter how good your technical staff is, when it comes to building complex core functionality (transaction engine, web services API, etc,) don’t give any single individual carte blanche to work in isolation without presenting their design to the entire team.
- Document the product as you develop it. Building a complex piece of software without accurate documentation is akin to trying to operate a commercial jet without its flight manual.
- To help spread the information and knowledge, establish a company-wide document depository (like a Wiki or SharePoint ) and store all your development and design documents under version control. Discourage anyone from keeping independent runaway documents of the system.
- Maintain an official (and versioned) folder for the platform documentation showing product structure and components, development roadmaps, and technical marketing materials.
Testing and QA
If you are not writing unit tests you have no way to verify your product’s quality. Relying on QA to find your bugs means that by the time you do (if ever!) it will be too late and expensive to fix them. Spend a little extra time and write unit tests for every line of code you deploy in production. When refactoring old code, update the original unit test as well.
Just like most things in life, bugs have a lifecycle, they are born, they live and die. Effectively tracking them as part of your build and QA process is a prerequisite for their timely resolution.
If you are discovering a high critical bug count in your “code complete release” (half a percent of source code e.g. 500 bugs for a 100,000 line code base), you may not be production ready. Stop further deployment and conduct a thorough root cause analysis to understand why you have so many issues.
If your bug opening/closure rate remains steady (i.e. QA is opening bugs at the same rate development is closing them) and you have reoccurring bug bounces, you may need to reassess the competency of your development resources. This would also be a good time to have a serious heart to heart conversation with the developers responsible for the bugs. Be prepared for some tough HR decisions.
Monitoring and Verification
Just like you wouldn’t drive a car without a functional dashboard, you can’t run quality commercial software without real time visibility into its moving parts. Implement a monitoring dashboard to track items such as daily builds (and breaks), servers performance, users transactions, DB table space, etc.
Seeing is believing. Products like Splunk can help you aggregate your operational data. Once you have this information, show it to your entire team. I personally like to pump it onto a large screen monitor in the development areas so everyone can get a glimpse.
Security, Scalability and Operations
Unless you are in the snake oil sales business, build your production environment from the get-go for scalability, security, and redundancy. Don’t look for “bargains” on these technologies, leverage commercial-grade load balancers, firewalls, and backup solutions.
Your production environment is critical to your success, so don’t treat it as a second class citizen or try to manage it with part time resources. As you will quickly discover, a dedicated sys admin and a DBA who know your platform intimately are worth their weight in gold.
You must achieve operational capabilities in build automation, release management, bug tracking, and configuration management before going live. If you don’t, be prepared to spend most of your productive time fixing boo-boos in the wee hours of the night.
Implementing many of the above mentioned measures will give you a significant tactical advantage as well as a strategic boost when negotiating with potential VCs. Having these capabilities on your utility belt will also help you calmly face any future issues as your startup matures.
© Copyright 2011 Yaacov Apelbaum All Rights Reserved.