Frontend? Gross. This Is Why I've Always Preferred the Backend
Tags: webdev, backend, go
Published: 2023-07-10 15:54:00


As a kid, I always wanted to be good at drawing. I practiced drawing my favorite anime characters, but frankly, my mom was the only one who thought they were good.

Fast forward roughly 18 years, and I'm a college graduate with a computer science degree looking for my first role. I had a part-time full-stack developer job in college, but I wanted to work at a larger company and specialize on one side of the stack for at least a few years. I built a few websites in college, and I found that I would spend roughly 50% of my time on the *entire project* just tweaking CSS.

**The worst part?**

*The sites all looked like ass anyways.*

My decision was made. I wanted to [become a backend engineer](https://boot.dev). Let's talk about some of the other factors that impacted my decision.

## I love building my own stuff, sans the UI

I *hate* UI design. You know, sitting for hours, tweaking bloody CSS classes, and the result? A site that makes most 90s GeoCities pages look like a Van Goph.

It was then I realized that I could just make the command line my best friend. When you [build backend projects](https://blog.boot.dev/backend/best-backend-projects/) and CLI tools for developers, you *never need to build a UI again*. Developers *prefer* CLI tools!

It’s not about giving up, it’s just about recognizing where my strengths and preferences lie.

## Building tools for developers makes you a better developer

If you think about it, everything you build as a backend developer will be used by other developers! That means you have a fantastic feedback loop where your peers and mentors are telling you how to hone your craft, every single day.

* Building a REST API? Front-end devs use it.
* Building a CLI tool? Other developers use it.
* Architecting a database? Other back-end developers use it.
* Choosing a [backend technology](https://blog.boot.dev/backend/top-backend-technologies/)? Other developers on the team will integrate with it.

And trust me, the feedback from other developers is rarely sugarcoated. There are no [shit sandwiches](https://www.urbandictionary.com/define.php?term=Shit%20Sandwich).

They’ll tell you if your tool is a diamond in the rough or just plain rough. It's an opportunity to learn, improve, and ultimately, become a better developer.

## My favorite question: "Is it possible?"

I've always been more invested in *what can be done* rather than *how it looks*. Function over form, at least from an engineering perspective.

Fancy buttons and interactive graphics are cool, but I'd rather geek out about:

* Can we translate all these tweets into Japanese in real-time?
* Can we reduce our cloud bill by 50% if we use this database?
* Can we cut the page load time in half?
* How can we architect our backend to simplify the code required for email, sms, discord, and in-app notifications?

## Scalability and performance

I love thinking about scalability and performance. There’s just something so satisfying about planning, creating, and optimizing systems to make them perform better, handle more traffic, and grow as the business and use cases grow. It's so nice to work on something that can be measured concretely.

* I reduced latency by 50%.
* I improved throughput by 200%.
* I reduced our cloud bill by 30%.
* The system can now handle 10x the traffic.

You get the idea. It's easier to explain the value of your work when you can quantify it. It sounds more impressive to the boss than "I moved our vanilla CSS to Tailwind".

## JavaScript kinda blows

Let's switch gears and talk about JavaScript.

It's unbelievably impressive that JavaScript has come as far as it has, you know, being the absolute cluster f*** of a language that it is. It's a [dynamically typed](https://blog.boot.dev/clean-code/reacting-to-programming-types-and-mindsets/) nightmare with legacy baggage that's been bolted on over the years. There are ways to work with it that are *less* bad, but it's still bad.

At the moment [Go](https://boot.dev/learn/learn-golang) is my language of choice. Static typing, fast compile times, a great standard library, and statically compiled binaries. It's a joy to work with.

The great thing about the backend is that you can kinda just pick your stack. *Use whatever you want!*

* Like Go? Use it.
* Love Python? Use it.
* Enjoy the borrow checker? Rewrite your backend in Rust.
* Like Java? You're wrong, but use it.

## Higher pay

And now, let’s talk about the elephant in the room: *money*. Moolah. Cheddar. Greenbacks. Benjamins.

Let’s face it, we all have bills to pay and I'm not ashamed to admit that I like money. So yeah, the pay advantage of backend engineers played a role in my decision.

According to [2023 Stack Overflow](https://survey.stackoverflow.co/2023/#work-salary):

* Backend developers in the US: $165,000
* Frontend developers in the US: $140,000

## You do you

I can confidently say that my preference for [backend development](https://blog.boot.dev/backend/frontend-vs-backend-meaning/) is not just a passing fancy. It’s a career choice driven by curiosity, passion, and yes, practicality. 

But remember, this is *my* journey. *Your* preferences in programming might be in creating sleek, dynamic web interfaces, or in developing the next big mobile app experience. And that's okay!

In the end, finding joy in what you do, whether it's frontend, backend, game dev, or something in between will probably be the best predictor of your personal success. Good luck out there.