23-Jan-2019 • 3 min read
Alright! Now that you are here, I can safely assume that you are an aspiring backend developer. Before that, let's see what a backend developer does as part of his job. Backend developers deal mostly with providing services, and application programming interfaces(APIs) for any presentation layer programmers(Front-end and Mobile etc.). Backend developers deal mostly with implementing business logic. Hence, they deal mostly with data storing, retrieval and manipulation for the applications to work as expected.
This forms the important part, which includes Operating systems, Computer Networks, System Design. Any computer science student and self learnt programmer should be aware of these topics. You will encounter use cases everyday in your career which requires knowledge of these topics. So, it is better to get a hold of these topics, long before you need them.
If you are a computer science student, I don't have to emphasize how important DS and Algorithms are. They form the core of any performing software system today. It is fine to not know it all, but you should be adept at basic data structures like Array, linked lists, trees, graphs, Binary search trees etc. Refer some online sources and get a grip on algorithms as well. There many programming sites like Codechef, Topcoder, Hackerrank, Hackerearth if you want to practice your skills in these areas.
Software developers working in backend of the systems use a range of programming languages to get things done. If you are willing to work in backend web development, I suggest you get understand and internalize Ruby, Python along with Node.js. Most of the companies are switching to these languages since they offer good frameworks to build on like Ruby on Rails, Django, and Node.js(not a framework but is powerful combined with express.js) itself.
Most programmers in industry either use a particular flavor of Linux or Mac, because they offer a wide variety of tools for programmer convenience. For instance the terminal, a valuable thing in software developers career. You should know how to work with this. You should know basic commands for navigating, text processing, networking, monitoring etc.
Any application you develop as a backend developer will interact with some sort of database be it SQL or No-SQL. I suggest you start with some relational database and get a hold of SQL first. Understand how indexes, partitions, sharding, querying etc. work. These concepts will be help you optimize your applications for speed. Once you are good at SQL databases try some No-SQL database like MongoDB.
Believe me, finest of the applications cannot tolerate load from users if application doesn't serve data from cache. Caching improves the performance of your application a lot. You could get away with some operations in 1ms instead of trying to load your application from databases.
Many software systems employ the pattern of distributing the responsibility across multiple processes. This helps greatly in managing the performance of the system, debugging, and readability. Message queues help in communicating between these processes in an efficient way. With this way of distributing the responsibility using message queues, processes don't have to wait until the pre-dependencies are cleared. They can exit once a particular job is done, which will save a considerable amount of load on the system.
If you are building an application as a Backend Developer, there is a good chance that your users will be interacting with your application over on the internet. And you should be responsible for the data they provide to interact with your application. Understand different network protocols and how to do secure communication using the same. It's a good investment, learning details about networking.
From here you should be learning various concepts in your domain to do your job better. For instance, I work for a blockchain development company. So, I learn concepts cryptography, decentralization, ethereum etc. work. I also worked for a telecom billing giant, where I was mostly learning how billing works.
This is a buzz word these days along with Blockchain. You should definitely try and understand, what machine learning means and how can you leverage that in big applications. This is not a mandatory skill though for a backend developer. You should be good knowing just the basics.