What I'm learning in 2024
Engineering is an ever-expanding ecosystem.
Learning different frameworks, libraries, tools, and technologies is not just akin to accumulating points for a showoff (although that’s cool, considering how many possibilities exist today), but rather a journey to gain valuable insights, becoming a better engineer, and continuously learning the principles of shipping better product.
For me at the end, it’s about choosing the right tools to craft and deliver superior, fast, and resilient products for my users, which often times than not means leveraging the ecosystem, upskilling on the ecosystem and staying upto date with the ecoystem.
So here’s my ambitious plan to what I’m learning in 2024:
UI Frameworks
I think it’s the inevitable one for me. As a Frontend Engineer, leveraging the framework and it’s features is my most prominent responsibility, after all I need to architect a better product.
Astro
In the war of frameworks, Astro has won big time for me!.
The simplicty of writing just plain old HTML while still leveraging the expressiveness and ease of composing user interfaces using my preferred libray React is just special.
It’s fast, easy and the architecture just makes sense when you think about it.
Not having to worry about the lack of useful development packages is just another cherry on top for me. I can leverage React’s ecosystem whenever I need to, and work with plain old HTML otherwise.
Also, let me be honest, creating and importing a direct HTML Component just hits different. No VDOM, no love child like JSX, just plain old HTML 💘.
Fun fact: The site you’re currently on is also built using Astro.
Remix
As someone who enjoys learning new things on web, one fact still prevails for me today: finding myself consistently returning to the fundamentals, reconnecting with Web Standards.
Whether it’s for interview preparation, reacquainting myself with forgotten topics, or exploring newly introduced Web API’s. The foundations of web is crucial and inevitable.
Remix, as a fullstack web framework, stands out in its remarkable utilization of these standards. It seamlessly integrates a bundler, HTTP handler, server and client framework, making it versatile to build and be deployed anywhere, thanks to its adherence to web standards.
Take forms for start, who knew forms could do so much 🥹 ?.
Having worked with Next.js already, I think learning how to leverage Remix and understand it’s differences with Next.js and it’s leading React Server Components first paradigm, will help me make better decisions for building application at the end of the day.
And to learn Remix, you need to learn the web standards first, which only means getting better as a web developer in long run.
Blockchain
As much as I enjoy working on the Web, expanding horizons and experimenting with newer technologies has always been my guilty pleasure.
Be it networking, databases or devops, the goal never is to master the technology, but to get a broader view of building applications end to end.
Learning beyond my primary field, often helps me bring in new ideas, ways to approach solving a problem, or in general help build product with better planning and responsibiity.
I look forward to learing the following this year:
Solidity
To make a full stack DApp, you need a smart contract for writing and getting information from the blockhain. Solidity is the language required to build smart contract on EVM chains.
Honestly, having worked with Javascript and Typescript for so long, I do defnitely look forward to learning a “actual” statically typed lanaguage to say the least. 😅
DApps
Blockchain as a technology is quite fascinating to say the least. With an extremely ambitious goal of transforming the web forever (Web 3.0), it surely has been the most talked about topic in past few years.
But as a Frontend Developer, I’m mostly interested not the core technology itself, but building full stack applications which leverages blockchain (often called DApps) based the distributed architecture of EVM chains.
The idea of being able to communicate with a smart contract deployed on a peer to peer network and building really resilient user experiences on top of that despite it’s challenges is definitely a challenge worth exploring in my books.
With my current Web 2.0 skills, I think it’s only fitting to understand how all pieces in Web3.0 comes together.
Testing
No matter which field or company or product I work in, making sure my code is reliable and bug free is something which is important to me and I can’t ignore.
Although, I always leverage static analysis tools like Eslint, Typescript to catch bugs early on during development, which debatably makes a ton of unit and integration test unnecessary, but having an safe-guard to your code through robust testing never hurts.
To level up as a Senior Engineer, it’s essential that the code I am producing is accounted and tested for giving me the confidence to ship faster and better.
Writing unit tests ahead of time or following a TDD approach, can be quite helpful in writing lean and composable units which make up my application predicatable.
Having most of my experience at only early and pre-seed startups, testing never got the primary attention from me, so I plan on filling my knowledge gap on unit and integration testing and learning more in depth about essentials like monkey-patching, mocking and stubbing.
I will be focussing on two tools:
Vitest
With more and more packages, now suporting ESM modules, it’s pretty clear that ESM modules is definitely the future for web and Vitest being ESM first, it’s a perfect framework to learn for testing your application code.
Don’t get me wrong, Jest is great tool as well and has served a great set of resources until now. But Vitest’s native integration to Vite and it’s plugins ecosystem, makes it extremely powerful, fast and is feature rich out of the box with almost zero configurations.
Moreover, it’s API being Jest compatable means learning skills are very much transferrable across both tools 😄.
Testing Library
As a Frontend Enginner, testing UI components is not going away from me. Testing Library is the friend you need when it comes to testing components in user-centric ways.
The more tests I can write which resemble the way my software is used, the more confidence I can have in shipping them.
So, I’m learning about DOM Testing Library and React Testing Library and upskill myself to be a better engineer.
Conclusion
I wholeheartedly endorse the concept of learning through hands-on projects. This approach has been instrumental in my personal development, as the accumulation of various small, diverse projects has significantly enhanced my skills.
The process of building from scratch, tackling random challenges, and ultimately completing comprehensive end-to-end projects has been a key factor in my continuous improvement and upskilling journey.
This year is going to be no different, I look forward to using the above mentioned technologies and building something I can see myself use in my other works.