When making applications on the internet you make two parts - a front end (what the user sees) and a back end (where all the magic happens). Developers often refer to the front end as the client side because it's what we present in front of a user. The back end is in most cases running on a server (server-side 🗄️) and this is where we place all the heavy logic for making stuff happen.
Here is an analogy for you. Think of a website as a car dealer where you can buy new cars. 👨💼 When you arrive at the store, you are presented with a list of cars (some of them might be visible in-store). The catalog with cars may include pictures, descriptions, and extra equipment you can order for your car. When you order a new car, you might add some specific extra equipment for the car, like adaptive cruise control, heated backseats, electric rear doors, etc... all of which represent the front end.
Then the production/manufacturer department 🏭 takes your car order, gets all components together from various places, put them together, and sends the car to your dealer where you can pick it up. 🚗 This represents the back end. ⚙️
In the below text, I will dive a little deeper into what back-end development is, what a back-end developer does, what tools they might use to complete their job, and how you could become one.
What is a back end? ⚙️
When talking back end we are talking about servers and databases. The server is the one responsible for making sure that only the right users can get in touch with the right files. A database is containing an organized and structured collection of data that often has relationships.
The above description is happening fully automatically 🤖 behind the scenes (in the back end - server side) in just a few seconds while you wait at the front end for a response from the back end. 🌐
What is a back-end developer's job? 🧑🏻💻
My job is to work as a software back-end engineer ⚙️. Soon I will add a more specified post about what a back-end developer actually does. My daily job is to solve problems, make software automation, design new software (I also work as an architect), and maintain the currently running applications in the cloud ☁️ and on-premise 🗄️ environments.
To cut it down to a few key bullet points you can grab from this post, I am personally:
- Creating, integrating, and managing databases (relational and documents). ⚙️
- Building backend software using frameworks, and cloud technologies for the server side. ⚙️
- Validating new data to make sure the server-side software can handle them and store them correctly in the databases. ⚙️
- Documenting new code in application and API docs for other developers. ️⚙️
- Maintaining on-prem and edge environments running server-side software in containers. 🐳
- Making sure the continuous integration/development pipeline works as expected across all server-side applications, and continuing to deploy new code to the right environments. ♾️
- Talking to stakeholders/customers about new requirements for applications and planning them into the roadmap. 🧑🏻🤝🧑🏽
The above bullet points are a few of my tasks, and NO! A normal back-end developer is NOT doing all those tasks. They will only do the tasks marked with bold text above.
What tools are needed for a back-end developer to work?
It's obvious that the above tasks can't be completed without a set of tools. I use a range of different technology and software to complete my daily tasks. For a backend developer whose core responsibility is to develop a back end, I would say there are three categories of tools you need.
- Programming Language(S).
- Databases + Database Explorer.
Below is a description of each of them and some of the most common tools and software you will run into in your journey to becoming a back-end developer.
1. Programming Language(s)
A back-end developer often uses a query language like SQL to manipulate and retrieve the data stored in a database.
In some cases, the programming language got a built-in way to communicate with the database (often handled by packages/libraries of software you can add). Below are a few programming languages where you will find this kind of functionality.
When I first started programming I went with Python. Python is in my opinion a great choice for beginners. Why?
- It is concise and easy for a beginner to read and write.
- It is an extremely popular programming language, hence you will find a huge community with a lot of guidance and tutorials.
C# is my favorite language now. It is also another beginner-friendly language that got a huge community behind it and is in active development by its creator and maintainer Microsoft.
Databases and DB Explorers
I mentioned it before. Databases are crucial for 99% of applications to be operational. They are used to store details about users, domain items, and much more that will be in relation to the specific application. Some of the databases I use and most of the world use are:
To see data inside a database you can use database explorers. I primarily work with MS SQL and PostgreSQL. To interact with them I use SSMS and pgAdmin.
If you like other developers and I don't like to reinvent the wheel every time you create a new project, you are gonna fall in love with frameworks. Frameworks are time savers and they make it easier for developers to ship new code. Some popular frameworks include:
- .NET (C#)
- Entity Framework (C#)
- Micronaut (Java)
- Django (Web)
Those are only a few of the hundreds you will be able to find out there.
How can you become a back-end developer?
So, the big question is - how do you become a back-end developer? There is not only one path to that goal. I started by taking a Masters's degree in Software Engineering in Denmark, but the schools were not something for me.
Fortunately, you can become a back-end developer without having a degree. The internet is full of courses for those who don't like the higher education locations (like me). I actually ended up getting a degree in computer science, but that was only to prove that I got an education to get a job. I started learning online and studied for certifications in the good old trial-error manner.
I would recommend you choose one language and framework and stick to that. You can learn other languages and frameworks later easily when you first understand the concepts of thinking in boxes.
When you got a fundamental understanding of how programming works and you are able to make small applications, I would recommend you take a few courses in Linux and servers. This will give you an understanding of how networks communicate and make it easier for you to learn to build APIs and work with HTTP (web) applications.
When you understand that and start to develop APIs you can take on databases and learn how to store and manipulate data in them using your application. If you want to stand out from the crowd you should make a portfolio where you include your projects and showcase your work.
Another good idea is to participate in open-source projects by contributing small pieces of code to the project. This will put you into a position where you are able to take on new projects easier and faster. This is something employers are looking for.
How to become a back-end engineer?
Christian... you wrote earlier you work as a back-end engineer, how is that different from a back-end developer?
I initially started as an IT Operations responsible. This included tasks like maintaining the server infrastructure, other developers' computers, pentesting applications, etc... I then switched to core security for a short period and then became a back-end developer.
I have taken on more responsibility, became the technical lead of central core applications in a big enterprise, made a full CI/CD environment for all applications running in a hybrid environment (on-prem + cloud), etc... These things have turned me into a back-end engineer as I oversee the whole project, is responsible for designing the platform software and infrastructure.
My advice to you. If you are intrigued by all the stuff happening behind the scenes of an application (just like me), then you are probably looking into becoming a back-end engineer. A back-end engineer is capable of having the big picture view of the whole back-end and is often referred to as an architect. They design the systems and are responsible for the whole solution.
I know this has been kind of a wall of text - so congrats on reaching this point in this post! 👏
I hope you have a much better understanding of what a back-end developer is now. They make all the logic behind the front end happen. They interact with databases, and third-party APIs (other web services), write the logic to handle tasks, implement new features, etc...
If you want to become a back-end developer, you should subscribe to TWC. I am working on a course for those who would like to become a back-end developer without taking a 5-year master's degree.
If you got any questions, please let me know in the comments below. Thank you for reading! ✌️