Whenever you are going to learn something, instead of learning specific topics, you should analyze the goal, and then understand what do you need to learn to achieve it.
So, what is back-end about?
It's, obviously about handling the data layer, security layer and at least core business logic layer. Obviously, you need at least to store users and their data on the server and use some application code to deal with specific business needs.
So, what do you need for that?
For beginning you just need enough skills so you could install and configure any software on any server which includes kernel as well. You must be able to set up a ready production machine at least for small business needs, for example, Ubuntu + nginx, PHP + Python + Node.js + Redis + MySQL + Git + SSH, Whatever packages you need. In the age of cloud, it's easy and you can make it within a few hours on DigitalOcean after reading related articles on their blog. You may also try AWS for free for a year, but don't forget to disable everything later if you are not going to pay.
After you installed packages, don't forget to configure them. Most complicated will be web server (nginx) and database (MySQL) where you also will need to create separate users and protect root account and disable login from the outside network and just allow localhost or via direct socket.
However, at least one time I would recommend installing fresh server from scratch yourself. Try recompiling FreeBSD kernel, configuring DNS, NAT and anything else which is already set up for you on DigitalOcean. FreeBSD has enough tutorials how to do so.
Finally, in the age of software composers/containers like Docker, you should be able to use Virtual Machines and Infrastructure as a Code with those containers as well.
What next? You need to connect to the server, right?
So you need to know how to set up and use unix accounts, filesystem permissions and SSH with private key only (with password login DISABLED). It's a good place to digging into security and configuring basic firewalls and security policies, first of all, principle of least privilege. It's also a good place to get some insights about how the internet works, OSI model , default ports, HTTP and SSL/TLS and how to enable HTTPS, for example, using nginx and LetsEncrypt
Finally server (or personal machine/cloud/vps/container) is ready for real development and usage by the dev team. Now developers are happy like kids on X-mas, they can just write the code without worrying about all that boring staff.
To sum up:
It's like a 1st year in the University. You don't need to be expert in any of fields mentioned above, but you just should know a bit from any field: that they exists, what do they do and how to deal with them yourself on basic level.
However, it depends on where do you see yourself afterwards. Junior server-side (back-end) engineer has 3 main options for career growth later:
Sr. Back-end Engineer himself where you keep focusing on app development using different technologies and stacks and not just one, SDLC, analysis, deployments, testing and codebase overall.
DevOps (Before the age of buzzwords called administrators) - well, you just continue learning and practicing those topics above and become a professional in configuring and securing modern large infrastructures
Engineering Manager - here you will be learning and practicing soft and business skills, solving issues, especially communication between business people and tech people, becoming best friend of a developer, designer and top management and being responsible for project management. If you like wasting time with documents, spreadsheets and configuring JIRA 50% of your time, then this option is for you.
No matter which path you will choose, future Holy Paladin, you always will be learning a bit from related branches as well and may end as a VP of Engineering, or CTO, or Chief Software Architect, or Chief Information Security Officer, or Rockstar, or another guy (or gal) in shorts employing another guys (or gals) in suits who will be doing job for you while you are enjoying your Mango cocktail on an endless beach in a galaxy far, far away...
Mev-Rael
Executive Product Leader & Mentor for High-End Influencers and Brands @ mevrael.com
Whenever you are going to learn something, instead of learning specific topics, you should analyze the goal, and then understand what do you need to learn to achieve it.
So, what is back-end about?
It's, obviously about handling the data layer, security layer and at least core business logic layer. Obviously, you need at least to store users and their data on the server and use some application code to deal with specific business needs.
So, what do you need for that?
For beginning you just need enough skills so you could install and configure any software on any server which includes kernel as well. You must be able to set up a ready production machine at least for small business needs, for example, Ubuntu + nginx, PHP + Python + Node.js + Redis + MySQL + Git + SSH, Whatever packages you need. In the age of cloud, it's easy and you can make it within a few hours on DigitalOcean after reading related articles on their blog. You may also try AWS for free for a year, but don't forget to disable everything later if you are not going to pay.
After you installed packages, don't forget to configure them. Most complicated will be web server (nginx) and database (MySQL) where you also will need to create separate users and protect root account and disable login from the outside network and just allow localhost or via direct socket.
However, at least one time I would recommend installing fresh server from scratch yourself. Try recompiling FreeBSD kernel, configuring DNS, NAT and anything else which is already set up for you on DigitalOcean. FreeBSD has enough tutorials how to do so.
Finally, in the age of software composers/containers like Docker, you should be able to use Virtual Machines and Infrastructure as a Code with those containers as well.
What next? You need to connect to the server, right?
So you need to know how to set up and use unix accounts, filesystem permissions and SSH with private key only (with password login DISABLED). It's a good place to digging into security and configuring basic firewalls and security policies, first of all, principle of least privilege. It's also a good place to get some insights about how the internet works, OSI model , default ports, HTTP and SSL/TLS and how to enable HTTPS, for example, using nginx and LetsEncrypt
Finally server (or personal machine/cloud/vps/container) is ready for real development and usage by the dev team. Now developers are happy like kids on X-mas, they can just write the code without worrying about all that boring staff.
To sum up:
It's like a 1st year in the University. You don't need to be expert in any of fields mentioned above, but you just should know a bit from any field: that they exists, what do they do and how to deal with them yourself on basic level.
However, it depends on where do you see yourself afterwards. Junior server-side (back-end) engineer has 3 main options for career growth later:
No matter which path you will choose, future Holy Paladin, you always will be learning a bit from related branches as well and may end as a VP of Engineering, or CTO, or Chief Software Architect, or Chief Information Security Officer, or Rockstar, or another guy (or gal) in shorts employing another guys (or gals) in suits who will be doing job for you while you are enjoying your Mango cocktail on an endless beach in a galaxy far, far away...