Does Data Structures and Algorithms Matter in Backend? No BS Answer!
Tags: webdev, backenddevelopment, career, softwareengineering
Published: 2024-04-19 17:54:06

## Introduction: 
Have you ever wondered whether data structures and algorithms (DSA) truly matter in backend engineering? The answers you've heard might seem vague or inconclusive and they all say "It depends...", "It's needed for interview never needed later...". But fear not, because I'm here to provide a clear answer.

DSA is a hot topic in the tech world, but its relevance can sometimes feel elusive. In this blog, we're going to unravel the mystery and discover the real importance of DSA in backend development.

## Integrator vs Core Backend Engineer

In my humble opinion that is mainly inspired form a YouTube video titled: [How Important are Algorithms and Data Structures in Backend Engineering?](https://www.youtube.com/watch?v=pG_twkFN6iE&t=17s&pp=ygUcZG8gdSBuZWVkIGRzYSBodXNzZWluIG5hc3Nlcg%3D%3D) by **Hussein Nasser**.

I deeply believe that in the realm of backend engineering, there is two types of engineers

1. **Integrator**: Who resembles 80% of backend engineers out there, and most of backend engineering roles in the market are integrating roles! what I mean by integrator backend engineer is the person who brings together various backend components to create functional applications. They integrate web frameworks with databases, set up APIs, and configure servers to deliver seamless user experiences. While they will not delve as deeply as core backend engineers into the intricacies of how different components they are integrating, like as a backend engineer who is responsible for developing the backend infrastructure for a SaaS product he is not obliged to understand how Database engines implement B-tree or how the web framework he is using is built form the ground-up.

2. **Core Backend Engineer**: And those represent the rest 20% of backend engineers, who are responsible for building the core components that integrators combine together, like the engineers building and maintaining MongoDB database engine or the engineers behind Nginx web server and examples are endless.


## When you really need to master DSA:

short answer is When you're responsible for building foundational components like database engines, a deep understanding of DSA becomes indispensable. 
For instance, if you're developing a database engine, you must grasp concepts like B-Trees and hashing. These tools enable efficient data organization and retrieval, ensuring the smooth operation of the database.
On the other hand, if your role involves integrating existing databases into applications, the need for mastering DSA diminishes. While a basic understanding might be helpful for optimizing queries or managing data efficiently, it's not a prerequisite for success.

**Embarking on my DSA Learning Journey:**
Data Structures and Algorithms is a huge topic that people are getting PHDs doing research on! That's why I charted out a basic path to (DSA) learning, inspired by resources like:
- [Raodmap.sh](https://roadmap.sh/datastructures-and-algorithms)
- [Mosh Hamedani DSA Course](https://codewithmosh.com/p/data-structures-algorithms)

and my path will be as follows:

1. **Picking a Programming Language**: The beauty of learning DSA is that you can pick almost any programming language to get started. Whether it's Python, Java, C#, C, or Rust, the principles remain the same. For me, Java holds a special place—it's a language I'm comfortable with and enjoy coding in.

2. **Understanding Algorithm Complexity**: Before diving into specific data structures and algorithms, it's crucial to grasp the fundamentals. Understanding algorithm complexity and it's measuring systems like "Big O Notation" helps you evaluate the efficiency of your code and make informed decisions.

3. **Basic Data Structures**: Start with the basics—the building blocks of DSA. Arrays, linked lists, stacks, queues, and hash tables form the foundation of many algorithms and data structures.

4. **Sorting Algorithms**: Sorting is a fundamental operation in computer science, and there are various algorithms to achieve it. Learning sorting algorithms like bubble sort, insertion sort, and quicksort equips you with valuable problem-solving skills.

5. **Search Algorithms**: Searching for elements within data structures is another essential skill. Dive into search algorithms like linear search, binary search, and interpolation search to understand their workings and applications.

6. **Tree Data Structures**: Trees are hierarchical structures that find applications in various domains. Explore binary trees, binary search trees, B-trees, AVL trees, and related algorithms to understand their nuances and optimize operations.

7. **Graph Data Structures**: Graphs are versatile structures used to model relationships between objects. Understand directed and undirected graphs, along with algorithms like depth-first search (DFS) and breadth-first search (BFS), to tackle graph-related problems effectively.

[Simple DSA Roadmap I made](https://roadmap.sh/r?id=66229e9380911d3b695736f2)

---

![My Own DSA Roadmap](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fd4t32phrvwcjy4f8wov.png)

---

## Consusion: 

DSA isn't just a subject—it's a way of thinking. That's why I'm on a journey to learn it continuously, alongside other backend topics and I'll make it kind of sub-journey of hte  main backend journey. Each milestone I reach in DSA will be a stepping stone, documented in a new blog post. Next Blog will be **Java 101**.