How to learn more as a C++ software engineer

Written by

in

A 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, and so on, but I was not really finding what I felt I needed. This is of course very subjective: the courses were good and I learned things, but I was not really satisfied with either the pace or the result.

Then, at some point in 2016, I found CppCast, 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.

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 those 10 days were a turning point for me. I met so many great people, and I was in awe that so many teachers were gathered in one place, easy to approach and talk to. And there were also many people just like me, all searching for more knowledge.

After my first conference I was hooked. I learned how the ISO C++ committee works, met members of SG14 (the study group focused on low latency), met Odin Holmes and learned about the emBO++ conference. In the months after, I visited more conferences and local talks, and retrospectively listened to all episodes of CppCast (well over 100 by then, approaching 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 had been there all along; I just did not know where to look. Below I list resources that I found helpful, starting with the best starting points, followed by what I hope is a useful set of links.

Getting started

So where to start? Say you want to learn more about C++, and let’s assume for the moment that you want to nerd out for the evening (so you stay at home rather than going out into the world and talking to people; that will be stage 2 🙂

Good starting points:

Join Twitter, you may ask? Isn’t that a little 2015? It may seem that way at first, but a surprising number 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 timeline interesting and on topic. Start by following @c_plus_plus and me (@janwilmans), of course 🙂 To get the most out of Twitter, it helps to follow more people: just click on @c_plus_plus, see who follows it, and go from there.

The #include <C++> community is very welcoming to everybody. Seriously, their goal is to be inclusive in all respects, and on their Discord server you will find knowledgeable people who can point you to new resources or answer questions directly. In their own words:

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

Watch talks from conferences such as CppCon, C++Now or Meeting C++

The links in this article are a rather arbitrary set. There is no particular order or purpose to them, other than to show you that the information exists. It really is out there: search on Google, search on YouTube, and ask around on Twitter about specific topics. Below I list a few that I particularly liked or found useful in my daily job.

Recommended talks

C++ resources

More general resources

Tips for tweeting and posting on forums

  • Ask questions! And when you do, explain what you have already done to explore the problem and why it did not get you to the desired answer or result. This gives context and avoids answers like ‘just google it’.
  • Use common sense and be nice. If you see a question you can answer, why not chip in? You may sometimes get it wrong, but that is OK; you will learn from that too!

Stage 2: meanwhile, in real life…

  • Go to a conference! (See the list of conferences below.) Conferences are the most immersive way to learn a lot in a short time.
  • If a conference seems too expensive, remember that volunteers and students often get special discounts, and some conferences even offer free access!
  • If you are employed, remind your boss that a conference is no more expensive than a regular course or training, and much more immersive and interactive. CppCon alone produces over 100 recorded talks every year:

Other things to do

These last two are not good places to start, but they are excellent references if you want to dive into the full details.

I got feedback from some of the great folks on the orange site that just reading books is not going to make you a good software engineer. They also asked: “All that stuff about variadic templates, metaprogramming, memory barriers and the specifics of memory layout: do you really need to know all that? Isn’t it too obscure and not used on a daily basis?”

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

Also worth mentioning: The 7 Habits of Highly Effective People is not about C++ at all; it’s about self-management, but it changed my life. Of course there are many other good books; these are just the ones I read that 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.

Pingbacks

Note from the author

This post got an unusual amount of attention. I would like to emphasize that it is a work in progress, and I may update it as I learn more.

Comments

Leave a Reply

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