What the non-technical founder must know about software development
There are myriad ways to implement even the smallest software development task. Each available approach has its pros and cons — and its cost, which can vary from almost nothing to a fortune.
Software developers and tech companies usually strive to build the highest-quality solution they can. But it’s important to note that the ‘highest quality’ may not be high enough; it may be exactly what’s needed; or it may be a complete waste of time and money. It all depends on the level of engineering expertise and the stage of growth the startup has reached.
Thus, to be lean, fast and efficient, it’s crucial for a startup to change its development focus at each stage of its evolution. And as a founder — even if you’re not technical — you need to understand how to control them on every stage.
Seed: search for market fit
This is the very beginning, when the new organization is searching for its marketplace. The ultimate goal at this stage is to try new business models as fast as possible, without paying too much attention to quality.
During this period, the requirements can be dramatically changed many times. It’s highly probable that most of the code will eventually be thrown away. The influence of bugs is low, as there are few to no clients, usually friends and family.
It’s useless to invest much money in quality at this phase. In fact, paying for good quality is dangerous, as it slows down the velocity of market research and burns money.
- Search for the fastest way to try your ideas. “Quick and dirty” is the best motto for this stage.
- Research available tools and services. Try to use them to pilot your idea.
- Be warned when you hear talk of solution quality, performance, scalability, and other forms of rocket science, take some notes as not functional requirements for the future and forget about them for now.
- Watch yourself, as you’ll always believe that your current idea will definitely succeed and tend to invest in good quality too early.
- After finding your clients and moving to the next stage, be ready to hear from newcomers how fragile your code is. They will often mutter about how great it would have been to use one architecture approach or another from the very beginning. It’s better to start in that way than to burn out all the money and create a perfect product that nobody needs.
Tree: gain the niche
Now the startup has found its market and started acquiring more and more clients.
At this stage the changes in the existing requirements become less dramatic. New features are usually added. However, the influence of bugs grows as more and more clients arrive.
The platform users must see that the solution is stable and is constantly evolving. Hence the platform quality comes to the fore.
Priority: Quality of the development process.
- Start investing more in the platform quality.
- Ensure the following must-haves for the development processes:
- A steady flow of frequent releases.
- Automated deployments.
- The mandatory code review stage.
- Mature functional and regression testing.
- Prepare the solution to the main architecture changes during the next phase.
Forest: scale globally
The startup has a successful business model. Now it’s time to scale it.
At this stage, the existing requirements are rarely changed. New features still appear, but non-functional requirements like throughput, responsiveness, and availability become the most important.
The influence of bugs is extremely high, and the robustness of the platform is crucial.
Priority: Architecture quality.
- It’s time for the biggest investments in the platform quality.
- Reimplement some modules to improve architecture if necessary.
- Ensure the following must-haves for the development process:
- Mature non-functional testing.
- Vertical teams - teams can implement and release new features independently.
- Horizontal scaling - the solution is split into small independent blocks and each one can be scaled by adding more instances.
- Canary deployments - new features can be tested on a small fraction of users.
Know your stage and make sure that each and every teammate understands the current priority. Make a habit of generating a list of options differentiated by time, cost, and quality before making any decisions. Choose the best option according to your stage:
- Cut corners and make changes extremely fast when searching for market fit.
- Improve the development process and provide a stable flow of new features when growing.
- Upgrade the platform architecture and boost the platform quality to scale globally.
PS: The startup evolution is not always so straightforward. Moving from one stage to another requires time and efforts. A successful MVP on the Seed stage may not work for a broader audience on the Tree phase. Or an efficient solution on the Tree phase may not scale on the new market. All those cases lead back to the Seed, and the development priority must be changed accordingly.
Comments powered by Talkyard.