eli5 What is the difference between “Front End” developers and “Back End” developers?



eli5 What is the difference between “Front End” developers and “Back End” developers?

In: Technology

Front End = stuff that faces the user. That’s graphics, client-side code, displaying data or communicating with other software.

Back End = the “behind the scenes”. Databases, handling search queries, managing users, etc., and everything else that’s hidden from view.

They use different languages, priorities and techniques, so it’s common for people to specialize on one job.

Front end devs build things that users interact with. A website is a great example; they’ll build the layout, colors, images, and interactive components like the text box I’m typing into right now. But the second I hit comment and submit this answer the back end part comes in.

Back end devs handle the actual data going back and forth between you, the client, and the server (or network of servers that collectively form the back end). So when I submit this comment, the button I press triggers an event that the front end dev programmed. The website will take this comment, parse it into a form the back end can recognize, and send it to the back end. The back end devs responsibility is to take the incoming request, and do everything needed to update the data and send a proper response. In this case, the text of this comment gets saved somewhere and a response goes back saying it was successful. So when you refresh the page another request is sent to the back end for the comments on this thread, the data is retrieved and packaged, and sent back in a form that the website can recognize. Then its the front end’s responsibility to take that data and make it look all nice for you to read and scroll through, all that good stuff.

So back end devs handle requests of varying kinds to create, read, update, or delete data, and front end devs make it possible for a user to do things with that data with a user interface of some kind.

Very simple generalisation:

A bank frontend: everything you, as a customer, see. You can see your accounts. You can see your bills being paid. You can see when you sent your granddaughter something for Christmas.

A bank backend: the system that actually does anything. That communicates with other banks. That keeps track of your check book. That knows where you live and which accounts are actually yours. That keeps track of which bank office you went to when you first signed up for their services. And so on.

A “Front End” developer typically deals with the user interface for an application. The UI is how the end user, or customer, interacts with the application. I.e. what you see on the screen and can click on or type in.

A “Back End” developer handles how the data is managed, saved, etc..

As an example:
On a messaging forum, a user clicks on a thread, types a response and clicks the Send button.

How the list of threads are displayed, the text box the user is typing in, and the button they clicked are all examples of something a front end developer could be responsible for.

Once the Send button is clicked, that data needs to be sent to the server, saved in some format, then served back to other users when they access the same thread.
This logic, which users don’t directly interact with, would be handled by a back end developer.

Often times, there can be another distinction between back end development and database administration, which just means that one person or team handles how and where all the data is stored once it’s sent back by the “Back End” developer.

If someone is fluent and capable in all these areas, they are often referred to as “Full Stack” developers, meaning they can work on any technology layer which makes up an application

Edit: tl;dr

Front end = the numbers on a clock

Back end = the gears that make the hands move

Front end developers are the one who build the stuff you see on the screen… the page layout, the interactions with buttons, slideshows, forms, sections that expand, etc.

Backend are the ones who get inputs to communicate with other databases and systems and return outputs, say processing an ecommerce order and sending the order to the warehouse, processing the credit card, generating the confirmation email. Or displaying your investment portfolio and calculating your returns based on market prices, what price and number of shares you own, etc. It’s also things like load balancing, media serving, security protocols, etc. to keep sites up and runnings, functioning well, keeping them secure.

Think of it like a restaurant!

Front End would be the “Front of House”: this would be the design of the restaurant itself, how the tables and chairs are laid out, and different dishes being delivered to your table. It would also be the waiters too, since they are the ones who communicate with the kitchen and managers and clear the table when you want something different.

Back End would be the “Back of House”: This would be the Kitchen; the cooks, the dishwashers, and the managers who oversee and delegate the operations.

An example API/server interaction would go something like this:
you (the client) enter the restaurant (log on), and get seated at a table. Then you interact with the waiter (click a button) to order a meal (open a page). They take your order, then pass that order to the kitchen (the backend). The cooks put together your dish to your specifications, and prepare the presentation before handing it back to the waiter (returning the data you requested). Then the waiter brings the dish back to your table for you to consume (request complete).

A typical web service is composed of two parts.

The frontend is what you (the user) sees. Frontend covers things things like the structure of the webpage, accessibility, styling, functionality, user experience, fetching and displaying data, stuff like that.

While the frontend fetches and displays data, the backend is the actual storage of the data. Backend covers things like database mangement, server stability and security, scalability and APIs.

In order to have a functional webpage, the backend and frontend need to communicate with each other. This is typically done through an API.

Lets use reddit as an example. When you load a reddit post, reddit’s frontend sends a web request to an API endpoint. The backend then validates this request (makes sure you have the permission to view such data and that it’s actually you requesting it) and sends the appropriate data back to the client (the comment text, the user who posted the comment, timestamps, upvote/downvote data, awards, etc…). The client then parses this data from the server and decides how it will be displayed it to you.