How to choose a development stack?

The moment has come and you are all set to start your new mobile application or website product/project journey. The idea has been bought in and now all it needs is those few crucial months of design and development to roll out your dream mobile application or website. But wait, aren’t we missing something? Something which is very crucial and important, something that may make or break…

The world of urbanization has once again thrown tons of options to choose from and this time it is about which technology or rather which technology stack should you select to build your next dream mobile application or website. We at BiCSoM can help you find the answer to this question with some tried strategies and approaches on deciding how to choose the best technology stack.

Let’s get cracking on what is a stack?

A stack refers to a combination of programming languages, databases, infrastructure, technology tools and applications required to build a digital technology product like a mobile application or a website. At a high level, a stack in reference to this post is about the application stack which in turn has 2 major components:

  1. Backend technology stack and
  2. Frontend technology stack

In this post we will try to demystify how we can select programming languages, tools and software applications, and cloud infrastructure you should use to build your mobile application or a website.

Backend Stack:

Backend stack essentially means things that are not visible to the end users. It essentially involves:

  1. Cloud service provider – Web server, Operating system, Storage system offered as a service by AWS, MS-Azure, GCP, Lenode etc
  2. Databases – MySQL, MongoDB etc
  3. Backend frameworks and programming languages

One of the most critical elements over here is deciding on the database and the choice of backend programming language. Some of the popular backend programming languages include:

  1. Node.JS
  2. Php
  3. Python
  4. Java
  5. .Net
  6. Go Lang
  7. RUST

Front-end stack

Front-end stack essentially involves interfaces that users can see, touch, hear or speak and interact with. In the current times the frontend can comprise of:

  1. Web based frameworks and tools for website development
  2. Native or cross platform frameworks for mobile application development
  3. Cloud based functions for creating voice based applications
  4. IoT based frameworks for IoT application development

Some of the popular languages and frameworks in frontend development are:

  1. Native mobile application development – C++, SWIFT, Objective C for iOS; 
  2. C++, Java, Kotlin for Android development
  3. Web development – HTML5, Vue.JS, Angular, React.JS, for front end logic in web
  4. Web styling – CSS, LASS, SASS, Bootstrap, Tailwind, Chakra CSS
  5. Cross platform Mobile app development – Flutter based on Dart, React Native, Ionic, PhoneGap
  6. Some framework with CMS options like WordPress, Drupal, Ghost for building content heavy or Websites and Progressive Web Applications

Now with the clarity of available choices let us get into understanding what strategy or pointers you should use while freezing or selecting a particular development stack.

Strategies to use while deciding for a development stack

KISS – Keep it simple smarty

This is the golden rule of getting started, if it is for the very first time you are taking your digital product journey it’s best to keep it as simple as possible. 90% of the digital products do not even survive their first 90 days of launch, chances of failure in building and taking the product live is pretty high, therefore it’s best to keep it simple with adequate number of functionalities and screens or pages so that you can bear the cost of keeping the product live. For this situation assuming you are building a mobile app its best to stick to cross platform frameworks and use the one with a good library support, watch for simpler solutions in the similar product vertical. Do not compare your product’s stack with the technology used by giants, while the solutions of the giants feel simple, there are teams in hundred’s working on different tech stacks to achieve that awesome experience of simplicity.

Pace matters:

Based on the size of the project and time available, decide which option you should go for. If you want to develop an eCommerce site but do not have fancy budgets or logistics setup and are crunched on time, best is to go with ready-made solutions like Shopify or Woocommerce. If you are slightly big and matured in terms of investment and are ready to invest decent money and have a few quarters of time, customisation with Magento, Open-Cart, Prestashop, Nop-Commerce can be good options.

Stick to the proven model:

In order to do something out of the box and fancy, do not land up in doing everything that is latest in the development stack offering. If you are looking for a site which needs SEO it’s good to stick to vanilla Javascript with a CSS frame-work or the big daddy of websites in the world WordPress which is built for SEO. Current JS frameworks like Angular, React, Vue do not offer SEO out of the box, it involves server side rendering with additional efforts. This does take time and effort. LAMP stack refers to Linux, Apache, MySQL and Php and has been there for a good time and supports mid-size applications pretty well. Unless you have an extreme niche and specific requirement it’s better to stick to the proven technology stacks.

Do not reinvent the wheel 

The world is moving towards being a trust of open community. Thanks to the open-source initiatives, great tech teams and developers all over the world are working towards solving technical problems on their favorite stack. Let’s assume you are developing a SWIFT based native iPhone application and have multiple table views and each table view has items in cells, which you can delete. SWIFT does give you default option in tableview which you can invoke and delete the cell, but how about if you need to add custom colors, more then one action available on a single swipe, in such a situation an open source library like SwipeCellKit comes extremely handy, instead of doing everything from scratch you could use this library in your SWIFT app and make an awesome swipe experience. One thing to note, please do read and understand the type of license the open source framework or tool has applicable on it’s usage before incorporating it in your development work.

Other key things to consider 

We build products for our end users, therefore some more points which you should consider while deciding on your final choice of the technology stack should be:

Identifying and knowing your target users 

One of the key deciding factors in choosing the technology stack is knowing your target users. Let’s say if you are building a product which is a Lead management platform for startups into digital services, your ideal choice would be to first develop the application for the web with a responsive approach. Let us assume the size of your digital services startup is about 40 people, in this team, at the max there would be 1 or 2 sales champions who would be reporting directly to the Founder of the Startup. A lot of their time would be spent on hunting leads and creating proposals, therefore a good portion of their time daily would be spent on their laptop, in such a case a responsive site with responsive UI could be a good option to go for.

Quantum of data that would be processed 

Assuming you are building an extremely data intensive application, in such a scenario you need to use high performance oriented infrastructure set-up on cloud along with fast and high performance backend language and framework, in such a case Java could be an ideal choice. While many initially had criticized Java to be slow, most of the high performance data intensive applications of the world are built using Java. Go Scala and Rust also could be other good choices.

Scalability and maintainability of the stack 

Whatever technology stack we choose, one thing we need to certainly keep in mind is, as the product continues to live and grow, the development stack selected should scale and the team should be in a position to maintain the development stack selected. It costs a lot to acquire a new user, we should not let our development stack choice refrain us from scaling and growing.

Security 

As the computing power is growing and tech is getting commoditized, security is of primary importance today. This is the key parameter while deciding the choice of our development stack. If the selected development stack does not offer minimum industry standard security features, it is best to avoid such development stacks. Do check this link on Source code analysis tools by OWASP.org

The community

“Alone, we can do so little; together, we can do so much” – Helen Keller. 

This holds very true in our world of tech. While deciding on your choice of development stack do check out online groups, forums, Reddit discussion threads, Stackoverflow rankings and discussions for various technologies. Stronger the community and groups it’s much better to go for those stacks. Do consider this while deciding or trying to select a Javascript framework for your frontend web-development. Also look for development stacks which have LTS or the long term support, while a particular development stack selected would be great but if it is deprecated or not active there is no point using that development stack to build your product.

The M power 

In the end it definitely does boil down to the cost factor. Your  funds do decide the ultimate choice of the development stack you need to go for. If you have compromised budgets and want to build a chat application, best is to use Firebase compared to building a clone of one of the famous messaging applications using Erlang.

There could be more and multiple ways you can decide what development stack to go for, but the above thoughts will give you a strategy while selecting your development stack. Are you planning to build your next dream product and are confused on which development stack to go for? Please give us a big shout for a free consultation, we would love to catch up over Namma Bengaluru Filter Coffee and discuss the technology stack that best suits your development needs.

Prashant Gupta  – Founder, Chief Maverick, BiCSoM