Codementor Events

Tech stack of a Backend Developer

Published Feb 24, 2023

Original post: https://stackup.hashnode.dev/tech-stack-of-a-backend-developer-in-2023

Tech Stack is the set of tools, frameworks and programming languages that can be used to build applications. The right tech stack can make all the difference in terms of speed, scalability, and maintainability. In this blog post, we will discuss some of the various components of a tech stack which are expected to be in the arsenal of an efficient backend developer.

Programming language is the foundation of the tech stack and all other frameworks and libraries are integrated using it. One is expected to be proficient in at least one of the core OOPS-based languages. You will find tons of articles comparing the pros and cons of various languages out there, but the truth is if you are good at any of them you will probably end up getting a decent job.

Even though one programming language is usually sufficient, once you begin working on large enterprise-level applications that demand scalability and performance, you may find yourself using tools that are not supported by your primary language. In these situations, one usually ends up learning a second one.

Something similar happened to me when we needed to use Airflow for our analytical needs which required me to learn some python to along with my primary C#.

Another default skill set is expected as all applications will be needing to store and retrieve the data. Knowledge of a traditional relational database is a must. However most applications these days tend to distribute some of their data based on their use cases and you will eventually need to know one of the popular NoSQL document databases like Mongo, Couchbase etc. as well.

Another similar stack is Elasticsearch. Although it is not exactly a database but an analytical or search engine for data and allows fast read and search operations.

A web framework is a tool that helps you build web applications by providing a set of libraries and tools to handle common tasks. Based upon your primary programming language you should be aware of its corresponding web frameworks like Spring Boot for Java, Django for Python, .Net Core API for C#, and ExpressJs for Node.js etc.

APIs are the most common communication platform between different parts of the application these days. Most backend developers end up working on API with REST being the go-to standard. GraphQL has been gaining popularity recently but you can easily survive without knowing it as the adaption is still very less compared to REST.

Recommendation: Building Restful APIs with HarperDB and .Net Core

As the size of your application grows, asynchronous programming plays a vital role in improving performance, scalability & most importantly reliability. Traditionally we had technologies like windows messaging queues which were used for something similar but now there are tons of services out there like RabbitMQ, Azure Storage Queue, Service Bus, Apache Kafka etc. Familiarity with at least one of them is expected as it builds a foundation allowing one to use any alternative as well.

The majority of applications nowadays are being developed or moved to one of the famous cloud providers. As a developer, you might have to build applications using various services offered by these providers hence basic knowledge about them is very useful.

One won't be expected to have all admin or devops level knowledge but the skill to create and consume the services is very handy these days.

Again, this is not a must-have skill but eventually, all developers will have to have some basic idea of how to integrate their apps using some sought containerization techniques. Even if the apps are not containerized, docker can be a powerful tool for developers for their sandbox setup on local machines allowing them to quickly spin up various servers.

Recommendation: Docker Compose for Development Sandbox Setup

Caching is a technique used to speed up the performance of your application by storing frequently accessed data in memory. Most performing applications these days have cache offerings like Redis integrated in one or another way into their system thus decreasing calls to their primary database servers.

Again, not all codebases have unit tests written for them but properly architected systems have them and knowing how to write code in TDD pattern is a nice skill to have. There are multiple frameworks out there for each language, for example, I use the NUnit for my C# code base.

There are some other popular tools and portals which most backend developers need to use one way or another. And since I was not sure if they fall into the category of tech stack I thought of listing them separately in this section

Clients to make API calls - Postman, SoapUI etc

Code and text editors specifically Visual Studio Code

Terminal or Command Prompt

Version Control - Git & Git CLI

To sum up, a backend developer needs more than just a working knowledge of a database and a programming language. Building a scalable and maintainable application requires a mix of the tech stack, which includes a programming language, web framework, database, cache solution, API framework, containerization tool, and cloud infrastructure provider.

Please feel free to add more in case you use something very frequently in your day-to-day backend development tasks.

Discover and read more posts from Rajat Srivastava
get started