This article is aimed at helping Software Developers who have already mastered their skills in coding and database querying but are stuck in personal development and don’t know which step to take next.
As an interviewer, I’ve encountered many intelligent, educated developers with a pretty good background, but often with a common problem — a lack of understanding of the core concepts regarding the way modern systems and frameworks are designed.
In my opinion, learning such concepts is not an easy and rapid path (as, for example, reading a pack of blog posts), but the result is worth it. However, I attempted to avoid suggesting massive complex resources in this article since each topic is too deep and requires at least a whole book to discover.
The opinion that algorithms are not of practical value and only required for solving problems on leetcode.com and during FAANG interviews is quite popular, but that’s not true. Basic algorithms and data structures knowledge is vital for understanding how modern systems are designed and work.
“Grokking Algorithms” by Aditya Y. Bhargava is the easiest way to figure out (or brush up on) how to use the most important algorithms effectively in your code.
Many reviews state that the book is fully illustrated, but I didn’t realise just how well until I opened it for the first time.
Even if you know the difference between B and B+ trees and can calculate the big O of any algorithm in the middle of the night, it is still worth reading – I guarantee you’ll enjoy it.
The book can get you addicted to algorithms and data structures learning, so be careful!
Designing Data-Intensive Applications
If I had to choose only one book or resource, I would suggest this one. “Designing Data-Intensive Applications” by Martin Kleppmann is a true gem, the holy bible for modern software engineers, without a doubt.
It’s the best choice for you to understand the principles behind the systems we use every day (web servers, mobile applications, databases, message queues), and you are at the beginning of this path.
In my opinion, the book is not only about core concepts and ideas but about the principle concept for every engineer – the tradeoff. Nothing comes free of charge, and we almost always have to sacrifice something less critical to make vital business functions work great. As an engineering decision-maker, the faster you understand this concept, the better solutions you’ll provide.
The disadvantages include the size of the book (pretty big) and style (closer to academic review), but it is worth investing your time in it.
Scalability and System Design for Developers
I fell in love with educative.io because of the text format. For me, reading is the best and the most time-effective way of consuming information – the information is usually better organised and easier to navigate than in videos or podcasts.
This learning path is divided into modules and covers a comprehensive list of concepts, starting from the basics. You can either skip the parts you already know or revise them for better understanding. On top of that, there are plenty of real-world cases with best practices described.
Building Microservices: Designing Fine-Grained Systems
Although the microservices concept is well covered in one of the modules from the previous resource, it deserves a separate study.
The whole idea of microservices is often misused. Many people tend to think about it as a panacea, which is, of course, wrong. As an architecture pattern, it has its pros and cons, and this book will give you complete answers about where, when, and how to implement it or stay away from it.
“Building Microservices: Designing Fine-Grained Systems” by Sam Newman is a good book about microservices to start with. It does not contain the implementation details, making it pretty high-level and relevant even six years after its publication.
Introduction to Kubernetes
Cloud Academy is the last but not the least important resource on my list. Most labs contain built-in playgrounds, making this resource one of the best online education platforms with hands-on experience. Do not waste your time preparing because the whole Kubernetes cluster will automatically set up for practice in seconds!
Introduction to Kubernetes - Cloud Academy
Understanding Kubernetes core concepts has become a must-have for the software development industry. Whether you like it or not, containers and container orchestrators have already taken over the world.
I’ve picked this course for the article because it’s nice to start with. Still, you also can try Certified Kubernetes Application Developer (CKAD) Exam Preparation which is more advanced.
Thank you for reading!