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 and color combinations and element composition. Not really 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 a 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. to paint pixels into a screen.
I have been working as a web frontend for sometime 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
Nowadays there are other topics that wake me up early in the morning.
I started my career 7 years ago as a junior web developer. I was the only developer with a passion for building user interfaces in my team. They were all backend engineers with no motivation on learning CSS and I was consuming every possible CSS trick as possible. This was perfect for me because I had to design and implement all of the company's internal and external websites plus the core applications. I learned a lot during that first year.
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 really enjoyed that time and my motivation during those early years.
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 quick 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.
I have started to slow down my progression on learning the new ways of web frontend. It is kind of hard to stay up to date to 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 which is 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, specially 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.