Where do I code from here?

It's been almost 4 years since Tom MacWright wrote his very good essay Second-guessing the modern web, which questioned the norms we had in web development at the time.

Spoiler alert: we are still into the JS frontend stack consuming micro-services JSON API backends. But the economical and societal contexts in which we work have changed. A pandemic happened, then several hype tech cycles, followed by a harsh recession with inflation, and even war in Europe.

In this context, and for many other reasons, I think frontend web development will shrink, and fall back to more reasonable and maintainable technical stacks and philosophies.

The causes of my concern

  1. The recession we live in might force (is probably already forcing) teams to do more with less, make hard choices on what to prioritize. In every job I had, a lack of money meant focusing on backend business features instead of design and user experience, and hiring in consequence, which means not hiring frontend developers.
  2. I think JavaScript frontends aren't super well perceived anymore. After ten years, most orgs know about their lack of performance, cost of maintenance, reduced benefits, knowledge checks, dangerous and numerous dependencies ; and that could encourage teams to abandon them.
  3. Point 1 and 2 could also mean stopping with the separated frontend that consumes an API, and going back to backend monolithic stacks. They often are sufficient for most projects and prevent from building premature optimizations.
  4. A lot of backend frameworks have catched up. They have new features that swap HTML snippets or update values automatically with websockets, without writing any JavaScript (I kept a list here). Agnostic libraries that can do the same also exist, and are far easier to use than current frontend web stacks. Backend developers plebiscite them, which add to point 1, 2 and 3.
  5. Browser have new features that reduces the need of JavaScript stacks for user experience improvements: paint holding, back and forward cache, service workers, and soon the view transition api.
  6. Ready-made UI components libraries are often preferred to hiring a dedicated developer to build them, which is specifically my role. When I was looking for a job back in 2021/2022, at the height of the hiring craze, I got several rejections for this reason.
  7. With the rise of video, enclosed platforms, and chatGPT spam, it feels like the web is dying, and that my role as someone building content driven websites is disappearing.

Let's be clear: frontend developers won't be out of jobs tomorrow. There are thousands of projects to build, maintain, and update ; places where separation of frontend and backend is desirable ; big companies in need design systems ; and situations where a single page applications, or server side rendering with JavaScript routing and state make sense.

But still! I feel frontend web development as we do it now with its gigantic JavaScript stacks is not sustainable, especially in small to medium teams and projects, and they are my favorite projects and places. It just costs too much for very little benefits.

So what now?

As a result, I'm seriously considering slowly but surely steering my career to a more full-stack role. I never liked the full-stack denomination, because nobody can really be 100% competent on such a wide array of topics, a part of the stack is always neglected. But, at the start of my career, I worked with backend oriented full-stack developers, and they loved having a frontend oriented full-stack colleague.

I doubt it has changed, too many places struggle with design, usability, HTML/CSS/JS, but don't have a big enough workload on these topics to hire a specialist full time. Doing backend code in-between would fill this need.

Fortunately, I don't feel bad about this idea. Quite the opposite, it's exciting! I'm at a place today where I want to grow my fundamentals and discover new things that are not frontend related. I'm probably romanticizing it, but I want to understand how things work under the hood in a more computer science way.

I've never had the time, opportunity, or necessity to train my brain at things like abstractions, algorithms, design patterns, and I want to do it now. I also want to try new programming languages with stricter rules, to force me to think and plan ahead. I want static types, a bit of memory management, maybe functional programming, and let's be bold, why not a Lisp flavor, or totally go out of web related projects?

I just finished my first full time freelance gig and I plan to take a break for a few weeks. I'll try to devise a plan to achieve these goals during this period, and work from there. I'm probably gonna start with golang as the language of choice for my formation, but I doesn't mean I won't try other things. If you have suggestions of courses and books, feel free to send them to me!

Initially published: May 7th, 2024
Generated: May 7th, 2024