Image Credit: ©Vicky Design via Canva.com
So, you finally made up your mind to get into the awesome world of backend development?
Whether the above is the case or you are already a backend engineer, who intends to try out backend development with another programming language, below is a straight-forward(absolutely no BS) roadmap/checklist to take you from zero to junior backend developer.
This list goes straight to the point, making room to enable you to learn at your own pace, and also giving you the ability to do split-learning(learning different concepts from different relevant sources) - especially if you’re depending on free resources like the ones found on YouTube.
NB: There’s quite a lot to this topic, but I did my best to keep this as concise as possible for this post. After following and implementing all - as will be revealed in this article, feel free and confident to call yourself a professional ‘junior backend developer’.
Also note that this article assumes that you are not an absolute noob, but someone who already has some software development experience working with tools like Git and Github.
Don't know Git and Github yet?
The Youtube video below will be a great resource to help you learn about Git and Github.
P.S: Simply click to watch the video on this page, so you can easily continue reading once you're done watching. You don't have to leave the current web page to watch the video.
To wrap things up perfectly, I added some extras - to help you move your career to the next level after learning everything as will be detailed in this article.
Now let's get started.
1. Pick A Programming Language/Tool Stack.
The first thing to do is to pick your desired programming language and tool stack. My recommendations are:
-
Pick NodeJs/ExpressJs(with Typescript) if you already have experience working with Javascript, and do not wish to learn a totally new programming language.
-
Pick Python(with Django(particularly using the Django Ninja framework) or with FastAPI) - if you do not have a problem with learning a new programming language, but prefer one that is simple and easy to learn.
-
Pick Rust if you are fearless and not afraid to do hard things. I however only recommend this if you already know backend development but want to try out working with a different programming language(Rust is hard!).
Choosing Rust(if you successfully stay and learn it), will turn out to be one of the most career-rewarding decisions you ever made - both in terms of earnings, and job security.
- Pick any other language/tooling you prefer - which of course should be after doing quality research, and making sure that’s the perfect choice for you.
2. Pick A Database.
The next step is to pick a database - backend development has its foundations rooted in data-persistence - you will need a database. My recommendations:
-
Pick PostgreSQL - I believe it will be the best choice to make you very valuable in the current tech market. A perfect combination for beginners(IMO) will be PostgreSQL and Python(with Django or with FastAPI).
Choose a relevant ORM if you go with PostgreSQL. For Django, you won’t need a special ORM(it comes with an awesome in-built ORM), but for Node/Express I’ll recommend Prisma.
-
Pick MongoDB(and Mongoose) if you want something that’s easier and more popular - affording you more than enough resources to learn and master concepts really fast.
P.S: Ensure to stick with cloud-based options for database deployment and usage at this early stages. This will save you quite a lot of the headaches associated with setting up a database locally. For MongoDB, use MongoDB Atlas, for PostgreSQL, use a cloud based service and connect remotely. For this, Platforms like Render, and Railway will come in handy. Docker can also be very useful at this point - if you know how to use it.
To avoid stress, simply stick with cloud-based options.
Wondering what Docker is?
The youtube video below will help you understand what Docker is all about.
3. Start A Project.
There’s absolutely no better way to learn and grow as a software engineer than to ‘learn by doing’. To make the best of this roadmap/checklist, simply create a new(Github or alternative platform) repository, spin up a project, and get ready to build.
The project should be a simple one, but it should basically be one that will have all the features of a standard(pretty much complete) back-end system - features like user authentication, file uploads, and more.
4. Learn C.R.U.D.
Yes you read that right. At this point, simply streamline your focus to learning how to perform the four common database operations(entry CREATION, RETRIEVAL, UPDATING, and DELETING).
While on this topic, do well to practice how to efficiently work with request parameters, request queries and request headers. Also practice things like sorting, data pagination, working with middlewares, and more. Stay focused, and ensure to learn as many best practices for building REST APIs as you can.
5. Learn User Authentication And Authorization.
While user authentication involves verifying and granting user access into your platform, user authorization involves verifying and granting special or privileged access to restricted sections of your system/application. These tasks are commonly handled using JSON web tokens(JWTs).
-
Learn how to professionally handle user authentication and authorization with JWTs.
-
Learn how to build more robust auth setups with cookies - https only cookies. Relying on only JWTs for auth can be a bad idea.
6. Learn How To Send Emails.
The next step is very crucial when building backend systems. Do well to learn how to send emails using any relevant provision that is available to the development stack you’re using. This will come in handy - e.g. when sending user tokens or One Time Passwords(OTPs). Using third party services for this won’t always be the best idea.
7. Learn File Storage.
File storage is a non-negotiable aspect when it comes to back-end development. Practice file storage with relevant cloud services. I’ll readily recommend using AWS S3. While setting up and handling file storage with AWS S3 might be challenging at first. I guarantee that this will be a very good decision - considering how much potential you stand to get in terms of finding jobs.
8. Learn Proper Project Structuring.
At this point, you must have come very far. You should now focus on learning how to properly structure your backend projects. Do your diligence, and learn best practices for structuring back-end projects. Whatever you do, ensure to keep things as modular(split) as possible.
It will also be a great idea at this point to learn about concepts like Domain Driven Development(DDD), and Microservices. While you don’t have to practice building a microservice based system just yet, learning DDD will certainly guide your decisions in terms of properly structuring your projects in a modular, clean, and professional way.
This will also be a great time to check out open source projects, and get to learn best practices from how those projects are structured.
Talking about project structuring, do not forget to extract database logic code into special service files. This practice is very important for the scalability and flexibility of backend systems - e.g. when the need to switch to a different type of database arises - an extracted database layer will help to make this process as near seamless as possible.
Except when un-necessary - always keep an extracted(service) layer for database logic.
9. Practice Project Deployment.
At this point, your project is very much complete. Now it’s time to deploy it on the internet and make it accessible from anywhere. For now and once again, simply stick with serverless platforms like Render, and Railway. for your deployments. These platforms will help you deploy your projects with just a number of clicks - and with so much ease.
Do well to learn how deploying backend projects interplay with CORS(Cross Origin Resource Sharing). While learning this CORS part is not compulsory, as you proceed, you’ll get to see the need 😊.
10. Learn Web Sockets - Add A Basic Real-Time Communication Feature To Your Project.
Web sockets is a real-time, full-duplex communication protocol that supports persistent communication between a server and a client. This provides systems with the ability to share communication in real-time - even when the user is not directly making any API request. Go ahead, and learn how to work with web sockets. Add a simple real-time communication feature to your project.
And that will be it
Having implemented all the above on a properly organized backend project, I, with all confidence, hereby confer on you the title of ‘Junior Backend Developer’ 😊.
Do well to finish up on your project, and deploy to Github or any alternative platform you use.
But then, it actually doesn’t and should not end here. There is more to backend engineering.
This, as stated earlier in the article, is just a straight-to-the-point guide to help you become a junior backend developer - whether you’re a complete backend beginner starting from scratch, or an already professional backend developer who wants to try out backend development with another programming language.
Below are some valuable extras to help you scale your career and experience from this point - if you’re a backend development beginner.
-
Learn the basics of computer science. Learn Data Structures & Algorithms(DSA), study operating systems fundamentals, and finally, do well to understand networking & communication protocols.
-
Learn caching concepts and principles. Learn how to cache data, and improve system performance and efficiency by using a secondary database like Redis.
-
Learn Docker - practice project containerization, and ensure to deploy your images to a remote registry like Docker Hub. This will help you practice remote collaboration with containers. Learn about Domain Driven Development(DDD) and Microservices more in depth.
-
Go beyond using serverless platforms like Render and Railway. Proceed to adopt a full-fledged cloud service of your choice.
Select one of AWS, Microsoft Azure, and Google Cloud Platform(GCP). If you ask my recommendation, I’ll say - stick with AWS. With AWS, practice server deployments with EC2 using a reverse proxy like Nginx. Practice file storage with S3, PostgreSQL database provisioning with RDS, and DNS/domain management with Route 53 and a lot more. Feel free to use AWS Lambda as well - if you wish to try out a serverless service provided by AWS.
There you go friends - a straight-to-the-point(no BS) CTO guide on how to become a junior backend developer from scratch. I do hope you find this guide helpful. Feel free to join the conversation - sharing anything you think I missed.
Hire the Zed Labs Team - Let's bring your software and design projects to life.
We invite you to come hire us to build and deliver your software or design projects.
-
If you will love to work with the team at Zed Labs and have us build awesome stuffs for you, simply visit out website, And fill the contact form. Alternatively, you can send us an email here: hello.zedlabs@gmail.com.
-
You can also send me a private email at okpainmondrew@gmail.com or a DM via Linkedin - just in case you prefer to contact me directly.
We'll be excited to hop on a call and get on the way to bringing your software or design project to life.
Conclusion.
Even though the Zed Labs blog is new. We hope to make it a haven where top-level engineers come to read, learn and get inspired.
Do well to bookmark the Zed Labs blog, and stroll over to read new and exciting stories, plus top-notch mid-to-senior level engineering content in your free time.
If you loved this post or any other Zed Labs blog post, and would love to send an appreciation, simply use this link to buy us some cups of coffee 🤓.
Thanks for reading.
Cheers!!!
