Yesterday I made up my mind, I’ll learn C++. Properly this time. Seriously.

I’ve long pondered what areas of software I want to get into the most. It is still blurry but I know it is not CRUD applications and definitely not (dev)Ops. I’ve had enough of yaml files and bash and python scripts and clicking buttons on web UIs.

I concluded this post 1,5 years ago with a note that I should put my focus on lower level languages. I put some effort into learning to program in Go in the past half year. It went quite good too, I’m not disappointed with my progress. I am disappointed at the job market though. As of May 2020, there are very few open Go positions in Budapest. There might be a lot more abroad but I won’t be moving anytime soon - expecting a son in August this year.

C++ on the other hand is in very high demand.

There are many C++ jobs on the market and it’s crazy how many interesting branches of software make use of C and C++:

  • embedded systems
  • automotive software
  • game programming
  • operating systems and systems programming
  • compilers
  • scientific computing, simulations
  • fintech
  • graphics, rendering
  • image and signal processing
  • all kinds of desktop applications

I’m fairly confident about my PL knowledge and programming skills now. I’ve tried a good amount of langauges, seen things from different angles and built a decent understanding of the fundamentals. Now I need to learn how those things came together in Bjarne Stroustrup’s head. At first sight, C++ seems like a monster. Lots of different language constructs, syntactic elements and a good pile of legacy tooling.

The most important bits that I need to learn are:

  • where are the best documentation?
  • what constitutes the cpp ecosystem (dev tools, runtimes, libraries)?
  • how are 3rd party libs used in projects?
  • what compilers are the most popular and why?
  • how does the compiler and the linker work?
  • what is a “modern” style of cpp? (and what other styles are there?)
  • how do people structure their cpp projects?

So, in half a year (maybe less?), I want to be able to get at least medior level C++ jobs. We’ll see. I’ll be reading books, doing small projects, reading source code on Github.

Some reminders for future me: