How to choose the right tech stack?

Introduction

The term ‘technology stack’ or ‘tech stack’ is being used very often nowadays. This is seen as a very technical term meant for ‘geeks’. We believe that entrepreneurs need to pay close attention to this component of their product development journey along with the rest of their work.

A lot of work and literature is available both online and offline about the Technology Stack. This blog borrows heavily from 2 sources that we selected from a much bigger list. The 2 sources are Mixpanel and HubStaff . We found the articles to be extremely useful and informative and have therefore used the information to shape this blog.

The entrepreneur needs to have at least an overview of the tech stack his product uses in order to help attract and interview technical talent, look for new and better ways of assembling his product and team and possibly even while discussing the product and its utilities with investors and technology mentors.

To quote from mixpanel.com : “Unless applicants are familiar with a tech stack’s frameworks and languages, or are willing to become familiar, they might not be a good fit,” said John Debs, a full-stack software engineer at messaging platform Lua. Companies trying to recruit developers often include their tech stack in job descriptions making the activity of understanding a tech stack a matter of great importance for the entrepreneur and his hiring team.

When building a home, one does not immediately start with the facade and flooring options. While these are important parts of the process, what is more important are the foundation, the girders that help ‘scale’ and build the home, the materials that will be used such as cement and bricks, and how this framework will work together to create a home. This foundation and the girders are the ‘tech stack’ for construction.

A tech stack serves as the foundation and metal framework around which the technology product is built. It’s strength and robustness is what will define whether a product is able to scale or not. It will also define how well the different parts of the product come together to achieve the end goals of both the entrepreneur as well as the final user of the product.

The tech stack’s components include the frameworks, languages and software products that everything else used to exist. Think of Facebook, for instance : The social media networking site is composed of a combination of coding frameworks and languages including JavaScript, HTML, CSS, PHP, and ReactJS. This is Facebook’s ‘tech stack’ upon which the internet giant has built its business.

How to build a tech stack

The basic components of a tech stack

In the last few blogs, the entrepreneur has spent his time looking at how best the users can be benefited by the product. As always : It starts with the user. 

The next step to the process is for the team to look at what ‘front end’ software can be used to allow the most frictionless method of providing the user with the information or service that she wants during her interaction with the product.

“When you have a product in mind, you usually start with the front end, the piece that faces the customer, and then decide what back end tooling is needed to support that,” said Lira Skenderi, a data analyst and engineer at hosting provider Digital Ocean.

The Front End

To use an analogy, If a tech stack were a laptop computer, the front end interface would consist of the screen, casing, and keyboard, which allow the user to interact with the laptop. The ‘front end’ is what the user sees and interacts with.

Front end component operations are broadly divided into two distinct types:

  1. High Read operations : Programming languages that support high read operations excel at allowing many simultaneous (sometimes in the millions) users. Setting up a high-read operation on a stack right at the beginning is very important 
  2. High Write operations : These are meant for products that trawl data and gather information.

While looking at the above, it is easy to appreciate how important having a clearly defined tech stack is. It not only sets the foundation for the sort of operations that a product is capable of, but also defines how successful the product will be – even before the first snippets of code are written.

The Back End

To apply the same analogy as a laptop; if a tech stack were a laptop computer, the back end interface would consist of the software that allows the different parts of the front end to perform efficiently. The back end is not seen immediately, but plays a huge role in making the front end (and the overall experience) smoother and more user friendly.

Back end technologies for a tech stack usually include web frameworks, programming languages, servers, and operating systems. A popular web development tech stack is known by the acronym LAMP. This is the short form for Linux operating system, Apache HTTP server, MySQL relational database management system, and the programming language PHP. Whereas front end technologies are the visual interface, such as websites and apps, these are the visual elements that most applications are known for, and offer users the tools they need to get things done.

As can be clearly seen and understood from the sections above, the importance of having an efficient and scalable technology stach that serves as the foundation of the entire product is a key factor in deciding whether the product works well, creates value for the user and most importantly, provides a well oiled and efficient system for the user where ‘everything just works’. Also, like the foundation and girders for a home, a tech stack, once created, will be difficult to pull out and re-engineer without significant cost and damage.

It therefore becomes very important to get this right the first time. So, how do we create a technology stack that is truly efficient and stands the test of time and usage? Read on!

How to build a great tech stack

 

Consider the applications purpose

Stephen Covey, in his blockbuster book “The 7 Habits of Highly Effective People” wrote on one of the key precepts of any successful venture: Begin with the end in mind.

At this step, it makes a lot os sense to reconvene around a whte board and understand what this product is all about and what is the end purpose for which it is being developed. The library of various survey findings, use cases and mockups and wireframes all come together to help the team understand the application’s true purpose : It’s ‘Why’. 

Based on this, the technologists that look at how the product will be accessed, where the application will exist, what applications, technologies and tools would lead into the product and away from it, it’s level of data security, usage patterns (High-read/write) and last but not the least – the programming languages tools and technology stacks that lend themselves most favorably to this need.

Plan for the future

Planning of the future can be a bit of a ‘chicken and egg’ situation. Should the engineering team plan the tech stack so that it scales to meet the exponential growth that the product is hoped to achieve at great cost and time – possibly even at risk to running out of cash and resources to even take the product ‘live’; or should they simply build incrementally only to find that the limitations imposed by ‘thinking small scale’ comes in the way of scale and size as the product begins to be used by the full size and scale as originally envisaged?

Dealing with the conundrum:

Create a Minimum Viable Product : In our previous blog, how to build an MVP, we had advised that the best strategy to use while building out and defining the tech stack would be to build out an MVP like a web app using open source tools to prove concepts and validate assumptions and hypothesis before really investing very deeply into their procurement and usage.

Work with tools that ‘play well’ with each other :  If different tools in the tech stack allow interoperability, the job becomes easier because the tools work well with each other. Each tool acts as a force multiplier and the efficiency of the overall ecosystem improves dramatically. Look for tools and technologies that speak to each other and send data to and receive data from each other.

Gravitate towards more mature languages, technologies and tools : These components have stood the test of time and have adequate proof of working and documented use cases. These can be leveraged to ensure a more stable framework than emerging technologies and untested languages that may break down after a certain period of time.

Rely on the Open Source Community

Open source technologies and tools are a great resource for entrepreneurs and their technology teams to use while creating their technology stacks.

The reason open source tools are so popular and so ubiquitous is because they are freely available to all. This free availability allows for a plethora of new and different uses of existing technologies that have been contributed by other developers over billions of man hours and hundreds of possible use cases. Given that the underlying technology has been used frequently and widely, the technology team literally stands ‘on the shoulder of giants’ when they begin developing the technology stack. 

Consider product maintenance

Teams would do well to overestimate the cost of managing the product and the technology stack. This will ensure better ‘cash runway’ management because the entrepreneur will now have a better idea about the quantum of financing that he needs by keeping in mind a safe buffer for any eventuality.

The team also needs to take a trade off between technology newness, ease of attracting talent and the long term maintainability of the product. Developers often lie to work on the newest language in order to burnish their reputation and CVs and therefore, hiring top talent in these new fields may be easy. However, older technologies, while being cheaper owing to their tenure in the system, may not attract the ‘rocket scientists’ that some product development teams need.

Conclusion : Preparing the Tech Stack for success

Though the tech stack sounds ‘geeky’ and ‘meant for the techies’, the entrepreneur and his team needs to have an above average knowledge on the importance and components of their products tech stack. All parties involved in the product’s development have a part to play in its success. 

We would urge entrepreneurs to engage in conversations with people on tech stocks and learn more about this simple basic block. Engage with blogs and literature as well. These pieces of content will go a long way in enriching the world-view of the entrepreneur and his team

From all of us at Siam Computing : GOOD LUCK as you begin your journey into the exciting world of technology stacks!