If you’re a beginning developer, you may have heard of the term ”tech stack” and thought, Is it a programming language or a framework? What should be in my tech stack?
A tech stack is shorthand for the collection of different tools a company or developer uses. Choosing a tech stack is an important process for organizations or independent devs making their own apps. Ahead, we’ll go over how people choose their tech stacks and some of the most popular.
Learn something new for free
What does tech stack mean?
A tech stack is the set of tools and technologies that developers and companies use to build an product or application. These tools include languages, frameworks, and databases used together to make the app function.
With the exception of command-line applications and utility strips, most modern apps depend on more than one technology to function. Sometimes a tech stack will be used to describe the full-stack of tools required for the application, from the database to the dynamic effects you see in your browser. Other times, an application will be divided into front-end and back-end stacks, and the set of tools used in each will be called a tech stack. Some organizations might use common tech stacks while others may rely on in-house tools in theirs.
Choosing a tech stack is important because it can be hard to switch out parts once they’re baked into the codebase and the application is live. Also, a tech stack can consist of many parts, and the resulting application is a synergy of these parts. Each choice comes with potential tradeoffs, so it’s vital to find tools that fit the requirements of a project.
Mobile vs. web development tech stacks
When you ask developers about their tech stack, you‘ll get a different answer from a web developer than from a mobile developer. This is because different platforms usually require different kinds of technologies.
Web applications and most mobile apps depend on the internet and can be accessed by any browser.
Code from one of many possible programming languages and frameworks is executed on the web server to send data to your browser for web applications to work. Then, JavaScript code is executed in the browser through one of many possible frameworks. All of these technologies belong to a tech stack, some for the front end and others for the back end.
Mobile applications require you to download an app to your phone instead of depending on a browser. The tech stack here includes all the frameworks and languages used to build the app.
An Android tech stack will always differ from an iOS tech stack and uses different programming languages. There are also cross-platform mobile frameworks, like React, that allow you to write code in one programming language and build an app for both mobile platforms. But behind the scenes, the resulting app will still use the native language of the specific platform.
The back-end services, like databases and APIs, are the one part of a tech stack that could be the same across mobile and web development. Additionally, mobile and web apps will often access the same API to retrieve data.
Types of web development tech stacks
As we learned in the last section, a web development tech stack can be viewed as a whole and divided into front-end and back-end tech stacks.
Front-end tech stacks
A front-end tech stack is all the technologies that go into rendering a web page in a browser. At the lowest level, a front-end tech stack always consists of HTML. But a web page without style or dynamic features is pretty boring, so developers usually include CSS and JavaScript in their websites.
Web apps are rarely built from scratch these days. You can create styles with just CSS, but many developers have created tools that make styling feel less like reinventing the wheel.
The front-end tech stack may include technologies like:
- Sass, which allows you to use functions, nesting, and variables in your styles.
- Bootstrap, which gives you pre-styled components and grids to use in your project.
Both of these libraries can speed up development time and streamline the experience, but to include Sass and Bootstrap in your stack, you need developers who have solid CSS skills to use the two tools effectively. Want to ramp up your CSS knowledge? Check out our course Learn Intermediate CSS, then dive into Learn Bootstrap and Learn Sass.
Vanilla JavaScript is also rarely used in front-end development anymore. Most of the time, developers will use a JavaScript front-end framework or library. Front-end developers may add jQuery to their tech stack if all they need is some dynamic features because they can get that done by writing less code.
When developers need the front-end to act more like an application and interact directly with back-end services, they will usually add a front-end framework to their tech stack. Here are some front-end frameworks along with scenarios when they’d be useful:
- React: When you need reusable components and want to pick and choose the other JavaScript libraries for the other functionalities you need in your app, like making requests and handling data.
- AngularJS: When you want a complete front-end framework that gives you everything you need in one package and provides an opinionated approach for how to write applications.
- Vue.js: When you want a lightweight framework that gives you most of what you need for front-end development and allows you to pick features to use and choose other libraries if you want.
Back-end tech stacks
In front-end development, you only get to choose the libraries and frameworks you use — otherwise you’re stuck with HTML, CSS, and JavaScript. In back-end development, you have many choices, beginning with the language. Here are some languages you have to choose from in a back-end tech stack, the common frameworks they have, and a reason why you might include them in a tech stack:
- JavaScript is often used by developers who want to write with the same language in the front-end and back-end. Express.js is a popular library in JavaScript.
- Python is often used because it’s easier for beginners to learn and integrate with Python data libraries. Flask and Django are popular frameworks in Python.
- C# is often used on Microsoft Windows Servers or where strict types are preferred.
- PHP is often used for quick development, on shared hosting, and in popular CMS platforms.
- Go is often used where performance and concurrency are needed.
- Ruby is used where quick development and deployment are a priority. Ruby on Rails is its popular web framework.
- Java is used in enterprise development and big data processing and often with the Spring framework.
- MongoDB is used to store information in NoSQL databases.
Many of these languages have web development frameworks designed to generate the complete web page on the back end and use JavaScript only for dynamic effects. Unfortunately, much of modern web development doesn’t follow this pattern.
Most web apps only use back-end code to send data to the front-end, and the front-end code handles generating the web page you see. These services are called APIs. When APIs are used, your back-end tech stack can also be part of your mobile tech stack because they both use the same data.
Full-stack tech stacks
A full-stack tech stack includes both the front-end and back-end web stack. There wasn’t much advantage to considering one in relation to the other for many years. They are essentially two separate applications that communicate over the internet. That changed in 2009 when the first version of Node.js came out. This meant choosing it as part of your back-end tech stack would not require two teams of developers or developers to know more than one programming language.
Types of mobile development tech stacks
At one time, there were three mobile platforms that you had to work with to make sure all users could use your app: iOS, Android, and Windows. Windows stopped making phones, but that means developers still have to consider two separate operating systems when choosing a mobile tech stack. The first choice is whether to develop native apps or a cross-platform app.
Native mobile development tech stacks
The advantages to choosing a native tech stack are that:
- You will have a more performant app.
- The app will be more stable.
- You won’t have to depend on developers of third-party libraries as much.
The disadvantages are that you will need two teams of developers to build the apps or require developers to know two technologies well.
If you decide to go with a native tech stack in Android, you also have another decision to make about your mobile tech stack — whether to write code in Java or Kotlin. Even Google, who developed Android, recommends Kotlin, but developers also know the language. Since Java is also used for a wide variety of other things, you will find more Java developers to do the work.
If you go native in iOS, you also have a choice of languages here: Objective-C or Swift. Apple recommends Swift, but again, your choice depends on which technology you know.
Cross-platform mobile development tech stacks
The other option is to use a cross-platform framework in your mobile tech stack. These frameworks allow you to write your code in one language and then compile apps from your code base that run on each platform. The advantages to using one of these frameworks are speed of development and that many of them use a programming language that other types of developers, like web developers, are familiar with.
JavaScript is a common language used in cross-platform mobile frameworks. Frameworks that use JavaScript include React Native, Apache Cordova, Ionic, and Xamarin.
Learn to build applications using complete tech stacks
Any application is built of more than one part. In web development, you have back-end code and front-end code. In mobile development, you have the mobile app and the services the mobile app uses for data. A tech stack is the complete set of technologies used to build an application. Because of the wide variety of technologies available for each layer of a tech stack, most at least have some unique parts. But here at Codecademy, we’ve put together coding courses that focus on the most popular, in-demand tech stacks in the industry.
For web developers who want to work on the full stack, we have the Full-Stack Engineer Career Path that will teach you to build a full-stack web application in the most efficient way possible. It introduces you to React front-end development and Node.js back-end development, so you only have to learn one programming language, JavaScript, to get the job done. We also teach each technology separately in our Front-End Engineer Career Path and Back-End Engineer Career Path.
For mobile developers who are investigating which tech stack to use for building native mobile apps, we have Build Basic Android Apps with Java for future Android developers and Build iOS Apps with SwiftUI for those who prefer iPhone development. And for mobile developers who want to build cross-platform apps and current React developers who want to try out mobile development, we have Learn React Native.