По моему опыту, это ошибка процесса, а не разработчиков, которые допускают дефекты. См. Они пишут правильные вещи о том, как этот процесс влияет на ошибки.
Конкурсные испытания
Разработчики программного обеспечения должны стремиться помешать тестировщикам найти проблемы с программным обеспечением, которое они написали. Тестировщики должны быть вознаграждены (не должны быть финансовыми) за обнаружение проблем с программным обеспечением.
Выйти
Назначьте ответственного за программное обеспечение человека, который лично заинтересован в том, чтобы программное обеспечение не имело проблем. Программное обеспечение не поставляется, пока этот человек не будет удовлетворен.
Требования
Избегайте изменения требований. Получите оценки времени от разработчиков, сколько времени потребуется для выполнения требований. Если время не соответствует требуемому графику доставки, не нанимайте больше разработчиков. Вместо этого исключите некоторые функции.
Переключение задач
Разрешить разработчикам выполнить задачу, над которой они работают, прежде чем назначать их другой. После возвращения к новому заданию много времени уходит на то, чтобы узнать, где было оставлено задание и какие оставшиеся элементы требуются для его выполнения. Попутно можно пропустить некоторые технические детали.
Метрика
Соберите как можно больше метрик. Строки кода для метода, для класса, отношения зависимости и другие.
Стандарты
Убедитесь, что все придерживаются корпоративных стандартов, в том числе:
- Форматирование исходного кода. Это может быть автоматизировано, и это не обсуждение.
- Соглашения об именах (переменные, объекты базы данных, URL-адреса и т. Д.). Используйте инструменты, когда это возможно, и еженедельные проверки кода для обеспечения выполнения.
- Код должен компилироваться без предупреждений. Обратите внимание и просмотрите все исключения.
- Согласованное (повторное) использование API, как внутренних, так и внешних.
Независимый обзор
Наймите стороннего поставщика для выполнения проверки кода.
Компетентные программисты
Наймите лучших программистов, которых вы можете себе позволить. Отпусти программистов, которые уклоняются от корпоративных стандартов.
Распространение информации
Проведите обзорные сессии, на которых разработчики могут поделиться (со всей командой) своими последними изменениями в каркасах. Предоставьте им свободу осуждать старые части кода в пользу более совершенных методов.
Отслеживание задач
Пусть разработчики запишут, как долго (в пределах 15 минут) каждая задача их выполняла. Это не должно использоваться для измерения производительности, и следует подчеркнуть, что это не имеет никакого отношения к проверке или заработной плате. Это просто мера того, сколько времени занимает выполнение определенных технических задач. Оттуда вы можете видеть, как правило, сколько времени тратится на различные аспекты системы. Это позволит вам при необходимости изменить фокус.
Оценка процесса
Если многие проблемы все еще не решены в программном обеспечении, рассмотрите возможность переоценки процесса, с которым разрабатывается программное обеспечение. Метрики помогут точно определить области, которые необходимо решить.