Learning Backend Developement

Liam Wise
7 min readMay 29, 2022

An overview of the skills required for backend engineering

Alright. I’m not going to waste your time with a lengthy introduction.

For those of you that dont know backend engineering is it’s the managment of a user’s request with a website, app or api and either updates the database, yields new information or basically whatever you want, whether its deleting a post, making a payment or sending an email. It’s pretty awesome.

I’m sure you have all heard of the metaphor that is synonomous with the concept of an API (application programming interface). The idea is simple, your customer asks for a dish off of your menu, you recieve that dish from the waiter (API) you make that dish and send it back with the waiter (API).

Nice, your now a pro backend developer, but ill cover a few more things just incase.

Bottom line and good news is unlike the chef in this example, you dont have to worry about presentation of the food you cook — so if thats your thing this might not be for you.

But lets not waste time, heres what you need to know in short:

  • How HTTP works
  • A programming language such as javascript or python
  • A framework such as express or django
  • A databse like Mongo or MySQL (Choose Mongo :))
  • API design
  • Deployment and maintenance
  • Some basic frontend (HTML, CSS, JS)
  • And most importantly — a project (or two) to learn with

Learning HTTP

Understanding how the web works is pretty vital for this gig. So I won’t make my self liable for you learning it from a short article, instead i’ll lead you to the right people. Instead watch this.

In short HTTP are the rules of the web. The way the server (the backend) recieves info is through a users request.

Requests do different things and have different verbs depending on its task. If the user is getting information it uses the HTTP verb GET for a specific url (Eg. GET www.website/dogs) and will get all the dogs from the database.

Alternatively, a user might want to add a new dog to the database. In that case they will send POST request to the server and the server will add the new info into the database.

There a several requests all with different verbs such as DELETE, PUT, PATCH, HEAD and OPTIONS.

Other important information for development is:

  • HTTP Cookies — little bits of information that are stored on the users computer instead of the database
  • Session — a tool used to track a users information and cookies through their session on that sit (Eg. not having to login everytime you reload)
  • Security practices

Programming languages

This ones pretty straight forward. People spend more time picking the language then the time it takes to learn it. So i’ll make this simple. Javascript, Python, Java, C#, GO, the list just keeps going so just pick one already learn that and move on.

The truth is they all basically do the same thing, some do it faster, some do it in less lines of code and some with more errors so just start. My advice is close your eyes and click the link that your finger first lands on. Here’s a few:

  • Python — https://www.udemy.com/course/python-the-complete-python-developer-course/
  • JS — https://www.udemy.com/course/the-complete-javascript-course/
  • Java — https://www.youtube.com/watch?v=eIrMbAQSU34

What matters is that you learn the fundamentals of programming.

  • Logical operators
  • Variables
  • Data structures/types
  • Loops
  • If/else statements
  • Functions and Classes
  • Imports and modules

Backend frameworks

Okay. Now we are getting somewhere.

Frameworks are the tools used to catch, digest and throw back data. All of your routing is done with a framework and its what you create your server with. Each language has one or maybe two main frameworks that a language uses and they are usually pretty easy to learn (I use express with Javascript).

I will leave you to find your own site, video, course, book or however whatever you use to learn the framework because it really depens on the language but heres what you need to know:

  • server creation
  • routing requests
  • reading requests and sending responses
  • error handling
  • middleware
  • sessions and cookies
  • possibly authentication and authorization

That sounds like a lot, but frameworks like express are so lightweight and easy to use — infact, heres how you create a basic server in express:

Output of app.js

Databases

Great so you made your server, your getting all this new information, but your user has just given you their address to send their package, where do you store it?

Databases go hand-in-hand with servers as most the time a request want to get or give something to the server.

Whether is SQL or No-SQL its important to learn how each database works on its own without any server. Including creating new databases, creating Schemas/Tables and importantly how they relate to each other.

Once you have done this you can integrate it with your server. I use MongoDB which is commonly used with Javascript but I have used SQL before aswell and they both great and both complicated.

Here’s a link to learn Mongo DB

And another to learn MySQL

For javascript I cant stress enough learning how asynchronous JS works when using databases and handling Promises and async errors.

Once you’ve done this it’s as simple as connecting your DB (Usually a bunch of syntax you can find in the docs), creating your Schemas/Tables and searching, inserting, updating and removing your data.

API Design

This is a very conceptual aspect of the backend and is something that only improves with practice however there are some common approaches.

REST is probably the most abundant design and it’s the one I use. However API’s such as GraphQL are becoming more popular where only data is served instead of pages so all static data is kept the same.

There are several ascpects a system must have to conform to the REST architecture — here’s a link for understanding them.

CRUD (Create, read, update and delete) is a commonly used functionality of a server and interacts with the database for each so I recommend you understand these well.

URL design is extremely important in terms of the consistency and simplicity of the endpoints of a server. Using a URL like this:

  • POST www.website/dogs

For creating a new dog instead of this:

Makes the endpoint much more understandable and makes you want to pull your hair out a little less.

However there are lots of aspects of this section and the best way to learn is just reading and seeing what others use.

The Rest…

Well that’s the bulk of it. Once you have created a working theres a few more things to do:

  • Front-End — when learning its extremely helpful to learn some html and css to create an interface for your server and serve some files other that json. Here’s a link for learning some HTML and CSS.
  • Documentation — this is key. Documentation of how external users can use your API is vital and documentation of you code for internal users.
  • Deployment — uploading your home grown website is pretty cool but the process is not. A lot of people get caught up in deployment, usually sites like Heroku and Netlify are quite simple but platforms like AWS get a bit more confusing.
  • Dev-Ops — dev-ops is the maintainance of your site and the continous changing and intergration of the code.

So you have ticked all boxes? Great!

Now you just have to build something. This is the best and worst part.

I can say first hand its pretty easy to get caught in the tutorials and the articles and the endless youtube videos. But all you have to do is just start.

Thanks heaps for reading! Hope you enjoyed and got something out of it.

--

--