How I am growing my technical skillset in 2022
2022-02-10
This year will mark my sixth year working professionally as a Software Developer. In the first 4 years of my career I found my growth as a dev quite organic. I would learn large amounts from my colleagues and from working on projects and maintaining older ones. As well as gaining exposure to emerging technologies via twitter and other platforms.
However, I recently (going into my 5th year) found myself knowledgable (some in experience and some in awareness) across the stack and technologies at my disposal when developing software. To the point that there was no longer a very clear path on how I proceed with my growth journey.
Computer Science
Reading
One approach I have taken is to try and understanding computing at a lower level, which I do find interesting too, so is not excruciatingly painful to learn.
I have mainly been reading through The Imposter's Handbook.
I found this really helping bridge quite a lot of gaps in my computer science knowlegde that I was missing, from being self-taught.
Covering topics like Big-O, Lamda Calculus, Data Structures and Algorithims, Computation, Complexity and Machines and much more.
I also found these new found learnings very helpful in my day job, where I have been working on a high performance database engine like application, so being able to crunch through data in the most optimum way and to understand where there are bottlenecks and why.
Video Explanations
Another great resource that I have been referencing and watching some explainers from is Computerphile on Youtube. Their videos are of a really excellent quality and are helpful in breaking down complex computer science topics into managable and understandable explainers.
Sometimes it takes some sinking in and some time later it will 'click' in my head, which is totally okay. It can be the case for me that I need to work through on a more true to life use case to properly understand some of the concepts.
An interesting video of theirs is how AES encryption works
Specialisation
As a Full-Stack dev, at this stage in my career, it has been suggested that I specialise more into Frontend or Backend development. Which is not really appealing to me, I enjoy being able to work at a good level across the whole stack.
The good news is you don't have to specialise into solely Frontend or Backend or at all if you don't want to. There are plenty of options however, and you don't need to give anything up to take on a specialisation. Near enough anything can be specialised, some common examples are Site Reliability, Cloud, Security, Performance, UX, Developer Experience and Management.
I found myself drawn to mainly Performance and Security, both of which I have dabbled with in the past. I am currently drawing a focus on Performance however, as this has some relevancy in my day job too.
So I will be digging deeper into the previously mentioned resources and trying to gain a better understanding of computer science concepts that will help me develop more performant applications.
My advice would be pick something you enjoy, one of the more fun challenges I have worked on this past year has been developing performance improvements into some applications and it is technically challenging and fun to wrap your head around these concepts. If you pick something you enjoy, you are more likely to learn it at a deeper level and continue to apply it to your work.
Learning Different Things
I also have quite a decent knowledge of networking and computers in general, and have used this to deploy small scale solutions for some business in the past. I have also been learning more in this area and experimenting with things such as Docker a bit more and learning more about Linux servers, reverse proxies and much more.
So whilst I am applying some of these skills only in my own home network, I am already seeing parallels of how this will be useful and add to my existing server managments skills.
Moving forward
In 2022 I will be focusing on my specialisation into Performance as mentioned, I will also be trying to take ownership of these aspect of our applications and looking for ways they can be further developed in these aspects.
There are other skills to being a developer, soft skills and management. I have not mentioned them in this post as this is more technically oriented, but there are also many ways that you can refine and build those skills in order to be a better rounded developer.