Should a front-end dev know back-end technologies?

Front-end and back-end devs argue about what the endpoint should return.

Let’s start from the beginning. Back in the days, there was not much front-end at all. In web development most of the webpages were based on ancient technologies such as PHP (in older versions) and jQuery with some HTML and CSS on top of that.
Well, things haven’t changed that much since then… Just think about it for a second, PHP was serving data and we used HTML and CSS to display it. Many projects used jQuery to do fancy animations and maybe some XHR work. Does this sound familiar?

I am a front-end developer who loves new technologies and clever approaches. I want to show you why knowledge of back-end technologies is so important in our work.

Data, graph

Do you remember times, when PHP and jQuery were at the top? Well, back then the competitor’s scene wasn’t any big, which is probably the reason why they were at the top, but what I am trying to point out here, is that time there wasn’t a clear division between back-end and front-end.

The division has already been made. Is it good for us?

Nowadays, we have two divided groups. We consider ourselves as front-end or back-end developers, but have you ever thought about the consequences of such division?

Now, I want to focus on all my fellow front-end devs. Let’s talk about “the dark side”. It’s truth that the front-end has evolved a lot since golden days of jQuery. We are playing a different game now; new rules apply, and the old ones no longer exist. We are the front-ends, and they are the back-ends. Simple as that. However, some of you still may ask, “why should I even bother about the back-end”, after all we have great technologies like headless things, API generators and more, so why I should learn back-end? Do you need some REST API? No problem, use strapi and click-out one for yourself! Don’t you think it is superficial thinking?

We all know the phrase “done is better than perfect”, but we still fall for this. We want to do our jobs perfectly. The same thing applies when we are learning something. Unfortunately, the back-end, same as the front-end is an extensive topic; you can’t master it in one or two weekends.

I am telling you this because when you start digging and you realise how many things you must learn about the back-end, it starts to be really overwhelming, and that’s a good reason not to event start learning.

The back-end is great. It does a lot of job for us. We don’t need to care about complex business logic, resource-intensive calculation, or sometimes really weird data manipulation to get that final JSON object we want to work with. Some may say this is the perfect scenario, and we all must deal with legacy code and projects with messed-up responsibilities, and I agree! Instead of crying over spilt milk, we should ask ourselves why such situations take place. Well, it could happen because some front-end guy didn’t know the responsibilities that the back-end should have, and he put all the business logic into his frameworks components.

So how not to be “the bad front-end guy” and what other benefits do we have by knowing the back-end technologies and solutions?

First, let’s ask ourselves what is the most common thing we all do in our jobs. Well, handling APIs, right? Sometimes we need to cooperate with our back-end fellows during the design process of the API we are going to consume. We should start our learning by reading about REST. If you are not familiar with that, I strongly advise visiting this page and reading more about restful API.

With this knowledge, we can participate in the process of designing resources, endpoints and we can clearly state what we would like to send or receive.

As front-end developers, we are very lucky that JavaScript is also used on the server-side. You should definitely check NodeJS if you are interested in learning your first back-end technology. Other popular choices are Python or (yes!) PHP in its newer versions.

Time management is challenging, especially when it comes to managing your own time. I can imagine a situation, when you want to learn new back-end technologies, or face some back-end approaches, but you are always short of time.

What to do?

JS is an enormous environment, and it still growing. It was more than certain that sooner or later some kind of division would happen. According to Brad Frost’s post we can emerge two groups of front-end developers; front-of-the-front-end and back-of-the-front-end.
We know how complex a JS app can become. We often split our code into various catalog structures, and we tend to separate the views components from the components that handle the logic. Some of us prefer creating beautiful views, components and working with the design team, while others prefer writing logic, state and API services. If we look closer at the back-of-the-frontend, we will notice that it has a lot in common with back-end technologies. The front-end app also needs docker, well configured static analysis tools, properly set up the testing environment, or usage of external libraries, which sometimes can be tricky to implement.

There are plenty of opportunities to get closer to your day-today-day back-end work. Learning all those challenging things makes us better programmers. The better we are, the more value we bring to our team and the project we participate in.

In summary

As programmers we cannot learn everything by heart. The amount of knowledge we can absorb makes it impossible to know and remember everything. It is even more impossible to know everything from in a specific field, whether the front or back-end side, or any other area you are mastering. By learning something, even the smallest thing, we create a dot in our brain. Later, when we are coding, we connect those dots, which results in some variables, if statements, functions, design patterns, etc. until we have the final product. So you may ask what makes a programmer a good programmer. In my opinion, it is the number of dots you can connect. More things you are familiar with means more connections you can make, and it doesn’t mean that you must know everything perfectly.

--

--

Kacper Orzechowski
VMLY&R Poland | Technology Centre of Excellence

Software engineering @ VMLY&R. Front-end enthusiast, loves open-minded thinking. Passionated about Software Architecture, Material Design and Game Dev.