This article first appeared on Boot.dev
So you want to get into web development, and you keep hearing about "front-end" and "back-end" positions. The question is, which should you learn first? As someone who's held both front-end and back-end positions, and even been a hiring manager, read on and I'll give you my thoughts.
There isn't a right answer, but there is a better one
To be clear, it's the wild west out here. In tech, as long as you're willing to put in the reps, you can teach yourself to code and get any kind of programming job that you want. However, your learning path and career trajectory will be much more efficient if you're smart. And with that, we come to the most important factor when deciding whether to learn front-end or back-end first: Which do you like more?
Which do you like more? Front-end or back-end development?
Because you can start with either one, the most important question is "what do you enjoy most"?
If you like building user interfaces (buttons, animations, dropdown menus, that sort of thing) then you might prefer front-end work. On the other hand, if you like data, networking, clever algorithms, and systems architecture, you might really love a back-end role.
The beautiful thing about web development, is that even if you specialize, you can always make a change later! Just because you start by becoming a back-end engineer, doesn't mean you can't become a front-end developer later... which is a good thing, because that's exactly what I did!
There are more back-end positions out there
If you're a bit on the fence, maybe you don't have a strong preference for data or for visuals, then the next things to consider have to do with the state of the job market. According to the last StackOverflow developer survey, 43% of developers have back-end responsibilities, while only 26% have front-end duties.
There are simply more back-end devs out there, which means there are more positions that you yourself could potentially fill.
Back-end positions pay a bit more
Again, we can take a look at the latest Stack Overflow data to see that back-end positions pay a median of $150,000 in the US, while front-end positions pay about $133,000. I don't think this is the most important data point to base a career decision on, after all, the numbers are fairly close.
It's important to keep in mind that there are plenty of individual front-end devs who earn more than individual back-end devs, we're looking at median salaries here. Again, money isn't everything, and the numbers are close, but the primary reason we show up to work in the morning is for that sweet sweet cash, so you should be aware of this data. If you're curious about how much software engineers earn in general, read more here.
The tech-stack for front-end is smaller
One point in favor of starting with front-end development is that the amount of technologies you need to learn is fewer, at least by a bit. For example, the critical technologies and concepts for many front-end devs include:
- HTML
- CSS
- JavaScript
- React (or another modern framework)
- HTTP APIs, basic networking
Becoming a back-end developer is a bit more involved. You need to learn things like:
- Golang (or another back-end language like JavaScript, Python or Java)
- Databases, like SQL or Mongo
- HTTP APIs, basic networking
- Algorithms and Data Structures
- Systems thinking and architecture
- Basic devops skills, like deployments and infrastructure
I'd estimate that it takes about 25% longer to learn back-end development than front-end, but that's a rough estimate. I believe it takes between 6-12 months to learn the skills you'll need for a back-end job, so learning front-end can probably happen in as little as 5-10 months.
The competition for back-end positions is lower
I wish I could find better data on this, if you know of a more quantitative resource I can cite here, please let me know. That said, at the last 4 companies I worked at, if we opened a position for front-end engineers we were getting 100+ applicants. Conversely, when I opened a position for my own back-end team, we would get about 20.
My belief is that due to the slightly shorter learning path to becoming a front-end dev, the majority of entry-level programmers go that route. It's important to understand, because it means that if you decide to take a back-end learning path you'll have a higher chance of placement at the end.
Front-end work will give you more exposure to users
Once final point I want to bring up in favor of learning front-end development first is that as a front-end developer you'll get to interact more closely with users and the end-product. There are 2 main benefits to this:
- If you ever want to start your own company, you'll already have experience with product design
- You'll have more chances to interact with the non-engineering side of the business
Like I mentioned and the outset, the most important thing when deciding if you should learn front-end or back-end development first is which do you enjoy more? What interests you? From there, I hope that some of this data can help you make the decision that's best for you, your career, your family, and your future. Good luck!
Top comments (10)
Good article but frankly it's the question that is wrong.
The better question is the one you offer:
For example I am a backend develper, meaning that my CSS skills are like -42. I'm neither good at it, nor I would enjoy learning about it. Which in turn means I could learn it, but much slower than someone who is more visual that I am.
So even if front-end positions would be paid more and more interesting, it would still be worse for me to focus on my weakness than to focus on my strengths and my desires.
I like this part: my CSS skills are like -42. LOL!
It's funny because it's true :)
Frontend is way more complicated, since users have different opinions, flavours, impairments and so on. There will always be someone on whom your current frontend will fail. In turn
Backend in contrast requires much bigger knowledge on algorithms, security, database, architecture etc. and your code can lead to much bigger consequences than just this particular user who isn't satisfied with the usability, accessibility or design of your frontend.
Front-end more complicated? I tend to disagree.
It's important to remember that at most companies, front-end developers do not design the front-end - they just code it. Companies that have more than just a few people have UI/UX designers that pass off the requirements to developers. Developers just have to build it typically.
It might not be more complex than backend, due to the reasons you already mentioned. However, it becomes way more complicated when users disagree with the frontend your company provides to them. And if this implies changes in UX then this implies also changes in code as well.
From my experience, the backend was already fixed when we had the third iteration in the frontend and had many more to go....
Absolutely. If what you meant was "the front-end needs to change more rapidly" then I agree 100%
I would say both. Building complete fullstack app gives a big satisfaction and will boost your motivation.
Plus, for frontend dev some knowledge about backend is really beneficial. And vice versa, for backend dev a bit of frontend knowledge would also be a plus. Really helps with team work and understanding each other better.
Backend kind of requires that you stick to a long term goal, whereas. You're going to retouch your code in the frontend a lot more due to the sheer changing requirements from customers. Having a well thought out design and foresight is kind of a key objective in the learning category for a backend dev.
Good article