How to learn more as a C++ software engineer?

I couple of years ago, I was looking for new ways to improve myself. I had done several trainings on C++, C#, software processes, communication, leadership, etc. However, I was not really finding want I felt I needed to improve myself. This is of course, very subjective, the courses were good, I learned things, but I was not really satisfied with the pace nor the result.

Then at some point in 2016, I found CppCast. This is a weekly podcast with news on c++ topics. Things started rolling from there, a few months later, I was a guest on cppcast myself. I learned about cppcon, a c++ conference (back then held in Bellevue) and convinced my employer to sponsor my travel, entrance fee and stay there.

Seattle, is a 10 hour flight from the Netherlands, but well worth it! I was there for 10 days, including a pre-conference course by Stephen Dewhurst. I still feel these 10 days where a turning point for me. I met so many great people, I was in awe that so many teachers were all gathered there, easy to approach and talk to. And also many people, just like me, all searching for more knowledge.

After my first conference I was hooked, I learned about how the ISO c++ committee works, I met members of SG14 (the study group focused on low latency), I met Odin Holmes there and learned about the embo.io conference. In the months after, I visited more conferences, local talks and retrospectively listened to all episodes of CppCast (well over 100 by then, going on 200 now). I also learned about other c++ resources, communities and peer groups.

Looking back, once I found ‘my way’, the community I was looking for was there all along, I just did not know where to look. Below I will list resources that I found helpful, starting with the ‘best starting points’, followed by with what I hope is a useful set of links.

Getting started

So where to start? What if you what to learn more about c++ and let’s assume for the moment, you want to nerd out for the evening. (so stay at home, not out in the world, talking to people, that will be stage 2 🙂

Good starting points:

Join twitter you may ask? Isn’t that a little 2015? While it may seem that way at first, a surprising amount of software engineers and teachers are on twitter! I can really recommend it and if you encounter content you don’t appreciate, just mute some accounts to keep your tweets interesting and on topic. Starting by following @c_plus_plus and me (@janwilmans) of course 🙂 To get the most out of twitter, it helps to follow several more people, just click on @c_plus_plus and see who’s following that and go from there.

The #include C++ community is very welcoming to everybody, seriously, it is their goal to be inclusive in all aspects and you will find knowledgeable people on the discord channel who can give you pointers to new resources or answer questions directly. In there own words:

IncludeCpp is a global, inclusive, and diverse community for developers interested in C++. Join our discord.

Watch talks from conferences for example: cppcon, cppnew or meeting c++ conferences

The links in this article is a rather arbitrary set, there is no particular order or purpose to them, other then to show you that the information exists. Really it is out there, search on google, search on youtube, ask around on twitter for specific topics. Below I list a few I particularly liked or found useful in my daily job.

Recommended talks

C++ resources

More general resources

Tips on tweeting and posting on forums:

  • ask questions! and when you do explain what you already did to explore the problem and why you did not get to the desired answer/result. This helps to give context and avoids answers like ‘just google it’.
  • use common sense, be nice, if you see a question you can answer, why not chip in and answer it. You may sometimes get it wrong, but that is OK, you will learn from that also!

Stage 2, meanwhile in real life…

  • go to a conference! (see list of conferences below) they are the most immersive way to learn a lot in a short amount of time
  • if a conference seems too expensive, remember that volunteers and students often get special discounts and some even offer free access!
  • if you are employed, remind your boss that its is no more expensive compared to a regular course/training and much more immersive and interactive.

Other things to do

These last ones are not good to start with, but it an excellent reference if you want to dive into the full details.

I got feedback from some the great folks on the orange page that just reading books is not going to make you a good software engineer. Also they mentioned: “all that stuff about >Variadic templates, meta programming, memory barriers and the specifics of memory layout< do you really need to know all that? Is that not too obscure and not used on daily basis” ?

There is absolutely truth in this. First of all: practice, practice, practice. Programming is, just like so many things a skill that is really honed by doing it a lot. Still the mentioned books are great. “A Tour of C++”, make sure to get the second edition that was just released, is only 256 (yes!) pages. I encourage you to read a few chapters and as soon as you found something new, do try it! Open up your favorite editor and try it out. Also by all means skip chapters that you find difficult, or uninteresting, read through the books to get a sense of the whole and return to the more difficult to grasp parts later.

Also worth mentioning, The 7 Habits of Highly Effective People is not about c++ at all, its about self-management, but it changed my life. Of course there are many other good books, these are just the ones that I read and really stuck with me.

List of conferences

Meet dutch C++ people at local groups:

Good talks on slightly more advanced topics

Funny videos about computer complexities

Take these with a grain of salt, yes there is truth to them, but you will probably never have to solve these problems yourself.

ping-backs

Note from the author

This post got an unusual amount of attention, I would like to emphasize that it a work in progress, I will update it regularly.