So you’re exploring the complicated world of programming and find yourself constantly looking up terms that you aren’t sure the meaning of, and two of these are Frontend and Backend. In this blog, I will explain what those terms mean and help you decide which one you would like to pursue, though eventually, you should learn both.
Frontend
Very simply, the frontend is what the user sees and interacts with when for example, they go to your website. The languages generally involved are HTML, CSS, and Javascript, with all their libraries and frameworks too, like React.
This is where ALL of the styling happens and also a lot of functionality that the user directly sees and uses, like a drop-down menu, add to cart button, or even a game!
If you like designing User interfaces and making things look good, this is what you want your focus to be on. This is the role that has the responsibility of making things look good. However, it is no easy task to be a front-end developer as you still have to make things run properly, smoothly, as well as re-engineer, restructure and redesign things over and over again until it's absolutely perfect. This process can go on for months and years depending on the project size.
Another important thing to remember is that very often the frontend developer is working with the things the backend developer makes. So what is the backend?
Backend
So the Backend is where all the databases, servers, and applications are created that the user does NOT see. Common languages you will be using for the backend is Ruby/Rails, PHP, Java, Python, and SQL. If this confuses you, allow me to explain with some examples.
When you make an account, your Sign up has to be processed by something to create that account so it’s available from anywhere. The backend has an application that processes and formats that sign up information and then puts that into a database, which you can think of as a digital storage server similar to an excel spreadsheet.
Another example is when you play a game and your score saves, which is achieved by storing that score into a database. Technically you can store variables locally so you don’t use a backend but if the application is reset or a new instance of it is opened, none of the previous data will be there.
Where this ties in with the Frontend, is that the frontend is generally feeding the data to the backend, which the backend processes, and then the frontend can have access to that data again to display it.
Example of how they work together
A simple example that everyone has done.
Frontend
You sign in from the front end by entering your information into the given fields that were made by the frontend developer
Backend
The information is sent to the backend to be processed, tested if valid, and stored. Everything including processing, testing if valid, and storing is set up by the backend developer. Sign up is complete. If invalid it is also the job of the backend developer to send back what is wrong usually with a warning which the frontend developer uses to tell the user to change that part and re-signup.
Frontend
Enter information to Log in again from the fields that the frontend developer made.
Backend
The information is once again sent to the backend but this time to verify that the information matches an existing account that was previously stored. If true sends back to the frontend that that is a correct login. if incorrect, like before it has to send back why.
Frontend
Gets signal that it is correct and logs the user in, usually changing something about the page, like removing the log in button since you're already logged in. If incorrect has to tell the user it's wrong and usually why so they can try to log in again. Then you want to check your account information so you click the account tab that was also made by the frontend developer.
Backend
Information of the account currently logged in with is sent to the backend and the backend sends back the information needed to the frontend.
Frontend
The frontend now takes the information that it needs and structures, organizes, and manipulates that however is needed to properly display everything. And the cycle continues.
Should you learn both?
In my opinion, pick which one you like better and make that the focus but learn both. As you can see there is a lot of things, even something as simple as a log in, that requires a lot of frontend and backend so even if you're not writing one of the two, it's very helpful to know how the other will come into play.
When making the backend, the formatting of the information, the applications you need to build for it, and how you want to receive and send back that information is very important.
Likewise, it's important to know how to features you're building in the frontend will be stored and processed in the backend.
Although not an excuse for either to skip learning the other, you can make the backend things without knowing the frontend if you just understand what the goal is, though this could lead to complications. And the frontend can use APIs if they need something in the backend but don’t want to make it themselves, but APIs are limited since they were not designed for your project.
What is an API?
An API is something every developer will use eventually and it is basically a backend application or database. One example that is very commonly seen, is the Gmail log in that many sites use. When implemented into a site, you are allowed the option to sign into that website with your existing Gmail account.
This completely removes the need to make a custom backend that stores your data however what if you need to store things that aren’t an option with the Gmail API? You would either need to use another API that accomplishes that or just make your own backend.
Keep in mind, I am not saying to never use an API, I highly encourage you to use them if the situation is right but in the case you run into a situation that requires a custom backend or a very expensive API, you would be lost without knowledge of the backend.
The Flexibility of this System
This is an amazing system of frontend and backend as some projects can have a large number of completely separate APIs, custom backend applications and databases, and multiple frontend sites and pages.
If you're confused this means that you can have a Gmail login API running on a separate server than your custom database that tracks your currency and a website that the user interacts with while having another website that directly interacts with the backend for admin purposes.
This is highly efficient as not everything is in one place, making for really fast performance and very good organization. This is how a huge website like Facebook can handle so many different users with different processes and still maintain super fast speeds. Because of how many different processes are happening on different servers, they can interact seamlessly with each other while not even being on the same machine.
Conclusion
The number 1 thing I will always recommend is: learn both. Understanding the other side of things makes your job so much easier and allows for you to build the entire project by yourself if needed. Also if you're looking for a higher position in which you'll be keeping both sides in check or helping where needed, or even organizing the project yourself, it is absolutely necessary that you know both sides of things. Frontend and Backend can be extremely efficient and has a lot of potential that can only be seen when properly educated.