Front-end vs back-end, and what is full-stack?

Can't work out the difference between front-end and back-end? Here is a short tour of the world of development. Imagine the task is to build a bridge, and we have two teams: one on the left bank, one on the right. They build towards each other in the hope of meeting somewhere in the middle.
Transfer that to modern web development and you have one team of back-end developers and one team of front-end developers.
Front-end and back-end communicate and combine their efforts to produce a single application divided into two large parts, each responsible for its own domain.
What is the back end responsible for?
The back end handles receiving data, processing it, serving it, controlling it and checking every permission.
You could say the back end is the application's thinking centre. It is where all the data comes together, and it is the thing that gives that data only to those who should have it.
The front end is the client side — your mobile applications and web applications, the part that talks to the back end.
The front end's job is to get the data and then show you everything so that it makes sense: likes, comments and so on.
The front end does not make decisions and does not store data permanently. All the data lives in a database and arrives through back-end services.
A full-stack developer is someone who has to be an expert in both. But understand that this is an extremely wide field of frameworks and technologies, one that even borders on the responsibilities of DevOps — the people usually called system administrators or systems engineers.
A full-stack developer has to understand everything, front end and back end alike — and that cannot really be so.
Full-stack developers are usually people who started in back-end and moved gradually into front-end, or the other way round.
The front end is the part of an application available to the user. Using an application or a site, the user interacts directly with the front end, which sends a signal to the server.
A front-end developer builds the outward-facing part of a site or an application. What the user sees was made by a front-end specialist: the user interface (UI) and the user experience (UX). Front-end development includes the code itself, written in JavaScript.
A front-end developer knows HTML and CSS, works in Git and understands how to work with various libraries.
HTML (HyperText Markup Language) holds all the data about a page for the browser: headings, lists and so on.
CSS (Cascading Style Sheets) tells the browser which font and colour to render the elements of a page in — Times New Roman, 14 point, blue, for instance.
In short, the front end is everything that happens in the browser.
There is also the job of markup coding, but it is fading away, and UX/UI designers are taking the place of markup coders.
UX/UI designers work on how a page looks, giving their attention to its visual side.
The back end is what runs on the server. A back-end developer works in languages such as Python, PHP and Ruby. They know SQL well so as to work with databases. Responsibility for a site's server side rests entirely with the back-end developer.
A full-stack developer commands both front-end and back-end development. Some of them also do the markup work on a site.
But when a company says it needs a full-stack developer, it means it needs either a front-end developer who knows back-end or the other way round. Feel the difference — porridge with a cutlet, or a cutlet with porridge. That is roughly the balance a company expects of you.
You might, for instance, have mostly front-end responsibilities and one day be asked to fix something on the server side; or you work on services and one day are asked to fix the back end.
At companies with more than three people there are already specific responsibilities and a very clear division between them.
Why do companies want full-stack developers?
Because in development the interests of front end and back end differ. A full-stack developer has to weigh both sides and bring everyone to a common understanding.
Where are full-stack developers needed?
At startups in their earliest stages.
A startup has money for only one person, who then works both sides. There are a great many such people. Any front-end developer can build a REST API or learn to in a week — certainly on our courses, since we have a module devoted to exactly that.
So decide which is closer to you, front end or back end, then go for it, study and get a good job.
What are the advantages of being full-stack?
Where front-end and back-end developers are specialists in a narrow field, full-stack is a many-sided profession. A full-stack developer is a jack of all trades — and demand for them is accordingly higher.
But it is not that simple. Full-stack work has its advantages and its drawbacks.
Is being full-stack worth it today?
At first glance it seems obviously advantageous to be able to do everything. More skills means more work, and an offer should be easier to get.
But it is not quite so.
Let's start with the drawbacks:
1. In some areas you will lose out to specialists in a narrow field. They can know their domain from A to Z, whereas full-stack is a thing all but impossible to attain. Knowing everything cannot be done.
2. Developing and building skills is harder, because a full-stack developer has a great many directions to develop in. Time has to go to all of them, so the pace of development drops.
3. A good full-stack developer is always under heavy load at work. You have no clearly bounded area of responsibility, you understand everything everywhere, and so every task lands on you.
4. Choosing which vacancies to go for is harder. You know and can do so much that people may simply not believe you, or you yourself may not want to go deep into one area.
The advantages:
1. If you are a beginner learning from nothing, you can work out what you prefer, front end or back end, which frameworks interest you and which technologies you enjoy. Full-stack is an excellent start.
2. The risk of burnout is near zero, because you change projects and areas more often than a specialist does. The chance of tiring of repetitive, monotonous work is lower.
3. It is easier to grow into a team lead. You understand more and grasp the whole architecture, which makes moving into leadership far simpler.
4. You are flexible. You know several tools with which to solve the same problem. It is easier for you to assess a situation, get to the heart of it and solve it, because you have knowledge across almost every area — even if not as deeply as a narrow specialist.
All told, it is better to start with full-stack, so as to work out what interests you and where your heart lies.