Programming Beyond Frontend Web

October 10, 2024

From all software stuff, the thing that gives more joy is building user interfaces. Maybe it's because I love the immediate feedback of coding something and watching it display right away. Maybe it's because I enjoy good design, color combinations, and element composition. Not sure. It's also very similar to the kind of joy I get when I build hardware. When I connect some cables to a microcontroller and see an LED blinking feels good. So maybe it's because it makes software something a bit more tangible, and I feel that I can control it.

I have been working as a web frontend for some time now and it still feels good to write some HTML and CSS to build some ideas, but I'm currently more curious about different ways to express software as a user interface. Different ways to paint pixels into a screen.

Don't get me wrong, I still enjoy writing JS and playing with CSS to make things look the way that I want but nowadays other topics wake me up early in the morning.

I started my career 7 years ago as a web developer. I would wake up early morning to learn all the known tricks with CSS. During my night I was reading books about the inner workings of JS and Web. I was hooked! Shaping websites to look the way that I wanted was some kind of drug for me.

In 1 year I learned about creating an atomic design system to compose UIs in a more granular way. I also learned about the BEM naming convention to give better meaning to CSS classes used in the HTML templates. I discovered how to make my CSS more modular and scalable with the SMACSS style guide. I enjoyed that time and my motivation during those early years. I jumped into SASS and did all that thing as well.

Hungry for more knowledge, I jumped into the Javascript hype train and learned all the frameworks that were available at the moment, React, Vue, and Angular. I slowly started adopting some of those technologies in my projects and finally, I got hired as an Angular developer. Since then, Angular has been my main source of income for the past 5 years.

Sometimes, Angular feels like the correct tool but most of the time it just feels slow to make progress and it also feels slow to run. It also feels overly complicated for no reason. However, my curiosity didn’t die there, I kept learning other, more simple, frameworks or libraries like Svelte, Vue, and Solid.js. I found those new technologies fun to learn at first but it becomes overwhelming pretty quickly because they end up creating a very complex and obscure ecosystem that feels like black magic and nobody understands how it works under the hood.

The industry moves very fast and one has to keep up to date. I still do, but not for the joy of learning, just for the sake of keeping myself employable. Every couple of months (or less) the way of doing things in these frameworks changes and everyone moves blindly to try to keep up. Then we spend a bunch of time refactoring and fixing all the tooling for building, testing, and deploying the app that is now "obsolete".

I have started to slow down my progression in learning the new ways of web frontend. It is kind of hard to stay up to date with the latest and fastest framework and the new shiny way to do JS bundling. Styling is now preferred with Tailwind but, by the time I start learning it, there will be a new one that shinier and better (or just more popular). Currently, the hot topics to learn are, how to render JS from the server to allow for faster loads of websites and new JS runtimes that promise to be faster and more secure than Node.js. All of these things sound interesting but I know that is not something that I want to pursue. Maybe my 20-year-old self would be super psyched to wake up early to get up to speed with those technologies, but not anymore.

In my search for the next big thing that I wanted to focus my learning journey on, I stumbled upon the handmade community, especially the handmade hero video series by Casey Muratori, where he goes and creates a full video game completely from scratch. This different angle to developing software was refreshing for me and sparked so much curiosity and motivation. Another site that I found and I’m now a huge fan is the codecrafters community. It is just a collection of challenges to build software from scratch or recreate software for learning and enjoyment.

I have discovered that I enjoy doing this type of lower-level stuff, like creating a video game from scratch, writing code for the game engine itself, or creating terminal user interfaces for tools. The only thing that continues to be the same, is my excitement building user interfaces. I feel that rendering pixels on the screen, in the way that I want, and making them interactive is my real passion under the hood, no matter which medium, technology, or platform.

I want to stop looking for external influences on what to learn next and start looking internally at what makes me happy and what sparks more curiosity in me.