What is a tech stack?
Developers can’t manage a technology stack unless they know what’s going on, which is why an analytics platform, like Mixpanel, is such an important part of the tech stack. Each tool in your stack creates, analyzes, or ingests data, and to run most efficiently, those data sources need to link to one another.
Developers talk about tech stacks because it makes it easy to communicate lots of information about how an application is built. The term is sometimes applied to marketing services (martech stacks) or sales services (sales stacks), but it originated in the software development community. A tech stack quickly summarizes the programming languages, frameworks, and tools a developer would need to interface with the application. Because most coding languages have well-known performance attributes and limitations, the tech stack hints at the overall application’s strengths and weaknesses. If a programmer knows that a software service is built on PHP, for example, they know that it’s code base is probably large and difficult to debug. PHP is a notoriously inefficient coding language yet is used in most popular web applications. If a programmer knows that an application was built using Ruby on Rails, they know they’d have to learn the programming language Ruby to make any changes. Tech stacks are particularly useful for hiring developers. “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.
How to build your tech stack
Different companies will require different tech stacks and no two are alike. Teams decide on which technologies they want to use and then build upon a core coding language, adding additional tools and services as they go. “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 resulting bundle of services is called a ‘stack’ because each additional service builds upon those beneath it, which allows developers to customize the application. Developers designing an application that will be accessed by millions of people every day might choose programming languages that excel at what are known as high-read operations, meaning they can be accessed by many simultaneous users. If the application is meant to crawl the web and gather information, developers might opt for high-write languages. All tech stacks are divided between the back end and front end, also known as server-side and client-side. If a tech stack were a laptop computer, the back end would be the internal hardware that makes it run. The front end interface would be the screen, casing, and keyboard, which allow the user to interact with the laptop. When a job application calls for an engineer with back end, front end, and full-stack experience, it’s referring to the part of the tech stack that the applicant will ideally specialize in.
Like the foundation for a house, the order in which a stack is built matters. Each new layer builds upon the last and buried layers can’t easily be ripped out. Here is some basic advice for building technology stacks:
Plan for the future
Preparing a tech stack for the future can be a double-edged sword. If developers don’t consider how their application will scale, they might have to add additional services that make it cumbersome and difficult to manage. On the other hand, if they anticipate exponential growth and invest too much in expensive tools and services, they might run out of money before the application ever finds market success–if it ever does. The best strategy is to create minimum-viable products like web apps using open source tools to prove concepts before investing in them, and to look for tools that offer the flexibility to send data to the other tools in your stack, even if it’s not a requirement at first. When in doubt, developers should always gravitate toward more mature technologies and languages which are often more reliable.
Rely on the open source community
Developers around the world contribute to building open source tools that are free for use and available to anyone with an internet connection. The scope of the open source community and the utility it offers are staggering. “Open source software is probably what is behind the past 10-20 years of tech renaissance,” said Debs. “Anybody can stand on the shoulders of giants and build products with incredibly complicated underlying technology that they never could have built themselves. You’re talking about a pool of billions of hours of people’s time, and contributions from experts in every domain.” Debs estimates that the software he uses everyday took other people millions of hours to write. Any engineering teams considering building a tech stack will have an easier time by relying, at least in part, on open source software.
Consider the application’s purpose
Developers tend to favor languages they already know, but to build the best tech stack, it pays to step back and let the application’s purpose determine its technology. For example, will the application exist on mobile or on desktop? If on mobile, what apps? If desktop, what browsers? Is it a media site that will receive millions of daily visitors or mobile banking app that needs to be secure? Different programming languages, tools, and tech stacks lend themselves to each of these purposes. So might certain developers with relevant skills.
Developers can’t manage a technology stack unless they know what’s going on, which is why many use product analytics. Analytics platforms are designed to tie together data sources throughout the stack and provide granular user tracking. This allows developers to identify issues users experience within their application, to debug, and to fix the errors.
Teams should price out the technologies needed to support their tech stack before building it. When in doubt, teams should overestimate the total cost and remember to include the variable price of engineering talent. Developers are often attracted to innovative languages that will bolster their skills and resume, and while mature programming languages may provide reliability, they may make it harder to hire top talent. Occasionally, cheaper technologies might cost more in terms of attracting top talent.