Resources
Welcome to my Resources section, a curated list of the books/courses/blogs/tools and websites I strongly recommend for improving your programming skills.
Please read that important disclosure:
Some of the links below are affiliate links, which means that I will earn a commission if you choose to make a purchase. This commission comes at no additional cost to you. Please understand that I have experience with most of these products/sites, and I recommend them because they are helpful and valuable, not because of the small commissions I make if you decide to buy something. Please do not spend any money on these products unless you feel you need them or that they will help you achieve your goals.
My Books
See all of my books:
C++17
I wrote a book about C++17 features! I believe this book might be a useful addition when learning about modern C++!
C++17 In Detail ebook @Leanpub
C++17 In Detail in print @Amazon
Lambda Expressions
I also published another book: C++ Lambda Story - it teaches lambda expressions how this feature evolved among different C++ versions.
C++ Lambda Story ebook @Leanpub
C++ Lambda Story in print @Amazon
Initialization Rules
In mid 2022 I released a book on Initialization in Modern C++:
C++ Initialization Story @Leanpub
My Interactive Courses @Educative
Initializing Data Members
Initializing Data Members: From C++11 till C++20
Throughout this course, you will learn all the options to initialize data members in C++ using a simpler syntax and safer code. More specifically, in this mini course you will learn non-static data member initialization, inline variables, designated initializers, and more. Additionally, you’ll see the changes and new techniques from C++11 to C++20 to really round out your understanding.
It’s a “mini-course,” consisting of 17 lessons, targeted towards beginners, approximately 3 hours to complete.
C++17
Thanks to the collaboration with the team @Educative, we published C++17 in Detail as an interactive course!
You can see it… and even preview it for free here:
It consists of 228 lessons, many quizzes, code snippets… and what’s best is that it has more than 153 playgrounds! That means you can compile and edit code sample directly in the browser… so there’s no need for you to switch back and forth to some compiler/IDE.
I think that such an approach increases your learning experience.
Books
C++
Book Title | Author(s) | Notes/Reviews |
---|---|---|
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 | Scott Meyers | - |
Embracing Modern C++ Safely | J. Lakos, V. Romeo, R. Khlebnikov, A. Meredith | My Review |
C++ Best Practices by Jason Turner @Leanpub | Jason Turner | - |
Modern C++ Programming Cookbook | Marius Bancila | My Review |
C++17 STL Cookbook | Jacek Galowicz | My Review |
The C++ Programming Language, 4th Edition | Bjarne Stroustrup | - |
The C++ Standard Library: A Tutorial and Reference (2nd) | Nicolai M. Josuttis, Douglas Gregor | My Review |
Discovering Modern C++ 1st Edition | Peter Gottschling | - |
C++ Templates: The Complete Guide (2nd Edition) | David Vandevoorde, Nicolai M. Josuttis, Douglas Gregor | My Review |
Introduction to Programming with C++ by Prof. Boguslaw Cyganek | Prof. Boguslaw Cyganek | My Review |
A lot of good books in the C++ Category on Leanpub: C++ @Leanpub.
And here’s also a handy list of book managed by community: A comprehensive catalog of modern and classic books on C++ programming language @Github.
Other
- OpenGL SuperBible by Graham Sellers and Richard S Wright Jr.
- Read my review in this post
- OpenGL 4 Shading Language Cookbook - Second Edition
- I was a technical reviewer for that excellent book!
- Systems Performance: Enterprise and the Cloud
- Foundations of Game Engine Development, Volume 1: Mathematics by Eric Lengyel
- [PDF] The Art of Assembly Language, Free online
- Software Engineering at Google @Amazon and also a free public PDF Version @Abseil Blog
Courses
Educative
Above I listed my courses at Educative, but I’m also using that platform to learn new technologies!
Educative is great platform for learning new coding skills. It has various interactive elements to courses - like playgrounds, animations, quizzes, challenges… or even whole projects and mock interviews.
I highly recommend using this platform.
See some courses and pages like:
- Decode the Coding Interview in C++: Real-World Examples - lots of real-life projects to experiment with.
- Python for Programmers - 31-hour skill path to teach you advanced Python, from start to finish
- Start here
- Get Handy Cheatsheets - C++, Python, Azure, AI, System’s Design, OOP and many more!
CodeCrafters
CodeCrafters revolutionizes the way you learn new technologies! Rather than going through tutorials, reading slides, or watching presentations, you jump right into a real-life software project! Learn by doing!
You can try building your own Git, HTTP Server, Redis, BitTorrent, Docker… or even more crazy technologies. You can pick from several programming languages (C++ is, of course, included!).
One of the most impressive features of CodeCrafters is its interactive process. You start by setting up your git repository, then gain access to a user-friendly CLI and automated tests. All you need to do is write code, test it, and commit once the tests are successfully passed. It’s a seamless and efficient way to learn!
You can try it entirely for free or get some Premium plans.
See more information at their website.
Pluralsight
My Recommended Pluralsight courses (that I’ve seen so far):
Bonus: from time to time you can get a decent deal, and get their subscription much cheaper.
General C++
- Play by Play: Modernizing C++ Code with Kate Gregory - a great interview, where Kate analyses a legacy project. She didn’t go very far, but it was valuable to see how to think in modern C++, what are some common code smells and legacy patterns.
- C++ Advanced Topics (by Kate Gregory) - it’s a long (more than five hours) course about good practice in modern C++: like avoiding raw new/delete, C-style patterns, plus of course advanced topics, like move, lambdas, etc. Good stuff with a great teacher.
- First Look: C++ Core Guidelines and the Guideline Support Library - (by Kate Gregory) - the course not only teaches how to work with the Core Guidelines but also Kate describes what modern C++ is, what are the advantages and disadvantages of the language and what is safe and expressive code. It’s an excellent material for refreshing the knowledge of modern C++. Useful for beginners and experienced developers.
- Practical takeaway: how to use not_null, what is modern and safe C++, consts, tools (clang-tidy, GSL library).
- C++ Fundamentals Including C++ 17 by Kate Gregory
- A very recent course from Kate. More than 5h of great programming course about starting with C++. If you’d like to start with C++ today, I suggest taking that course.
Design patterns in C++
About design patterns by Dmitri Nesteruk (also Pluralsight):
I like the approach of writing a live code with a simple pattern implementation. So you can see all of the details. Then, Dmitri is discussing the problems. The set of courses on Design Patterns looks like a good way to practice coding in C++ and start with Design Patterns. Still, I’d like to see more details of the implementation; maybe we can wait for the advanced version of this course someday? :) Plus, maybe a discussion about the use in a real-life project, disadvantages, etc.
- Design Patterns in C++: Behavioral - Observer To Visitor
- Design Patterns in C++: Creational
- Design Patterns in C++: Structural - Adapter to Decorator
- Design Patterns in C++: Structural - Façade to Proxy
- Design Patterns in C++: Behavioral - Chain of Responsibility to Memento
COM and Windows Runtime
Starting with Windows 8, we got WinRT, a powerful technology advertised as the core foundation for modern Windows applications. You can use it from different languages, also C++.
Keny Kerr (author of C++/WinRT, kennykerr.ca/, MVP) has created a bunch of courses related to this technology. You can understand COM and then move to WinRT (which is based on COM). That knowledge might be necessary for any programmer related to the Windows environment.
- The Essentials of COM
- The Essentials of COM - Part 2
- The Essentials of the Windows Runtime
- Windows Runtime Internals
Algorithms and Data Structures
- Using Advanced Data Structures in Modern Applications by Rasmus Amossen
Blogs
- Herb Sutter on software development
- Visual C++ Team Blog
- Simplify C++
- Fluent C++
- Meeting C++
- Modernes C++
- foonathan::blog() - Thoughts from a C++ library developer.
- Sy Brand’s Programming blog
- Musing Mortoray
- Vorbrodt’s C++ Blog - Practical Modern C++ - by Martin Vorbrodt
- Random ASCII
- Just Software Solutions Blog
- Vittorio Romeo’s programming blog
- Tomato Soup - Visual Assist Team Blog
- Red Blob Games articles - series of articles about algorithms in gamedev: pathfinding, ai, graphs, etc… all with interactive visualizations!
- Preshing on Programming
- The Old New Thing - Raymond Chen’s blog
- ACCU Articles - Overload
- C++ Weekly With Jason Turner - YouTube
C++ Podcasts
Active:
- CppCast - The first podcast for C++ developers, by C++ developers! Started and hosted initially by Rob Irving and Jason Turner, but since around 2022 restated by Timur Doumler and Phil Nash. New episode usually every two weeks.
- ADSP: The Podcast | Conor Hoekstra & Bryce Adelstein Lelbach (weekly)
- Two’s Complement (~monthly)
- C++ Club (biweekly)
Bookmarks
Some good blog posts that I’m often ask and I suggest them all the time:
- How C++ Resolves a Function Call by Jeff Preshing
- Learning C++ by Sy Brand
- C++ UI Libraries @memdump by Philippe M. Groarke
“Aggregators”
Sites
- isocpp.org - set it as your home page! :)
- Awesome Perf Cpp - A curated list of awesome C/C++ performance resources: talks, articles, books, libraries, tools libraries, sites.
- Codeproject.com
- Cprogramming.com: C and C++ Programming Tutorials, Tips and Tricks
- A trip through the Graphics Pipeline 2011 - Fabian Giesen’s excellent series about GPU internals.
- OpenGL Hardware database
- elementsofprogramminginterviews.com - site (along with the book) contains over 300 solved problems representative of those asked at leading software companies. You can even find a free PDF sample.
Job Boards
- C++ developer jobs @jooble.org
Blogging & Tools
If you run a blog (which I highly recommend for every developer!), you might be interested in the following course How to Create a Blog That Boosts Your Software Development Career it’s short and free course from SimpleProgrammer, by J. Sonmez
Content and Hosting
I write most of my text in Markdown. For editing, I really like and use Typora. The website (cppstories) is run on Hugo. With Hugo I can simply commit my markdown content, and it will be nicely rendered as a static website. The site is hosted on Netlify.
To synchronise my content and important documents across my machines I use Dropbox (join here via the referral link).
Writing
If, like me, you’re not a native English speaker, it might be easy to make mistakes. That’s why I try to fix and improve my articles whenever possible. In 2016 I started using Grammarly, a great tool to check everything you write automatically. I am using it on my blog, at work, for emails… it works in the browser and as separate plugins for Office (and others).
Email System
I am using MailChimp as my tool for the mailing list.
Graphics
For graphics, I depend on Xara Cloud - The smart way to create marketing documents that work | Xara Cloud - it’s excellent for creating headers, diagrams, logos and much more!
Productivity
For productivity, I use Cold Turkey to block everything and focus on the essential tasks.
Friends
- Marcin Draszczuk - and his Awesome Game Studio. You can find their games via Steam: Steam Awesome Games.
- Grzegorz Watroba - and his gamedev/blog site.
- Adam Sawicki Home Page - programming, graphics, games, media, C++, Windows, Internet and more…