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.
This especially applies to choosing a tech stack for a project.
So, we want to reflect on this topic from a business point of view.
What is the tech stack?
First, let’s dive into general terms to fully understand the topic. The technology stack is a set of programming languages, frameworks, and libraries composed to build a web or mobile application. It enables the creation of a system where different application functions work on the same infrastructure. The Tech stack of any software consists of client and server sides. But some projects 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 browsers.
The server-side or back-end is responsible for software functionality and is not visible to users. Also, the backend empowers communication between the server and the database.
Both sides’ technology stack can be built using plain programming language, framework, CMS, or a combination.
- Plain language is a set of instructions for a computer to perform certain actions. Large projects with high flexibility, performance, and security demands 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. Both common ones can be used for developing 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 developing in plain language.
- CMS is a ready-made solution, a constructor, enabling you to assemble a project from different parts independently. CMS is suitable for building small projects. It allows the creation of a simple customized product in short terms. This is ready-made software that only requires some configuration. Many solutions exist 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 startups since choosing technology for a fresh project is always tough. To choose the proper technology, we must understand at what stage of the lifecycle startup.
There are three stages of the 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 in this initial stage maintain a modest structure and can be built using off-the-shelf solutions, like CMS software. CMS is much cheaper than building products using programming.
The main purpose of this phase is idea validation and collecting user feedback. There is no reason to spend much money on the project because it will change during its lifecycle. For example, Product Hunt grew from the e-mail newsletter, which was some 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 fulfill customers’ needs. It is time for when the tech stack starts to shape. You can identify features that satisfy the target audience based on information received from MVP. Try not to over-engineer the solution; implement only crucial features. Start small and scale only as needed. Take lessons from Instagram, which 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 they reached tens of thousands of users.
During this period, founders should concentrate more on monitoring and analyzing customer behavior. Instead of filling the project with unnecessary functions, invest money in tools that will show customer journeys and track statistics and traffic. This information gives insights about customers and enables quick iteration.
When a startup rises to scale, it starts serving multiple customer segments with relevant price points. The project is an extensive structure with various functions and integrations.
Frequently, scalable projects have several modules developed in different languages. Often each module has a separate tech stack that satisfies 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 are 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 advise choosing technologies based on development costs, project scalability, and time to market. Naturally, those criteria are important. But if you start a project from scratch without relevant experience, such things will only distract you from the idea.
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. If you are not a technical founder, find one and build a product based on his/her background. Further, as the product evolves, you can migrate the project to a more suitable stack. For example, because he knew it, Tobi Lütke started Shopify in Ruby on Rails. Later, the stack was changed, but Tobi built the base he dreamed of.
The cornerstone of startup success is getting a product to market quickly. While looking for suitable technology, comparing prices, and 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 feedback
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, we validate an idea and work on improving or replacing some functions. Important to choose the tech stack enabling you to make those changes on the fly and work with a few instances simultaneously.
For example, OpenDoor (an online service for selling and buying homes) uses tools like Docker and Kubernetes for deployment and scaling. Which allows the system to automatically grab the required features and train and evaluate the model. Such automation lets OpenDoor iterate fast.
Decide between speed and quality
The time of the project development depends on the technologies used. For example, developing Ruby on Rails will be quicker than developing 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 to start quickly and start collecting feedback. An online marketplace lender LendingHome has grown from Ruby on Rails and jQuery, 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 piece of advice concerning choosing a tech stack for your startup, it would be to select a tech stack that is quick to start and doesn’t require big investments. Those are two crucial factors for startup development. Choose a stack based on your tech background, and remember that a startup is not a goal, it is rather a way. So, remember that the project and its tools will change as the idea evolves.