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
- find #include C++
- join the #include discord channel
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.
-
Follow Jason Turner on YouTube https://youtube.com/c/lefticus1
-
Check out his best practices on GitHub https://github.com/cpp-best-practices/cppbestpractices
-
If you are looking for a course, take a look at Kate Gregory’s material on pluralsight. https://www.pluralsight.com/courses/cplusplus-fundamentals-c17
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
- CppCon 2015: Joshua Gerrard “The dangers of C-style casts” is a nice 5-minute talk to get started with.
- CppCon 2015: T. Winters & H. Wright “All Your Tests are Terrible…”
- ITT 2016 – Kevlin Henney – Seven Ineffective Coding Habits of Many Programmers
- CppCon 2016: Howard Hinnant – A <chrono> Tutorial (it’s about time)
C++ resources
- https://abseil.io/tips/
- http://ericniebler.com/
- Fluent C++ – Jonathan Boccara’s blog
- https://www.youtube.com/c/Cppchat
- http://cppcast.com/
- Jason Turner’s C++ Weekly
More general resources
- Kevlin Henney is a great speaker on many topics, check him out, also on youtube.
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.
- https://channel9.msdn.com/events/CPP/ the cppcon conference produces over 100 recorded talks ever year!
- https://www.google.nl/search?q=youtube+cppcon
Other things to do
- read the manual cppreference.com
- watch the conference video’s! there are many many hour of premium content available online, free of charge
-
read books (really!), I recommend, in order:
-
good references
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.
-
join communities
- https://stackoverflow.com/ is an excellent place for discussion and to ask questions
- join cpplang on slack
List of conferences
- https://cppcon.org/ (student discounts)
- http://embo.io/
- http://cppnow.org/
- https://cpponsea.uk/
- https://meetingcpp.com/
- https://codedive.pl/ (free!)
Meet dutch C++ people at local groups:
Good talks on slightly more advanced topics
- CppCon 2017: Ben Deane & Jason Turner “constexpr ALL the Things!
- CppCon 2016: Ben Deane – Using Types Effectively
- CppCon 2018: Robert Ramey – Safe Numerics
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
- https://www.kylegalbraith.com/learn-by-doing/volume/36/how-do-you-feel-about-cplusplus.html
- https://news.ycombinator.com/item?id=18814697
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.
Tweet