This blog discusses approaches and techniques for developing and maintaining C/C++ applications.

Why C/C++?

C and C++ are still two of the most relevant languages today, despite all of their warts. The main reasons are:

  • Great support and portability across a large number of systems
  • Large body of existing code, particularly at the system level
  • Need for speed and efficiency, again on system level and for constrained mobile and IoT devices
  • Development positions can be staffed easily compared to more niche languages


Due to all the warts of C/C++, a considerable effort is necessary to produce code that is ready for production, resilient against all the strange things that happen in real systems. This blog discusses how to tackle these things and which tools can help (e.g. AddressSanitizer).

C/C++ development also tends to be complex and doesn’t scale that well. Keeping developers productive is another aspect this blog discusses (e.g. distributed compilation).

I’m assuming that you are familiar with C/C++. Please read one of the recommended books if that is not the case. This blog shows best practices and techniques for C/C++ beyond the language itself.


You can reach me at martin@productive-cpp.com.