How to choose development stack?

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

The world of urbanisation has once again thrown tons of variety to choose from, but this time it is about which technology or rather which stack should we select to build our next dream project/product. At BiCSoM can help you find the answer to this question with some tried strategies and approaches on deciding which technology should you go for.

Technology to choose -image

Let’s get cracking on what is a stack?

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

  1. Backend stack and
  2. Frontend stack

In this post we will try to demystify how we can select programming languages, tools and software application, cloud infrastructure we should use to build our application. 

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, Mongo DB 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

Front-end stack

Front-end stack essentially involves interfaces that user can see, touch, hear and speak to 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; C++, Java, Kotlin for Android development
  2. Web development – HTML5, Vue.JS, Angular, React.JS for front end logic in web
  3. Web styling – CSS, LASS, SASS, Bootstrap
  4. Cross platform Mobile app development – Flutter – Dart, React Native, Ionic, PhoneGap

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

Strategies to use while deciding for a development stack:

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 make it simple with adequate number of functionalities and screens so that you can bear the cost of keeping the product live. For this situation assuming you are building a mobile app it’s best stick to cross platform frameworks and use the one with 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 Woo-Commerce. If you are slightly big and are ready to invest decent money and have few months 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. Current JS frameworks like Angular, React, Vue do not offer SEO out of the box, it involves server side rendering with additional effort. 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 a very niche and specific requirement its better to stick to the proven models.

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 favourite 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 colours, 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 before incorporating it in your development work.

Other key things to consider – We build products for our end users, therefore some more points which we should consider while deciding on our final choice for the development stack should be:

Identifying and knowing our target users – One of the key deciding factors in choosing the development stack is knowing your target users. Let’s say if you are building a product which is Lead management platform for startups into digital services, your ideal choice would be to first develop the application for web with a responsive approach. Let us assume the size of our digital services startup is about 40 people, in this team size 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 criticised Java to be slow but most of the high performant data intensive applications of the world are built using Java. Go and Scala also could be another good choices.

Scalability and maintainability of the stack – Whatever development 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 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 hold 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 looItk 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. Our funds do decide the ultimate choice of the development stack we need to go for. If we 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, we would love to catch up over Namma Bengaluru Filter Coffee and discuss the development stack that best suits your development needs.

Prashant Gupta – Founder, Chief Maverick, BiCSoM