Going Back to Fundamentals: C/C++ and Data Structures & Algorithms

The last few years, I’ve mostly been writing Python and JavaScript at work. Don’t get me wrong—these languages are versatile and powerful, perfect for a wide range of applications. But if there’s one thing I’ve noticed, it’s how easy it is to lose touch with the fundamentals of how computers work. Python and JavaScript abstract so much of the lower-level details, making it comfortable to code without ever digging deeper into the underlying mechanics of computers.

Rediscovering My Foundation

I have a master’s degree in automation and computer science, which means I’ve been exposed to the foundational knowledge that shape computing—everything from electrical and computer engineering to embedded systems, data structures & algorithms (DSA), and software design. In my university days, we wrote in languages like C, assembly, and Java, which built a strong foundation for understanding how systems operate at a low level. I even had multiple FPGA courses, where we wrote in both Verilog and VHDL, and ran C code on an ARM processor that utilized our FPGA designs to do the heavy-lifting of our applications.

But here’s the thing: when you spend years working in a specific area—in my case Web Backend, Cloud & DevOps—you naturally focus on just a subset of skills. And what you don’t use, you start to forget.

So, I’ve decided to take a step back. While the tech world around me is buzzing with excitement over AI and cutting-edge technologies, I’ve decided to return to the basics. There’s nothing wrong with riding the hype wave of the next big thing, but for me, I believe in the value of focusing on fundamentals that will always be relevant, no matter how much technology evolves.

The Plan: C/C++ and Data Structures & Algorithms

First on my list is C++. Why, you might ask? For years, I’ve avoided C++. Even though I’ve had a good foundation in C from my university days, C++ always seemed too complicated—so many features, so much complexity. It felt like keeping up with C++ would be overwhelming compared to the simpler plain C.

But the truth is, C++ is used in many domains, from game development and high-performance applications to systems programming and even finance. It’s a powerful language, and I want to learn it—not necessarily because I’ll use it in my daily work, but because it will remind me and deepen my understanding of how computers operate, knowledge you can always make use of no matter what you are working on.

Many people are jumping on the Rust bandwagon these days, and while Rust seems like a great language, I believe understanding C and C++ will give me an even greater appreciation for what Rust brings to the table. Maybe I’ll learn Rust down the road, but for now, C++ is my focus.

In addition to C++, I’m revisiting data structures and algorithms. It’s been a while since I’ve had to seriously flex my DSA knowledge, especially since I’ve been in the same role and project for a while. The last time I was tested on DSA was during job interviews, and me working for a consultancy company where projects are long-term and we rarely switch clients & projects, it’s easy to get rusty. I always want to stay sharp when it comes to interviewing and foundational knowledge.

I still remember the basics—stacks, queues, linked lists, binary trees—but there’s so much more to it than that. DSA is crucial for understanding performance trade-offs, optimizing code, and problem-solving efficiently. Mastering it once again will make me a better developer, regardless of the programming language I’m working with.

Killing Two Birds with One Stone

One of the best ways to learn a new language is to apply it to a challenge, and that’s exactly what I’m doing by combining my study of C++ with DSA. By working through common algorithms and data structure problems in C++, I’ll not only learn the language but also refresh my algorithmic thinking. Having once learned C at university, my background will definitely help, and I expect that, at least at first, I’ll probably write more “C-style C++” sticking with the basics while gradually incorporating C++-specific features as I get more comfortable.

Conclusion

This is a journey I’m excited to undertake—rediscovering what made me passionate about computing in the first place. Focusing on the fundamentals might not be the trendy choice right now, but I believe that focusing on these core skills will always serve me well, even when our industry is constantly shifting and evolving.

If you’re feeling overwhelmed by the rapid pace of technological change, it’s perfectly fine to take a step back to focus on the basics. These core skills won’t go out of style anytime soon, and they’ll continue to serve you, no matter where the future takes us.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.