Юнит-тесты, CI под разные варианты сборки и платформы, статические анализаторы, санитайзеры и прочие скучные вещи - это то, с чего надо начинать, по идее.
Когда я начинал, ещё даже таких слов не знал. Да и не было наверное особо толковых статических анализаторов и санитайзеров.
Когда узнал про тесты, стал писать их, но уже было поздно. Писать тесты постфактум очень скучно и нудно, поэтому их очень мало. Может соберусь и ещё напишу немного, не знаю.
CI есть, прикрутил его, когда узнал, что это такое.
Зато я компилирую, включая и исправляя большинство варнингов, а они ловят многое, что раньше ловили статические анализаторы. В ближайшее время планирую clang-tidy с C++ Core Guidelines включить и пофиксить всё, на что он будет ругаться.