70% of our customers are startups. We developed products for Finance, Marketing, Entertainment, and Travel markets. The truth we learned in the process is that nothing goes perfectly no matter how much time you spend preparing. Especially, it applies to the choosing a tech stack for a project. So, we want to reflect on this topic from the business point of view.
What is the tech stack?
First of all, let’s dive into general terms to understand the topic in full. The technology stack is a set of programming languages, frameworks, and libraries composed to build a web or mobile application. It enables to create a system where different application functions work on the same infrastructure. Tech stack of any software consists of client and server sides. But there are projects that require only the client side.
The client-side or front-end is the visual part of the application that client can see and interact with via web and mobile browser. The server-side or back-end is responsible for software functionality and is not visible for users. Also, backend empowers the communication between server and database.
The technology stack of both sides can be build by using plain programming language, framework, CMS or combination of all.
- Plain language is a set of instructions for a computer to perform certain actions. Large projects that have high demands for flexibility, performance, and security are written in pure languages.
- A framework is a development environment, with ready-made solutions and tools, which speeds up the development process. A framework is like a semi-finished product, from which you can create a complete project. Every language has many different frameworks. There are both common ones that can be used for developing of any solution, and specialized ones for narrow tasks. Frameworks are used to develop large and complex projects with unique functionality. It is much faster and cheaper than develop in plain language.
- CMS is a ready-made solution, a constructor, which enables you to assemble a project from different parts on your own. CMS is suitable for building small projects. It allows creating a simple customized product in short terms. This is a ready-made software that only requires some configuration. There are many solutions in all languages, but all popular CMS is made in PHP.
Each of the solutions is the basis for building other ones. Frameworks are made on plain languages, while CMS is made on frameworks.
What types of projects are there?
In this article, we want to discuss tech stacks for startup, since choosing technology for a fresh project is always a tough job. To choose the proper technology we have to understand at what stage of the lifecycle startup is.
There are three stages of startup lifecycle:
Problem and solution fit
At this stage, a startup is trying to find the problem and solve it. Once the solution is found, it’s time to build an MVP to validate the idea. Usually, projects on this initial stage maintain modest structure and can be build using off-the-shelf solution, like CMS software. CMS is much cheaper than building product using programming.
The main purpose of this phase is idea validation and collecting feedback from the users. There is no reason to spend a lot of money on the project because the project will change during its lifecycle. Product Hunt, for example, grew out from the e-mail newsletter, which was some kind of MVP.
It’s important to remember that MVP, not necessarily has to be coded. This is only a solution to help you test the initial idea at the lowest costs.
Product and market fit
At this stage, your task is to check whether you are in the right market with a product that can fulfil customers’ needs. It is time when tech-stack starts to shape. Based on information received from MVP, you can identify features, which can satisfy the target audience. Try not to over-engineer the solution, implement only crucial features. Start small and scale only as needed. Take lessons from the Instagram, who launched a mobile app only on IOS, because the target audience was using Apple products. Dubsmash went even further and didn’t release mobile applications to the stores until reached tens of thousands of users.
During this period, founders should concentrate more on monitoring and analyzing customer behaviour. Instead of filling the project with unnecessary functions, invest money in tools that will show customer journey, tracks statistics and traffic. This information gives insights about customers and enables quick iteration.
When a startup rises to scale level, it starts serving multiple customers segments with relevant price-points. At this stage, the project is an extensive structure with a variety of functions and integrations.
Frequently, scalable projects have several modules developed in different languages. Often each module has separate tech-stack that satisfying its functionality the best. At least, there are three types of tech-stacks—core product tech-stack, support tech stack, and sales/marketing tech-stack.
Design marketplace 99designs is an example of an infrastructure consisting of separate modules that pursue varied purposes and written in different languages. For example, core services are written in Go, while Ruby on Rails handles the payment module.
How exactly am I supposed to choose?
On the Internet, various influential resources advice choosing technologies based on development costs, scalability of the project and time to market. Naturally, those criteria are important. But if you start a project from scratch with no relevant experience in the sphere, such things will only distract you from the idea itself.
We tried to evaluate the process of building a product based on the development and business side. So, that is what we got:
Relay on your background
When building a product from scratch, choose familiar technologies and tools. In case, you are not a technical founder, find one and build a product relying on his/her background. Further, as the product evolves you can migrate the project to the more suitable stack. For example, Tobi Lütke started Shopify in Ruby on Rails, because he knew it. Later on, the stack was changed, but Tobi built the base he dreamed.
The cornerstone of startup success is getting a product to market as quickly as possible. While looking for suitable technology, comparing prices, searching for proper developers, only delay the launch. In essence, the stack should evolve as the product goes through its growth stages.
Focus on iterations and feedbacks
It’s important to remember that a startup won’t be the same during all stages of the lifecycle. Especially, in the initial stages, when we develop an MVP, for example, we validate an idea and work on improving or replacing some functions. Important, to choose the tech stack enabling to make those changes on the fly and work with few instances simultaneously.
For example, OpenDoor (online service for selling and buying homes) use tools like Docker and Kubernetes for deployment and scaling. Which allows the system to automatically grab the required features, train and evaluate the model. Such automation lets OpenDoor iterate really fast.
Decide between speed and quality
Time of the project development depends on technologies used. For example, developing in Ruby on Rails will be quicker than in Java. If development time is shorter, hence development costs are lower. But often, cheaper development languages, are more expensive to support.
If we talk about MVP, time to the market is important. Frequently you can sacrifice the quality in order to start a quick and start collecting feedback. An online marketplace lender LendingHome has grown from Ruby on Rails and jQuery, which are known for quick development time. Short time to market allowed LendingHome to be competitive in the tense lending environment.
On the whole
If we could give you only one advice concerning choosing tech stack for your startup, it would be to select tech stack that is quick to start and don’t require big investments. Those are two crucial factors for startup development. Choose stack based on your tech background and remember that a startup is not a goal, it is rather a way. So, keep in mind that the project and its tools will change as the idea evolves.