Хорошо, вот мой субъективный ответ.
Стандартный подход для улучшения качества - это, на мой взгляд, модульное тестирование. Конечно, вы все еще можете написать дрянной код, который работает, и иметь модульные тесты, которые подтверждают, что он работает, но, по крайней мере, вы знаете, что он работает. Когда юнит-тесты действительно дают вам преимущество, это когда вы хотите внести изменения в свой код или добавить дополнительные функции. Наличие модульных тестов гарантирует, что ваш код продолжает работать.
Что касается производительности и модульных тестов, то это зависит от того, смотрите ли вы на краткосрочную или долгосрочную производительность. Модульное тестирование требует времени, поэтому вы пишете реальную функциональность менее продуктивно. В долгосрочной перспективе я абсолютно уверен, что вы более продуктивны, поскольку ваши модульные тесты гарантируют, что во время технического обслуживания все функции будут работать.
Второй совет по повышению производительности и качества - тщательно продумать каждую новую функцию. После того, как новая функция поставляется, вы должны поддерживать ее. Техническое обслуживание требует времени и снижает производительность. Нужна ли новая функция? Сколько клиентов на самом деле хотят эту функцию? Всегда старайтесь взглянуть на картину в целом, каково ваше собственное видение вашего продукта, соответствует ли новая функция этому видению.
Чем меньше у вас кода, тем меньше кода вы должны поддерживать и тем меньше у вас ошибок. Я всегда стараюсь помнить об этом.