There’s a point in your career when you ask yourself, “What should I learn, frontend or backend first? Which one is harder to learn? Which one is easiest?” Unless you find it exciting to work on harder things, the reality is that people tend to choose the easiest thing to learn…
And I don’t blame them…
Look, we live in a society where we want to do things in a fast pace manner as we want it all done by now. In fact, yesterday is late already nowadays. Think about it, if you are hungry and you want to get food, would you go to McDonalds or a fancy restaurant where there is a 30-minute waiting line for the next table available?
First of all, I won’t go to McDonalds.
Second, I won’t wait that long for the next table available.
However, I would go to another fast-food restaurant and get instant gratification, which is to eat food. If you are a McDonalds lover, you can still go there.
Where I’m going with this is oftentimes people choose the quickest and easiest option available.
This is no difference in the world of programming. Many people decide to learn the frontend or the backend, or sometimes both. However, since learning two many things at the same time is overwhelming, you decide to learn one thing at a time. If you are brand new to programming, the dilemma is: “Is it easier to learn backend or frontend?”
This is what happens…
Since you are not sure what to learn, you opt to try to learn a little bit of each. Let’s say you start learning a little bit of the frontend. However, you find it complex to learn. Then, you decide to learn a little bit of the backend and you start comparing the complexity of each.
If you can grab concepts easier of the backend, then you are going to stick with backend initially as your starting point of your career.
On the other hand, if it is easier for you to understand the frontend, then you are going to stick with the frontend.
If you are coming from the old school of programming, you might think the backend is harder to work rather than the frontend. If you are from the new school of programming, most likely the first exposure you had from learning how to write code is in the frontend.
Before we move forward, let’s define what old school or new school means for programmers. For the purposes of this blog, we are going to create this concept of old and new generation.
Programmers who started the coding journey more than five years ago from the date of this blog post are going to be categorized as old school programmers.
We are going to call new school of programmers whoever started their first few Hello World projects within less than five years from the date of this blog post.
If you think about this for a second, 5 years ago the frontend frameworks were becoming a trend. Although React, which was initially used in 2011 with Facebook, and Angular, which was started by Misko Hevery back in 2010, had few years under their belts, these frontend framework started to gain more popularity since 2015.
Before 2015, applications were built on C#, Java, PHP, among others. I’m not saying these programming languages are not used anymore. However, there is something they shared, and it’s that each served as the programming language of choice of the backend using frameworks such as .NET, Java Spring, Laravel, etc.
As a smart reader, you should not blindly rely on every piece of information you read nowadays. That is why I decided to get some statistics to validate my theory.
Since frontend frameworks weren’t as popular or non-existent in the past, unless you want to call jQuery library a framework, there was more attention on backend related programming languages. Therefore, many old school developers called backend development as the most important part of the application.
Because that’s where the core functionality of the application lies. However, the concept of software development has evolved dramatically since the rise of frontend frameworks and more competition in the marketplace of apps.
See, now software is much more than just putting lines of code in a project. It is much more than Create-Read-Update-Delete (CRUD) functionality in the backend. Software is also about providing a great user experience. It is about caring about faster than ever rendering load speeds in the client-side. It is about not opening multiple windows or tabs to display an application’s data…
… and I’m just touching the surface my friend.
Having said that, this evolved concept of software development requires more development of different aspects of a project, not just the backend, but also the frontend. This evolution makes the frameworks more sophisticated, hence, more challenging to master.
If you think so, go ahead and ask a backend developer to add a centered modal or popup in the UI. Don’t forget to tell them the width of the popup should be updated based on different devices, such as using a laptop, large monitors, smartphones, or tablets, aka, a responsive designed popup.
If you start thinking the amount of time spent making that popup work across different layouts, you will start seeing the level of complexity that comes with it, especially if you do this from scratch and avoid any frontend library such as Bulma, Bootstrap or Semantics UI.
If something doesn’t look ok, there is big trouble!
The UI is what users interact with, no wonder why it is called User Interface (UI), and whatever they see is whatever they will think of an application’s quality. For example, an application might have the most complex backend logic in the world that makes processes simpler, but if a user cannot easily interact with the main interface, all that backend development goes down the toilet.
At the end, nobody will use it if it is not easy to use.
I’m not saying the frontend is more complex than the backend. I’m not saying the backend is more complex than the frontend. What I’m saying is that a successful and profitable software is complex, and failure to develop any aspect of it can cost a lot of time and money.
Whatever aspect you decide to work on, whether it is the frontend or the backend, just remember there is another side of the development that is dependent on the other, and having the skillset to work on both will give you the ability to build and gain an understanding of all that goes behind a software.