What next? Intermediate to advanced C++

The internet is filled with advice on getting started with C++, but many programmers find themselves lost once they’ve taken that first step.  How do you move from beginner-level topics to learning intermediate and advanced C++?  If you have already worked through a good book or online reference to learn the basics of C++ and aren’t sure what to do next then this article is for you!

Solidify your knowledge of the basics

You’ve covered the basics already, but there are probably still some gaps in your knowledge.

C++ Primer, 5th Edition is an excellent book for learning or use as a reference for modern C++, comprehensively covering the newly updated C++11 standard and focussing on best practices in order to write clean and efficient code.

You might also try Bruce Eckel’s freely available Thinking In C++.  Thinking In C++ has not been updated to cover the latest standard, it is a detailed reference covering the C++ language and standard library.

A read through Herb Sutter’s Elements of Modern C++ Style should make sure you’re up-to-speed with the basics of C++11 style code and idioms.

Learn more about C++

A good next step might be to learn more about C++ and best practices, and I highly recommend three great books by Scott Meyers:

Learn more about programming in general

Rather than teaching language-specifics, Code Complete: A Practical Handbook of Software Construction provides an in-depth look at best-practices for software development, featuring hundreds of invaluable tips and code samples to illustrate how and why certain techniques are beneficial.  Every programmer should read this book at some point in their career.

You might also enjoy The Pragmatic Programmer: From Journeyman to Master, which similarly offers insight into best practices based on the wisdom of experienced programmers.

Get more practice

All that reading is great — and hopefully you’ve been doing any included exercises along the way — but to really improve your programming you need practice!

Project Euler provides a series of challenging mathematical and programming related questions to test and challenge your abilities.

Code Kata also provides a series of exercises — some to be solved mentally, and some by writing code — to train and practice your problem solving abilities.

Embark on a project

Why are you learning programming?  Did you have some end-goal when you started?  If you feel that you’ve got a good grip on the basics and are making good progress starting to learn more advanced topics, then it’s probably time to start working on or towards that goal!  Write a piece of useful software, develop a game, or whatever it is you want to do with your programming.  You will almost certainly still make mistakes along the way, but it is only be proceeding to actually make those mistakes that you can learn, and perhaps one day become a programming guru.