Там юнит-тесты не особо бы помогли. Первым случаем была физика ходьбы в игре, а вторым — передача данных объектов игры с клиента на сервер и интерполяция на клиенте.
У меня два раза были серьёзные ошибки из-за неправильного оператора. Вместо || поставил &&, а вместо == поставил !=. В первом случае потратил на исправление 2 недели, во втором — 3. И это было не в полностью собственном проекте, а в порте на другой язык. А обычно сразу правильно пишу.
Использую и всё время стремлюсь использовать C++ (в стиле, близком к C, а зачастую и голый C; STL не использую) с inline-ассемблером x86 и ARM с уклоном в сторону оптимизаций компилятора. Так есть возможность выжать максимум скорости и сократить потребление памяти. Скорость разработки от этого не падает (разве что иногда несколько минут уходит на компиляцию, но это происходит не так часто), но даже если бы и падала, ей можно пожертвовать ради скорости выполнения и загрузки. Люди пользуются приложениями, а не исходниками. Пишу на других языках тогда, когда использование C++ невозможно или нецелесообразно. Но когда пишу на других языках, энтерпрайзовщину стараюсь не использовать, а также сокращать количество всяких прослоек (не использую фреймворки, например).
Ну если вы понимаете, о какой сове я говорю.