You must have seen below image multiple times and If you ask my opinion, I would say the Iceberg could have been even more deeper. In my professional career, I have had hard time to answer this amazing question “What all a backend developer should know?".
Answer to this question is not a brief one and that's the reason, I thought of writing this article. Audience of this article are the people who already have the basic knowledge of one of the backend programming language like Java, Python, C#, Go or Node.js etc and wish to mature their craft.
Doing backend well is not easy. All the crucial components and most of the business rules live in the backend of an application, Its like brain to your whole system. So it's really important that backend should be reliable, maintainable and extendable.
But what do I mean by “reliable, maintainable and extendable” here? And how does a production grade backend software and architecture look like? This is what I want to demonstrate in this article. Consider this article as the index of a “Backend Developer Handbook”. May be that's what I would like to name it , when it's finished.
Below you will find list of technologies and practices you would come across as a professional backend developer in the industry. A lot of frameworks and tools mentioned below are of Java/ JVM stack but concepts can also be translated to any other language like Python, C#, Go or Node.js. I would try my best to mention the language specific tools for each language. You can also mention in comments if you are aware of any better tools, I would add those in the article.
Goal of this article is to put good-to-know and must-know backend related topics at single place so that one can have a checklist of what he knows or may be it could help you to decide what you should learn next.
You can google these topics and I am pretty sure that you would find plenty of tutorial on each topic. I have also added relevant links to few of the topics, which might help you to shorten your search time. I have a plan to write detailed articles on these topics. I would link those coming articles to the respective topic in future.
So let's begin!!
Domain Driven Design
Simple crud application
Three Tier architecture
Monolith vs Microservices
DB: SQL vs NoSQL vs Casandra, Neo4j, graph db, time series db
Free text search capability ( Elastic Search )
Client Side load balancing
Distributed Session Management
Looks like, this list would always be an ongoing work. I would keep adding and updating the topics as I would become wiser. You can also help me to make this list better. If you think any other backend development related topic should be part of this list, do mention that in comments and I would add the topic in the article.
Thank for reading!! Cheers!!