

Discover more from Code Like An Investor
"Should I get into frontend or backend development?"
This is a question many software engineers ask themselves. It is also a question many software engineers ask me. I have an answer and it may surprise you. Let’s take a look at what the web was, what it is now, and what would be the best investment to make.
A web history
For a moment, travel back in time to the early aughts. The dot-com bubble has burst. Broadband Internet connectivity is now becoming more common, but dial-up is still around. Apple AirPort is what people will someday soon know as WiFi.
The first of the browser wars is over. Internet Explorer is overwhelmingly dominant. There are web standards, but they are frequently skipped because of this dominance. A limited developer toolbar in Internet Explorer exists. Most software engineers do not even know about it.
JavaScript is a mess. Nobody wants to touch it. At most, you use it to do the most lightweight client-side validation. You do as much as possible on the backend, because at least you can control the execution environment.
Yet, the backend is not a promised land either. Languages like ColdFusion, Perl, and PHP make it easy to write and run backend code, but they are lacking.
Java and .NET have unit testing tools, linters, and debuggers. But getting a server that can run all this is not cheap. Even if you can afford the server to run it, using Java for a brochure website with a contact form is overkill.
Content management systems like WordPress, Drupal, and Joomla are becoming available. All are written in PHP. This backend-first development continues until jQuery appears.
jQuery helps everyone write cross-browser Document Object Model (DOM) manipulation code. Software engineers start learning more about how the DOM and CSS work together. Frontend code starts getting easier.
A web present
Today, the frontend and the backend have framework choices. So. Many. Choices.
On the frontend, we have Angular, React, Svelte, Vue, and even more frameworks built on top of those. The backend has Rails, Django, Laravel, Next.js, and countless alternatives. All these frameworks can be unit tested, linted, and debugged. Continuous integration environments are easy to set up. Frequently, they are free for open-source projects.
With WebAssembly, you can write code in any language you wish and then use it in the browser. With Docker, you can set up your server with the exact versions of languages and tools you want. You can make anything you want with almost any tool you want.
With so much choice, where do you go from here? What what do theses technologies have in common?
Making a safe investment
Getting tagged as a "frontend engineer" or a "backend engineer" can be a difficult label to shake off. You may manage to brand yourself as a "fullstack engineer." When you do, people almost immediately ask "yes, but which way do you lean?"
Keep resisting the labels. The best investment you can make is in the layer between backend and frontend.
Consider the following technologies:
HTTP
Cookies
JSON Web Tokens (JWT)
REST
These all have both frontend and backend components to them. Knowing how authorization for a REST endpoint works over HTTP is universally useful. And the same goes for cookies versus JWT. You can also explore GraphQL as a replacement for REST. Regardless of whether you are a fronend or backend engineer, you can learn about OAuth. Implementing OAuth will make it easier for people to log into your site.
Digging deeper, you can learn about how Domain Name Service (DNS) works. Understanding DNS opens the door to understanding how Content Delivery Networks (CDNs) work. Having an understanding of how CDNs work can help you know when to use one.
Ultimately, implementing a CDN can help both your frontend and backend. Load will be kept away from your backend. You will not have to make extra sacrifices when building your frontend assets.
Invest time in learning about the layer shared between the frontend and the backend. It is knowledge that will always pay off. Learn about it before learning the latest frameworks. Once you have made this investment, then dig deeper into both frontend and backend tools.