Every software technology has strengths, weaknesses, history, and culture. Being the CTO and Project Manager at Atyantik I can tell you that choosing the initial technology is an important decision where you have to take into account several factors

What is Technology Stack?

Before we move on you must clearly understand the term technology stack and the process involved in building a web application. There are two sides of a web development the client side and the server side. Client-side is also called as front-end and the server side is called as back-end.

Front-end Programming

This involves everything related to what user sees on their screens. Here are the major components in front-end programming.

  • HTML and CSS. It tells the web browser how to display the content on the screen and CSS styles the content. To implement HTML and CSS you can use Bootstrap. It is one of the best framework out there with detail comprehensive documentation.
  • Javascript is also a very important part of the Front-end as it helps make the web pages more interactive. There are many javascript libraries and frameworks to consider for faster and easier web development.

    • Libraries

      • Jquery
      • React.js
      • Zepto.js
    • Frameworks

      • Angular
      • Vue
      • Backbone
      • Ember

Backend Programming

This side is not visible to end user but still, it plays a very crucial role in providing all the data needed to front end. It like the power plant that is generating power and supplying to your house. As for server-side programming languages, they are used to create the logic of websites and applications. Frameworks for programming languages offer lots of tools for simpler and faster coding.

  • Java (Spring)
  • PHP (Laravel)
  • Ruby(Ruby on Rails)
  • Python (Django)

You need to store all the data for running your web apps. That’s where database come to play. There are various choices like traditional SQL or no SQL database like NEO 4j depending upon your needs. Besides, there are caching servers which can be used at a later stage for handling and managing heavy traffic. Two popular caching servers are Memcache and  Redis. And at last, you will need a server to host your application. You can go for Apache or Nginx. All this form the part of back-end or server side.

Thus in order to build a web app, you need to have a set of front en,d and back-end technologies. You can use an existing library or framework to speed up the process. Collectively all these technologies and frameworks are called as Technology stack. Now that you understood what technology stack means let’s see how you can select one for your organization.

Things to avoid while choosing a technology stack.

A wise man once said, “ A foolish keeps on repeating his mistakes, A common man learns from his mistakes but a wise man learns from others mistakes too.” Before we begin here are few mistakes and pitfalls that you should avoid.

1. Don’t be a tech-stirrer

Tech-stirrer is a term used by developers who are always chasing the latest new fashion and keep trying to add new technologies to the stack and rewriting existing code without a real need. Every technology has its own pros and cons. You should not switch to new technology until and unless it’s extremely necessary for your business or it’s addressing some very key issues related to performance and security.

2. Avoid copying what your rivalries are using

Not necessarily avoid it to the fullest but be cautious about it and don’t just blindly copy the ones that they are using. Its always good to learn from others experience but keep in mind that they might be in the business for many years and after many years they have adapted to this form. You are just starting now so copying the technology that they are using might not be that useful.

For eg, the company might be using Hadoop and big data to analyse all the data that they are generating to get better insights. However, if you are just starting you might not be dealing with such huge data and so there is no need to implement Hadoop in your technology stack at this moment.

3. Don’t get biased with what you already know.

Moving fast when working on a new startup is important. If the founding team is already experienced in a specific stack, its an advantage to choose it and work within their comfort zone rather then re-learn a new technology. However, there are few consequences of it as well. Whatever you have done was done in the past and technologies keep on updating every day. You need to consider your requirements for the project and then select the technologies accordingly.

4. Don’t choose based on online research.

Today Internet is full of online research data and surveys. Which may or may not be accurate.  Choosing a technology stack is all about the experience. You cannot select one based on reading few articles on the internet. Either you should have enough technical experience with all the technologies or you should consult a technical expert who has years of experience in it. Atyantik can help you to select one based on your exact requirements and needs.

If you are trying to select a tech stack based only on your online research is like you are trying to learn swimming by reading online articles and books. I am not saying that the research won’t help it definitely helps but the important thing is you should have an experience of that technologies or have a person on board who has experience with those technologies.

How to select technology stack

1. Consider the problem you are trying to solve

Sometimes space your product is in dictates the stack. Some technology stacks are specifically strong in certain areas (due to technical limitations, or just strong community) making them the go-to environments in those areas.

For example, if you are trying to solve a problem that deals with IOT and embedded systems that you can choose to go with C/C++ or embedded C

If you are trying to solve a problem that will include heavy computing then you should go with PYTHON with libraries like Pandas or NumPy.

2. Define the type of Web Application

There are various other factors that you should consider to define your app type. This criterion will include

Web or Mobile

What type of Web Application are you focusing on? Are you planning to go for Mobile only both web and mobile? Both have their specific advantages. If you are planning to go with mobile-only you might have to choose a different stack. If you are planning to go with the PWA (Progressive Web Application) you can select react-pwa. One of the top 10 react boilerplates out in the market.

Complexity

Simple. These web applications are created with the help of out-of-the-box solutions (such as CMS software, for example). Examples: landing pages and simple online stores.

Mid-level. These apps have more functions than simple apps and are built with the help of frameworks. Examples: apps for large e-commerce stores and enterprises.

Complex. These web apps have lots of functions and integrations; they’re developed with the help of different web development technologies and may be composed of several programming languages. Examples: social networks, large e-commerce marketplaces, Fintech software, etc.

Business Goals

Knowing the complexity isn’t enough. You should also consider business goals. This is important since your business goals impact the choice of technologies for development.

If your web project relies on load processing, you should opt for programming languages and frameworks that can provide this. A different tech stack is required to make your web application highly responsive and to reduce latency. Social networks are probably the best example of websites that require low latency.

3. Time to Deliver

Here is the list of issues that you should consider while choosing the technology stack.

Resource Availability

In the end, it’s the developers who are finally going to build the application. You should check whether you’ll be able to find developers with expertise in the technology stack you choose. And remember that building a web application is just the beginning. You also need developers to maintain it after launch.

Documentation

Documentation plays an important part in selecting any technology. For eg consider bootstrap for HTML. It has a comprehensive documentation with good examples. This helps the devs to understand the technology better and if they get stuck they can always refer to the documentation for further help. If it is not properly documented then it gets difficult for the developer to work on it.

Test environment setup

A web application contains many lines of code, so bugs are inevitable. Needless to say, removing all bugs requires a lot of time and slows down development. To counter this problem, choose technologies that are easy to test. Some technologies are based on a so-called test-driven development approach, which implies that testing goes first and coding comes after. Test-driven development allows you to guarantee your code and product quality and speed up development in the medium and long-term.

Integration with third party

Make sure the tech stack you choose supports integration with third-party solutions, as it’ll help you add the functions you need to your web application without reinventing the wheel.However, one thing to consider is that the more plug and play features you use the higher would be your licensing cost. So you must be clever to maintain the balance between making it in-house vs using a third-party service.

Plug and play features

Check whether a technology has some out-of-the-box solutions for adding some necessary functionality to your web application. For eg, you can use skeletons for various common functions like login module etc in Laravel. Thus decreasing your time to market.

4. Community Support

During the Apocalypse, you want to know you have somewhere to go — somewhere to ask question and\or get help. When choosing a product you should look for if:

  • Any big names behind it as sponsors\users?
  • How active is the community?
  • Is there a Slack channel\mailing list\public JIRA? are questions being answered on StackOverflow?
  • Is it open source — when was the last commit made? is the code actively developed and maintained?

5. Security

You should never neglect security. Depending on the kind of data you work with, security could even be the most important factor. Determine why you need to secure something before deciding how to secure it. But remember, technology isn’t everything — keep in mind that security depends primarily on the skill set of your developers, the work environment and the policies you implement.

6. Scalability

Scalability isn’t a feature to turn tail on when developing a web application. No doubt you wish to see your web project grow and gain popularity. In general, there are two kinds of scalability:

Horizontal scalability

Which means the ability of a web application to accommodate more requests. In other words, an app must be able to work if the number of users grows dramatically.

Vertical scalability

Which means the ability to add new components to a web application without damaging its performance.

7. Development Cost

Developer cost

Developers are highly skilled professionals who are well-paid based on their skills. Their salaries, however, depend on the technologies they work with. Consequently, your expenses will be different depending on tech stack you choose. The more advanced technologies generally have few developers and they are costly.

Maintenance Cost

Another cost associated with the application is Maintenance cost. The cost of hosting the application on servers, Licensing etc. We have few of our clients who pay monthly thousands of dollars for licensing. These are the licenses for the third party services that they use to maintain the application like for eg Cloudflare.

Examples of technology stack behind successful companies

Conclusion

If you are a small startup, getting to market is more important than having the perfect tech. Focus on your business and marketing rather than having all the technology pre-optimization necessary to handle the amount of data Amazon has. You probably won’t have all the required knowledge at an early stage, but you can fine-tune and optimize things or change tech stacks as you grow (and have the requisite budget).

As an enterprise, things can be different. The decision will mostly be political anyway — people in your company need to be okay with your decision. The management (and hopefully the in-house / prospective developers) are probably the most important stakeholders to have on board.
If you are planning to develop a product from scratch go with the solutions that can give you a startup booster.

In my opinion, if you are using the product from scratch you can go with WordPress or Unbounce. Maybe a static page with a product demo video is more than enough to get your first few clients. In my opinion, it’s okay if the MVP product is using a different technology then the original product itself.

Get a basic page running, then your first feature, then your second and so on. The advantages of doing things this way are that you can evaluate progress in real-time and make necessary adjustments as needed. It also minimizes your risk because your system is already running. You may not yet have all the features you had imagined, but it’s running!