When you use one programming language daily in your job as a Software Engineer, it's easy to fall into the trap of that language bubble. I want to show you how stepping outside your comfort zone and learning new languages and paradigms helped me grow as a Software Engineer.
Over the years I've transitioned from frontend developer to full-stack developer and even tried professional game development! In that time, I managed and mentored developers at different stages of experience.
Let's get right into it!
There are dozens of programming languages out there. In a lot of the cases we, as programmers, get fluent in one. Every so often, it's the first language we were taught in college or bootcamp. Maybe a more experienced friend recommended his favorite language to us. Or perhaps we had dreamt about making a specific type of software like video games and picked the most popular technology in the specialization. Once we land our first job, experience skyrockets.
When still in high school, I got more and more experience creating many toy projects. From simple games to more complicated ones like "2d game engine" as an Electron application.
Around that time, I got introduced to Elixir by one of my close friends. I remember I was binge-watching conference talks about it for a week straight. It got me so inspired. It's a backend language and frontend was my natural environment, so it wasn't an easy thing to grasp for me at that time.
Fortunately, functional programming, stuck with me.
It started a spiral of new languages' fascination. Over the years I had programmed as a hobby or professionally with Elm, ReScript (formerly known as ReasonML or BuckleScript), OCaml, Haskell, Scala.
And because certain concepts are more popular in different communities, it exposed me to so many programming architectures and patterns found in different kinds of systems like DDD (Domain-Driven design) or Category Theory.
Fast-forward to March 2022, when I left my job at jam.dev as an Engineering Lead. I decided I need a break to figure out what's the next thing I want to pursue in life.
Since my early days with programming, I was always fascinated with video games and computer graphics. Back in high school I was experimenting with OpenGL, later with ray tracing and during last year's Christmas I started implementing Physically Based Renderer in Vulkan and Rust as a side project.
During my first month off, I got back to that Vulkan and Rust project. Working on it, I came to conclusion what I want my next job to be: Graphics Programmer. But it's not an entry-level job if you don't have experience in this field. And because game development is the closest thing I could think of, I decided I'm doing to recruit to the local game dev company in Kraków where I live.
I asked my friends about learning materials, and immediately dove into the world of C++ and Unreal Engine! It took my two weeks to complete Tom Looman's Unreal Engine C++ course (which is incredible, I highly recommend it if you want to level up with Unreal Engine). I did a lot of reading about C++ and game development environment, made some simple game with SDL and after 2,5 months after quitting my Engineering Lead job I started my journey as Unreal Engine C++ programmer.
I was expecting landing in junior position, and I wasn't concerned about salary. Surprisingly, I met requirements for a regular level 🤯. It turns out, general programming knowledge and years of experience with different technologies build up quite nice job profile 😅
I'm no longer working at that company. I haven't renewed my contract after probation period. Therefore, I'm also not pursuing graphics programming as a career. But that's a story for a different time.
It's completely fine to deepen one technology or one programming language knowledge. It's totally fine to just have a 9-5 job that pays the bills. But if you aim to level up, I'm highly recommending trying something new to broaden your perspective.
You don't need to change your job, you don't need to ship products with it. Try to create something fun. You'll thank yourself later.
If learning new programming language gave you a new perspective or opened some doors, don't hesitate to share your story on Twitter!