Choosing The Right Tech Stack For Your Product
Starting to build a new product and seeing your idea take share can be an exhilarating feeling. But founders, specially those without a tech background, have a hard time deciding which technology stack should they use for their product. The information overload on the internet can sometimes only add to the confusion. If you are in such a position, this article will help you reduce the variables in your decision making and help you conclude faster.
What Is A Tech Stack
Let’s start from the basics. A tech (technology) stack is a set of technologies, programming languages and software products that is used to create a functional web (or mobile) application.
A typical web application is divided into two parts:
- Backend (concerning server side)
- Frontend (concerning the user/client side)
One of the most popular backend stacks, until the recent times was LAMP which is an abbreviation for Linux, Apache, MySQL and PHP. These are the backend technologies used – PHP as the scripting language, MySQL as the database, Apache as the web server and Linux being the server operating system.
Python – Django framework is another very popular backend stack used by entrepreneurs to quickly hack together a working prototype.
Frontend Tech Stack
Frontend is the part of the application a user interacts with. It could be a website, web app or a mobile app. When building for the web, the frontend consists of three technologies:
- HTML – the markup language
- CSS – the style sheet
When building applications on mobile, using the native languages is the first preference due to more control and easier hardware access. Java for Android and Objective-C/Swift for iOS. Although, there are plenty of cross platform frameworks available, none have caught the developers attention like React Native.
Factors Influencing Choice Of Tech Stack
There are lot of factors that could influence a company’s choice of tech stack. Objectively, to help with decision making, we believe the following factors are the most important.
Stage of your business
Depending on which stage your business or product is, you technology stack may or may not play a very important factor. For example, if you’re just starting out, your goal would be to get to the market in the shortest time possible with a working prototype. In such a case any language/framework/CMS tool that lets you put together a working prototype and has the shortest learning curve should be your goto. Ruby on Rails is considered fast for development due to a vast number of ‘gems’ available. Working prototypes can also be build on WordPress 🙂 If your business is within the Finance or Banking domain, you might want to go with languages like Java or .Net (C#) due to compliance and regulatory issues.
Availability of talent
Availability of developers who are going to build your product is one of the most influential factors defining your company’s tech stack. Your developer friend might be gushing about the awesomeness that is Go, but you might have a hard time finding solid Go developers easily. One of the best ways to gauge a programming language’s popularity and available developers is to regularly visit sites like Github and Stackoverflow. The number of questions and answers around a particular language could give you a fair idea about the community around that language. Number of contributors for a particular framework/library on github is also a helpful indication to the popularity of the language.
If you’re concerned about the scalability of your product, known that unless you have very specific & extreme requirements, almost all languages would be able to handle your traffic. More often than not, applications don’t scale well because of poor architecture and product design rather that the choice of programming language.
In our humble opinion, a bias towards decision is way more important that fretting about the right tech stack early on. Choose whatever tech stack you and your dev team feel most confident with. If, however, you have any specific concerns don’t hesitate to drop us a line here.