Learning Path To Become A Backend Developer in 2020. How to Become a Backend Developer. Learn to become a Backend Developer. Learning backend development helps you get acquainted with several programming languages which can help give your career a great boost. Are you looking for a career in Backend Development? To build complete applications beyond the user-interface companies need rockstar back-end developers.
Web development today is completely different from what it was a few years ago; there are lots of different things that can easily baffle anyone entering into the web development.
Without further ado, let’s get started. You can find the detailed roadmap in the image below, however I am also going to explain each step in the description below.
Let’s break it down and explain each step in the section below.
Before we start, although we haven’t listed the knowledge of HTML/CSS in the roadmaps above, it is recommended that you get at-least some understanding and know how to write some basic HTML/CSS.Step 1– Learn a Language
There are myriads of options when it comes to picking a language. I have broken them down into categories to make it easier for you to decide. For the beginners who are just getting into the backend development, I would recommend you to pick any of the scripting languages because they have a lot of demand and it would allow you to get up to speed quickly. If you have some frontend knowledge, you might find Node.js to be quite easier plus there is a big job market for that.
If you have already been doing backend development and know some scripting language, I would recommend you to not pick another scripting language and pick something from the “Functional” or “Multiparadigm” section. For example if you have been doing PHP or Node.js already, don’t go for Python or Ruby, instead give Erlang or Golang a try. It will definitely help stretch your thinking and open your mind to new horizons.Step 2 — Practice what you have Learnt
There is no better way to learn than practice. Once you have picked your language and have got the basic understanding of the concepts, bring them to use. Make as many small applications as you can. Here are just a few ideas to get you started
/r/programmingin the form of JSON file
jsonify dir-nameto give you a JSON file with the structure inside the
Once you have understood the basics of the language and have made some example applications, learn how to use package manager for the language that you picked. Package managers help you use external libraries in your applications and to distribute your libraries for others to use.
If you picked PHP you will have to learn Composer, Node.js has NPM or Yarn, Python has Pip and Ruby has RubyGems. Whatever your choice was, go ahead and learn how to use its package manager.Step 4 — Standards and Best Practices
Each of the language has its own standards and best practices of doing things. Study them for your picked language. For example PHP has PHP-FIG and PSRs. With Node.js there are many different community driven guidelines and same for other languages.Step 5 — Security
Make sure to read about the best practices for security. Read the OWASP guidelines and understand different security issues and how to avoid them in language of your choice.Step 6 — Practice
Now that you know the basics of language, standards and best practices, security and how to use package manger. Now go ahead and create a package and distribute it for others to use, and make sure to follow the standards and best practices that you have learnt this far. For example if you picked PHP, you will be releasing it on Packagist, if you picked Node.js you will be releasing it on Npm registry and so on.
Once you are done with that, search for some projects on Github and open some pull requests in some projects. Some ideas for that:
There are several different testing types for testing. Get the understanding of what these types are their purpose. But for now learn about how to write Unit Tests and Integration tests in your applications. Also, understand different testing terminologies such as mocks, stubs etcStep 8 — Practical
For the practice, go ahead and write the unit tests for the practical tasks that you have done this far, especially what you made in Step 6.
Also learn and calculate the coverage for the tests that you wrote.Step 9 — Learn about the Relational Databases
Learn how to persist your data in a relational database. Before you go and pick the tool to learn, understand the different database terminologies e.g. keys, indexes, normalization, tuples etc.
There are several options here. However if you learn one, others should be fairly easy. The ones that you would want to learn are MySQL, MariaDB (which is mostly same and is the fork of MySQL) and PostgreSQL. Pick MySQL to start with.Step 10 — Practical Time
Its time to bring everything that you have learnt this far, to use.
Create a simple application using everything that you have learnt this far. Just pick any idea, maybe create a simple blogging application and implement the below features in it
Depending upon the project and the language you picked, you may or may not need a framework. Each language has several different options, go ahead and look what options are available for the language of your choice and pick the relevant one.
If you picked PHP, I would recommend you to go with Laravel or Symfony and for the micro-frameworks, go with Lumen or Slim. If you picked Node.js, there are several different options but the prominent one is Express.jsStep 12 — Practical Time
For the practical of this step, convert the application that you made in Step 10, to use the framework that you picked. Also make sure to port everything including the tests.Step 13 — Learn a NoSQL Database
First understand what they are, how they are different from relational databases and why they are needed. There are several different options, research a little have a look and compare them for the features and differences. Some of the common options that you can pick from are MongoDB, Cassandra, RethinkDB and Couchbase. If you have to pick one, go with MongoDB.Step 14 — Caching
Learn how to implement app level caching in your applications. Understand how to use Redis or Memcached and implement caching in the application that you built in Step 12.Step 15 — Creating RESTful APIs
Understand REST and learn how to make RESTful APIs and make sure to read the part about REST from the original paper of Roy Fielding. And make sure that you are able to fight someone if they say REST is only for the HTTP APIs.Step 16 — Learn about Different Auth Methods
Learn about different Authentication and authorization methodologies. You should know what they are, how they are different and when to prefer one over the other
Learn about the message brokers and understand when and why to use them. There are multiple options but the prominent ones are RabbitMQ and Kafka. Learn how to use RabbitMQ for now, if you want to pick one.Step 18 — Search Engines
As the application grows, simple queries on your relational or NoSQL database aren’t going to cut it out and you will have to resort to a search engine. There are multiple options, each having it’s own differences.Step 19 — Learn how to use Docker
Docker can facilitate you greatly in your development, whether it is replicating the same environment as production, keeping your OS clean or expediting your coding, testing or deployment. I am going to leave the answer to “how it is going to help me” for you to search. In this step, go ahead and learn how to use Docker.Step 20 — Knowledge of Web Servers
If you have come this far, you probably had to tackle with servers in the steps before. This step is mainly about finding out the differences between different web servers, knowing the limitations and different available configuration options and how to write applications best utilizing these limitations.Step 21 — Learn how to use Web Sockets
While not required, it is beneficial to have this knowledge in your toolbelt. Learn how to write real-time web applications with web-sockets and make some sample application with it. You can use it in the blog application that you made above to implement real-time updates on the blog posts listing.Step 22 — Learn GraphQL
Learn how to make APIs with GraphQL. Understand how it is different from REST and why is it being called REST 2.0.Step 23 — Look into Graph Databases
Graph models represent a very flexible way of handling relationships in your data, and graph databases provide fast and efficient storage, retrieval and querying for it. Learn how to use Neo4j or OrientDB.Step 24 — Keep Exploring
Once you start learning and practicing, you will definitely be coming across the things that we did not cover in this roadmap. Just keep an open-mind and a healthy appetite for learning new things.
And remember the key is to practicing as much as you can. It will look scarier in the beginning and you might feel like you are not grasping anything but that is normal and over time you will feel that you are getting better.
Well… there were a few well-thought reasons behind this decision.
Python is a great language. I love it! It’s free of clutter and is simple to use. It also has better support for OOP features. So, why didn’t I choose Python? Because based on my research, Python is often used among people in the data science community, rather than professional software engineers.
Yes, you we use Python to build desktop and mobile apps as well as backends. However, Python is not the language of choice for building mobile or desktop apps. These days, the majority of people are building mobile apps using cross-platform solutions such as React Native or Flutter. Others do native development in Java (for Android) or Swift (for iOS). The same applies to building desktop applications with Python. Python is not very well known for that reason.Why not C#?
C# and Java are very similar in terms of syntax and they both have great support for OOP features. So, why didn’t I choose C# given that I have several C# courses?
Well… I looked at different sources to see the popularity of Java vs C#. Google Trends is a great resource. As you saw earlier in the post, Java is way more popular than C#. Does it mean it’s a better language? Well, it depends on _how _we define “better”.
What is better? A Ferrari or a truck? It depends on what you want to do. Ferrari is a super-fast car but it’s useless if you want to use it to move house. Programming languages are the same. There is no such thing as the best programming language. Every language has pros and cons. C++ is well known for its speed. Python is popular for its simple and clean syntax as well as tons of resources for machine learning.
Just because Java is more popular, it doesn’t mean it’s a better language than C#. In my opinion, C# is a more feature-rich language but Java was marketed better.
C# and Java have been rivals since day one. Many of the features we’ve had in C# for a long time were introduced in Java years later. Some features don’t exist to this day! For example, in Java, we don’t have optional parameters which are very handy. We have to overload a method. Ugly! Jave interfaces are also bad.
I personally prefer C#. But as I said, Java has had better marketing and that’s why it’s always been more popular than C#.Why Java?
So, I chose Java because it’s used more widely than C# amongst professional software engineers. There are more Java developers out there than C# developers. Most universities and colleges also tend to teach Java, rather than C#.
Now, all that aside, C# and Java are very similar in terms of the syntax. Recently I posted this tweet asking my students if this is Java or C# code?
The reality is I wrote this code in IntelliJ (a popular Java IDE). But the code is valid C# and Java code. Someone argued that this is an over-simplified example and shouldn’t be used as a basis for comparison. That is true. But my whole point is that if you understand this code, you can perfectly take my Data Structures or Design Patterns courses.What You Should Take Away
In my opinion, Java in the programming world, is like the English language in the world we live in. If Italian or Hindi is the only language you speak, you’re probably not gonna get very far ahead.
If you understand English, you have access to tons of valuable resources. Whether you want to learn programming, or painting, or piano, if you “understand” English, you have tons of resources in front of you. You don’t need to be fluent in speaking English. All you need is to just understand it.
Thanks for reading ❤
If you liked this post, please do share/like it with all of your programming buddies!