One big dividing line between developers that I'm not sure all tech recruiters have a full grasp of is the difference between frontend and backend web developers. Generally speaking this is a divide between responsibilities that defines the type of work a developer is doing. There is also the concept of a "fullstack" developer (which I consider myself to be, with some caveats), which I will explain as well.

What is a Frontend dev?

To start with, what is a frontend developer? In web development this usually means someone who is working on the client side of the application, and maybe that does not mean anything to you either so let me put it another way: this is someone who works on the part of the website or web application you see.

This typically means they are working with a designer and making sure the site or application looks and feels the way it is supposed to using CSS. Usually they are using JavaScript and writing code that will run in a web browser. Sometimes a frontend developer is also a designer.

What is a Backend dev?

Conversely, a backend developer works on the server side of the application, or put more simply, the parts you don't see. This usually means writing server-side code to that is going to be interacting with a database, storing information, retrieving information, and worrying about how fast things are. Probably this also means solving networking issues between various components and making sure things are secure, although in some large organizations those are separate roles.

Okay show me a picture!

Yeah I know what you are thinking, that seems pretty abstract. Let me see a picture. Well, luckily I started building the graphics for this section in the ITeach Recruiters course, so here is a diagram showing how a very simple web application is structured:

The first part of the diagram, which we call "The Client" is what the frontend developer will be working on. In 2019 this is often a web framework like React, Angular, Vue, or Gatsby. It includes a lot of JavaScript and CSS work.

The middle part of the diagram is the application server, or sometimes this is called the API Server. This might be in any backend language: Node.js, C#, Java, Ruby, PHP. There are many backend languages you can write an API server in. This is the responsibility of the backend developer to build and maintain, and usually this includes writing documentation so the frontend developers know to how call the server and get data back.

The third part of the diagram is also usually the responsibility of the backend developer. This the database: it is where you store an organize data for the application. Not every web application needs a database, and many people use database-as-service systems like DynamoDB on AWS or MLab for MongoDB.

Again this is super simplified, many times things are much more complicated, or they could be much simpler.

Why should I care?

The big take home message here is that there is a great difference between these roles and most people specialize in one or the other. If you are sending potential applicants information about UI Developer roles, when they clearly have only Backend Developer titles on their resume, it will not be effective in getting their attention. The inverse is true as well.

Additionally, hiring managers usually have a need for either a frontend or backend developer specifically. You need to make sure you get clarification about what kind of developer they are really looking for and sometimes either they don't make that clear or it gets lost in translation before the job requirement is posted. I have seen this happen many times (internally) and it is frustrating.

Demand and Trends (2019)

Another obvious question to ask is: who is more in demand? Increasingly, more complex programming has been moving to the frontend of applications. Whereas the majority of the logic in enterprise applications used to occur on the backend, now there may be tons of business logic (code that might deal with complex business rules) on the client side.

There is so much more code on the frontend now, I have a friend who often says he is best at "middle-end" which he considers the glue and architecture to structure the frontend code and organization of how the frontend talks to the backend.

Not to say there is not a lot of demand for skilled backend developers. In many ways the surface area of backend development is still larger (it touches ops, networking, authentication, databases, etc). But with the speed that JavaScript is moving and the increasing complexity of frontend applications, it is hard to say that one is harder than the other. In my experience I have seen a huge demand for React developers and not enough experienced programmers to fill the sheer number of roles.

I am writing this in 2019 and it seems like for the last couple of years every company has been re-writing their UI in either React or Angular (mostly React if you believe Google Trends) and there are just not enough people around to do it.

Okay, but what about "full stack" developers?

So here is the secret about fullstack developers: they can usually do both sides of the tech stack, sometimes even well, but I think that 99/100 will have a strict preference and be better at either backend OR frontend.

Using myself as an example, I have way stronger backend skills. But because I am so interested in building my own products and being able to ship complete things I stay up to date with my frontend skills. I know React, and I have written tons of UI code. I'm not the best at CSS but I can get the job done. However, I am way better and faster at designing and building backend systems and architecting data structures, and I find it more fun in a lot of ways.

So yeah, I learned React and Redux, and I can ship full applications all by myself. But if I am working on a team (which is basically always), I tend to do the backend work.

Finally, I will leave you with a tweet that basically explains what being a fullstack developer means for most people.