Technology Stack Dilemma Explained for Non-Technical Business Owners
There is a popular belief that a technology stack can either make it or break it when it comes to building your software product. That before even a single line of code gets written, you need to carefully select a tech stack that is bound to determine your product’s success.
With a wide selection of tech stacks in the development world today, choosing one that works the best for your project might seem like a daunting task. But it doesn’t have to. There are only a few aspects worth factoring in when you are caught in a technology stack dilemma.
What іs a Technology Stack?
To refresh your memory, a quick overview of what is a technology stack.
The technology stack is a combination of programming languages, frameworks, and tools that developers use to build a web or mobile app. The two main components of any app are client-side (front-end) and server-side (back-end). Each layer of the application is built atop the one below, thus creating a stack.
Client-side is everything users see on their screens and where the interaction is happening. The three main technologies in front-end are:
- HTML (the markup language)
- CSS (the stylesheet)
Server-side is not visible to a user. But its programming languages power the user side and create the logic of websites and applications. Frameworks for programming languages are time savers. They provide vetted implementations of common features (data access, user authentication etc.).
The only challenge is in choosing server side technologies. But is it that tough of a decision? Let’s dive deeper.
How to Choose a Technology Stack for Web Development
Choosing a technology stack that will work the best for your project might seem like a real challenge, especially if you are a non-technical founder. The easiest way out would be to rely on your personal preferences or previous experience. But personal preferences are subjective and can lead to wrong decisions. You can only count on it if you have a strong background in web development. Trusting your competitor’s experience or going online to find a myriad of opinions and arguments isn’t a smart choice either. In reality, there are a couple of aspects to be taken into account.
Type of the Project
Sometimes the type of a product you are building determines the stack. Depending on the scope of your project, it makes sense to settle for a certain technology.
If you are launching a startup or want to build quick MVP, Ruby is your match. However, lately, Node.JS have come into play and seems like it might take over sooner than we thought. Both can get you in development by 30% quicker than anyone else. Rapid development is achieved thanks to expressive and concise nature of the language and its flexible syntax, as well as dozens of open-source libraries.
With libraries like Pandas, SciPy and NumPy, Python works perfectly for projects connected with Big Data, Machine Learning. It is a universal language when you need to calculate huge volumes of data. Python is capable of doing it quickly and sufficiently. You can use Python for any kinds of projects, but academic and scientific programming are preferred ones.
Java is a general-use programming language that is a universal solution for on-going, big projects. It can do virtually anything with a decent amount of efficiency. Java offers a myriad of tools, libraries, making it easy for developers to design and implement any feature they want. It is also a choice of 90% Fortune 500 companies.
But when it comes to choosing a tech stack based on the project type, it is mostly a matter of how big it is. If the project is big, you need more competent human resources and a community to have your back.
Deciding upon a niche or new technology can make a recruiting process a nightmare. Before making a final decision, you need to consider if you can find another developer familiar with this technology stack. If the skills are easily transferable and there will be no problem training a junior developer in the desired technology.
Some of the reports suggest that the demand for enterprise mobile apps is about to outstrip the available development capacity by 500%. In this respect, Java seems like a sensible choice for it is widely popular and given a multi-million community of engineers, it shouldn’t be a problem to find a professional. However, it is also one of the most in demand programming language in 2017.
Another widespread choice – Python, being popular in academic and scientific circles, it created a large, well-educated talent pool.
What shouldn’t be taken into account when looking for resources is cost. It is a popular misconception that when choosing between technology stacks, the cost of a developer is detrimental. In reality, you have as many chances finding an expensive Ruby developer as you can find a cheap one.
Technology Stack Ecosystem
The ecosystem is a community and tools around a technology. When choosing a technology stack that suits your project, it’s important to check out if there is big enough community around the technology, sufficient information. Whether if you stumble upon a problem or an issue, you will be able to find enough information and a solution. For instance, pretty much every big city around the world has a Ruby community that runs regular meetups. It is also one of the most popular languages on Github, a social coding site. Sometimes even a closed ecosystem like .Net has a massive knowledge-base via MSDN, StackOverflow and numerous forums and blogs.
Another important factor is the maturity of the technology. The earlier in its lifecycle, the less reliable the technology is. After several years of iterations, Ruby is considered a reliable and low-risk technology. But it’s not only about the lifespan. Mature technologies also have more tools to make developer’s life easier (like continuous integrations, bug tracking). But they only exist for tech stack where there is a market of developers. A large amount of these tools suggests how safe a technology is. The logic behind the importance of maturity is pretty simple. The more mature a language is, the bigger is the community and the more resources it has.
Can a Wrong Choice of Tech Stack Kill your Project?
Now that we’ve covered aspects to consider, the question whether a wrong choice of technology stack can ruin the project still remains, and the answer is – no, it can’t. The reason projects fail is not a technology stack or a language, the cause is in the wrong architecture solutions. Whichever language you choose, it doesn’t mean you are stuck with it for good. Yes, there are some limitations, for instance .Net is limited to Microsoft stack. But it won’t be why your product failed. You can always start a project in one language, say Ruby, and if at some point it doesn’t work for your product anymore, you can go on working on another. One of our in-house projects is exactly the case where two programming languages, Java and Python, were used at the same time to build a chatbot.
Another popular solution for big projects is microservice architecture. Microservice is a service-oriented architecture that structures an app as a collection of loosely coupled services. So the project is not a single application but a set of independently deployable, small services where each can be written in a separate language. For instance, if one part needs to process a large amount of data, engineers choose Python. Another part needs proof of concept where Ruby is a right choice. And one part which is big and stable is written in Java. Thus you choose a language not for a whole project but for a particular task where it’s the best fit.
In the end, whichever technology stack you choose, it all comes down to one – finding a right and trustworthy software vendor that has the experience and expertise you need. Trying to pick one perfect technology stack or a language is like embarking on a holy war where no one is a winner. But with the right, competent team you can make a technology stack perfect for your particular project.
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.
The categories of a modern tech stack
Before the days of ubiquitous SaaS products and services, tech stacks were relatively simple: there was LAMP (Linux, Apache, MySQL, PHP), an older standard for building PHP-based web applications, and non-open source alternatives like WAMP (for those that preferred Windows to Linux). Today, however, there is a wealth of tools that product teams and engineers can combine to build and maintain the perfect product for their market segment. An early stage company still finding traction might lean toward low-cost, flexible options they can switch out later, while another might choose technology that maximizes scalability, so they can meet the demands of enterprise customers.
Here are the basic categories along with some popular options for each:
- Operating systems and programming languages – You’ll choose these based on the environment you’re most comfortable developing in as well as the type of application you want to optimize for. You may end up with several, depending on how you want to build the backend and the user experience, and what devices you’re building for.
- Servers and load balancing – This category include servers, content distribution networks, routing, and caching services that let your applications send and receive requests, run smoothly, and scale capacity as needed. The larger services, like Amazon’s and Google’s, often offer the same components offered by their smaller counterparts, but they typically allow you to purchase each service as a line item, so you can mix and match based on your product requirements and preferred pricing structure.
Popular services: AWS, Google Cloud, Azure, Apache, Nginx, CloudFlare, Fastly
- Data storage and querying– This layer of the stack consists of relational and non-relational databases, data warehouses, and data pipelines that allow you to store and query all of your real-time and historical data. These components are key for storing data about what happens inside your app and how users behave when using it. Later you can search this data and use it to improve your product.
Popular data infrastructure: MySQL, Azure SQL Synapse Analytics, MongoDB, Redshift, PostgresSQL, Snowflake, Splunk, Talend, Fivetran
Backend Frameworks – A framework is a collection of languages, libraries, and utilities designed to help developers build applications. Frameworks often include some of the basic functionality you’ll need to build an app, and provides structure for things like organizing and communicating with your database, handling requests from users, and sending out registration or password reset emails. While some choose to forgo frameworks and code everything from scratch, they often end up with a more complicated, time-consuming build.
Popular frameworks: Ruby on Rails, Django, Laravel, Spring, .NET
- Frontend Framework – The services and frameworks you use to build the user experience, including the user interface and all the client-side functionality in your product.
Popular frontend frameworks and tools: AngularJS, React, Bootstrap, jQuery, Emberjs, Backbonejs
- API services – The applications that help you connect to the tools that make up your extended tech stack. Some API services are simply collections of thousands of pre-built APIs, while others are API gateways that help manage traffic when you need to send and receive large quantities off information from other systems.
Popular API platforms: Segment,Google Apigee, Mulesoft, Tealium, Zapier
- Monitoring and performance tools – A category of tools that help you understand how each layer of your tech stack is performing. Monitoring and performance tools collect and analyze data about the technical performance of your software, and are designed to track the health of servers, databases, services, and other internal systems.
Popular options: New Relic, AppDynamics, Dynatrace, Datadog
- Business intelligence solutions – BI tools bring together data gathered from multiple parts of the company and the market, and are designed to help track company performance and make higher-level business decisions. Many offer innovative ways to report on and visualize data.
Popular options: Microsoft Power BI, SAP BusinessObjects, Tableau, Looker, Qlik
- Behavioral and product analytics – An emerging but valuable class of tools used to track, store, and analyze user behavior at every stage of the customer journey. Some teams analyze this data in the analytics tools themselves, other teams pipe this data into data warehouses (some teams do both). The best of these tools offer proactive insights and keep data clean and organized.
Popular options: Heap, Google Analytics, Amplitude, Mixpanel, Countly
Explore popular alternatives to Google Analytics, Mixpanel, and Amplitude.
Why is getting your tech stack right so crucial?
The way you build your tech stack influences much about your company: what kind of products you’ll be able to build, how efficiently you’ll be able to work, and even what type of engineers you’ll hire. The process always involves trade-offs—some technologies save time but allow for less customization, others are better for certain audience segments (iPhone users, say), still others are more scalable but require more ongoing maintenance. However, it is possible to assemble a stack that can both meet your needs now and evolve as your company matures.
When possible, start building with tools that can scale as you grow. Many well-known backend solutions, like AWS, give you the option automatically add additional servers as you need them rather than having to estimate usage and pay for capacity upfront. For utilities and business apps that aren’t part of your core product, try to invest in options that have low switching costs or pricing tiers to accommodate future growth. For example, a small eCommerce company might start with an affordable Shopify plan, which as the company grows is easy to update to Shopify Plus, or migrate to a custom site that they can now afford to maintain.
The product analytics tools you add to your stack deserve extra care in selecting. They tell you how your current product is performing, what features are being used, and what parts of your product give people trouble. For this reason, they’re quite useful for helping plan your product roadmap (which in turn shapes your plans for your tech stack.) Because analytics tools give you such valuable insight, using the wrong one can derail your product development process and potentially produce lots of wasted effort.
Tips from product leaders on building a modern tech stack
The right tech stack can help drive your product to success, making your product easier to build and ensuring it evolves alongside customer needs. We’ve gathered information from product leaders who use behavioral and product analytics to help them understand how people actually use their software, then use that information to make key decisions on things like pricing, new feature prioritization, and marketing campaigns.
Read on for what product leaders have to say about building your stack, or check out our latest white paper on stacks for modern product teams.
“Before you build your stack, know which business questions you need to answer. Some tools will help you centralize data and learn more about your company’s performance Others provide in-depth behavioral data that help you understand your users. This will help you stay focused as you talk to vendors early in the process.”
- Ryan Koonce, CEO, Mammoth Growth
“Your stack says a lot about your engineering and company culture. Everyone should feel confident in the tools they’re using, that they’re working from complete, trusted data. There’s no one perfect stack, but you can get close to the ideal one for your business.”
- Product Manager, Heap
“Adding product analytics has not only helped us save money by eliminating other tools out of our tech stack, but it also helps us operate with more agility and act on business insights faster.”
- Jared Verteramo, Lasso
“Access to data is key. We made investments in our stack that brought different silos of data from many sources together, and that has enabled us to do so much more. We no longer have to worry about tracking and feasibility, but instead can focus on which analysis we can complete next.”
- Analyst, ThirdLove
We built Heap to be an integral part of your tech stack. Our tag-free behavioral analytics allow you to capture every action users take in your product and use it to shape your team’s development roadmap.
Top Tech Stack Models
To save you time and money, you can use proven tech stack models. Their components are regularly updated but its principles are the same. One of the advantages of using these popular tech stack examples is the available knowledge base.
Here are the top tech stacks to consider:
LAMP is an industry standard when it comes to tech stack models. In web development, it delivers the best cost efficiency, flexibility, and performance. It is an acronym that stands for:
- Linux (operating system)
- Apache (HTTP server)
- MySQL (relational database management)
- PHP (programming language, it can also be Perl or Python)
All these stack layers are free and open source. Since this tech stack can run on any operating system, you can interchange or modify other components in the same stack. Use WAMP for Microsoft Windows or MAMP for MacOS.
Microsoft’s .NET Core has been growing in popularity in recent years. Modern .NET applications are very lightweight and can run on Windows and Linux. Microsoft’s embrace of open source technologies has caught the attention of developers all over the world. Now with .NET 5 you don’t have to think as much about .NET Framework vs .NET Core.
Applications built using .NET commonly using the follow application tech stack:
- ASP.NET MVC – Standard model-view-controller framework
- IIS – Microsoft’s web server
- Angular frontend framework with TypeScript
- SQL Server – Microsoft’s enterprise database
- Microsoft Azure – A favorite of most .NET developers
It is also very common to also see .NET aplications running on Linux with NGINX and open source databases like Postgresql or Mysql.
- MongoDB (NoSQL database)
- Express.js backend web framework
- Angular.js frontend framework
Essentially MERN is similar to MEAN. The difference is that you change Angular.js with React.
The key benefits of using MERN are the React integration, the ability to use codes on browsers and servers simultaneously, powerful library, and full-stack development option (frontend and backend).
Additionally, React is known for its flexibility and performance in developing interactive user interfaces.
Another variation of MEAN, MEVN uses Vue.js as the frontend web framework instead of Angular.js. Over the years, Vue.js has grown in popularity. It incorporates the best features of Angular and React.
Vue.js is easy to learn, delivers a clear programming style, and provides superb performance for web applications.
6. Ruby on Rails
Ruby on Rails is a programming environment that uses Ruby, a dynamic programming language. With RoR, you can simplify the entire development process.
A server-side web app development written in the Ruby programming language requires less knowledge to work on. It allows the use of default structures for database management and web pages.
One of the fastest growing languages is Python. It is easy to use and commonly taught to college students as a beginner development language. It has many modern and powerful features. Python has also become very popular because of it’s heavy usage for machine learning and data science. It can also be used for building web applications by using the popular Django web framework.
Java is not as popular as it once used to be. It is popular for enterprise applications but many new projects tend to gravitate to newer and lighter weight application stacks like Node.js and ASP.NET. Java is still heavily used and there are lots of Java developers all over the world.