ndza

How I learn modern programming languages - Rust, Zig

Intro

One of the ways you can become a great software engineer is to keep up with modern programming languages. As a software engineer, you should look for opportunities at your current role to learn new things. It is also important to learn new things that are beyond what your current role demands. The curiosity and willingness to learn is vital, along with keeping yourself in touch with the evolving world of tech.

Sometimes you have to put in time outside of work. But, that is also scarce for me, so I have to be thoughtful about how I go about. I've found that the approach of spending just a couple of tens of minutes daily works well. It's about being consistent, with small but regular chunks of learning. Below I talk about learning Rust and Zig, as examples.

First Rust

I first tried out Rust around 2018, but I didn't get too deep and didn't give it too much time - I learnt a bit of Golang instead and used it to develop a tool at my workplace. My second attempt at learning Rust was late 2024. I knew that Advent of Code was coming up, and that presented me with a chance to get deep into Rust. I was participating in a private league (at my workplace), so the additional eyes meant that the accountability was there - I couldn't afford to be lazy about it or give up easily since I had already announced that I would be learning Rust. I find this form of motivation is extremely useful.

So, after a few days of learning the basics through reading materials, I dove into writing some Rust programs that solved aoc2024 puzzles. This to be a good way to dip your feet into new languages - the problem solving element makes for a good learning experience, rather than just reading materials. It's thrilling when you achieve the solutions to these puzzles and knowledge is cemented. This gives you confidence too, as the ability to learn and problem solve are able stakes for any software engineering role.

As the puzzles get harder though, the learning needs to fall behind, problem solving starts to dominate that much out of my limited time. That is when I usually end up not completing the entire problem set:

A screenshot of aoc2024.

My recommendation would be to use a decent IDE such as RustRover. (Back then, it was in beta I think, but still useful.) It means you get help going up the learning curve through auto-complete and doesn't defocus from the learning experience.

The next level for me here, is contributing to some real Rust OSS projects, after all, writing production code is different to the above toy programs.

Then Zig

The following year, at end of 2025, I decided to learn Zig. So, I followed the same recipe - reading materials and aoc2025. As the days went by and the problems got tougher, I had to focus less on the learning and more on the problem solving, so switched to Python, which my go to language for these things:

A screenshot of aoc2025.

Also worth mentioning, another great way to learn is through leetcode style of platforms. I'm regular on a fair few of them, to remain sharp, but only Exercism seem to support Zig. Their problem set is such food fun!

The tooling aroud IDEs is a little behind. I was able to use CLion with a ZigBrains plugin although with some quirks around debugging tests.

Zig has a bright future. After years of using C/C++, this language is such a breath of fresh air! And super easy to pick up too - unlike Rust. It's worth adding to the repertoire. So, I will definitely be looking for projects where I can build more experience.

Wrap up!

As a systems software engineer, Rust, Zig are newer, modern programming languages one should know. They can be learnt easily, as long as you can get past the first hurdle, which is to find a reason to learn them. If we then keep it fun and add some accountability, you'll have no excuse to give up easily. And before you know it, you'll have nailed the basics, reached some decent level and ready to build mastery over the language.

Good luck! xoxo (I write this as my oldest watches Gossip girl.)