«Программное обеспечение готово, когда оно готово, не раньше, не позже».
Это правда, но для каждой задачи, над которой начинают работать ваши разработчики, все ли в вашей организации понимают определение «Готово» для каждой задачи?
Кажется, что одна из ваших самых больших проблем - оценка , но разработчики могут предоставить реалистичную оценку, только когда у них есть однозначное и четко определенное «определение выполненного». (К ним относятся проблемы, связанные с процессами компании - например, пользовательская документация, рабочие пакеты для официального выпуска и т. Д.)
Неудивительно, что переоценка вызывает проблему, учитывая, что большинство разработчиков считают, что оценка времени, необходимого для выполнения задачи, является самой сложной задачей, которую им задают.
Тем не менее, большинство разработчиков, как правило, имеют разумный (хотя и оптимистичный ) контроль над количеством усилий они могут приложить за определенный период времени.
Часто проблема заключается в том, что разработчики изо всех сил пытаются создать взаимосвязь между задачей и общим объемом усилий, необходимых для работы с неполной информацией - особенно, если на них оказывается давление, чтобы найти ответы на все вопросы перед действительно огромной задачей. ,
Это, естественно, приводит к тому, что оценки времени отсоединяются от реальности, и они теряют из виду такие вещи, как процесс сборки и пользовательская документация.
Разъединение имеет тенденцию начинаться в самом начале, когда описана задача; и это обычно составляется нетехническим человеком, составляющим список требований, не имея никакого представления о количестве необходимых усилий.
Иногда люди в высшем руководстве задают задачи и полностью игнорируют проблемы процесса компании; старшее руководство нередко думает, что такие вещи, как определение тестов, создание формально выпущенной сборки или обновление пользовательского документа, происходят просто волшебным образом, без времени и усилий. требуется.
Иногда проекты терпят неудачу, прежде чем разработчик даже написал строку кода, потому что кто-то где-то не выполняет свою работу правильно.
Если команда разработчиков не участвует в согласовании требований или получении критериев приемлемости, то это провал менеджмента - потому что это означает, что тот, кто недостаточно понимает код и технические проблемы, поставил бизнес перед неполным набором требований, и оставил проект открытым для неверного толкования, ползучести, позолоты и т. д.
Если команда разработчиков вовлечена в сбор и согласование требований, то это может быть провал команды, которая несет ответственность за уточнение деталей (и критериев приемлемости - то есть, «Как выглядит результат? Когда это сделано ?»). ). Команда разработчиков также отвечает за отказ « НЕТ», когда возникают другие проблемы с блокировкой или если требование просто нереально.
Так что, если разработчики участвуют в захвате требований:
- Есть ли у команды возможность посидеть с менеджером по продукту, чтобы уточнить требования / определение сделанного?
- Команда задает достаточно вопросов, чтобы уточнить подразумеваемые / предполагаемые требования? Как часто на эти вопросы отвечают удовлетворительно?
- Требует ли команда принятия критериев (определение выполнено), прежде чем предоставить оценку?
- Насколько хорошо критерии приемлемости обычно фиксируются для каждой задачи? Это расплывчатый документ с редкими подробностями, или он описывает материальную функциональность и формулировку, которую разработчик мог бы однозначно перевести в тест?
Скорее всего, производительность вашей команды не проблема; Ваша команда, вероятно, прилагает все усилия, которые они могут приложить в отношении развития. Ваши реальные проблемы могут быть одним или несколькими из следующих:
- Неполные и расплывчатые требования.
- Требования / задачи, которые просто слишком велики.
- Плохая связь между командой разработчиков и высшим руководством.
- Отсутствие четко определенных критериев приемлемости перед передачей заданий команде.
- Неполная или расплывчатая / неоднозначная спецификация приемочных испытаний. (т.е. определение выполнено)
- Недостаточно времени для определения / согласования критериев приемлемости.
- Разработчики не рассматривали время для тестирования существующего базового кода или исправления существующих ошибок
- Разработчики проверили существующий базовый код, но не выдавали ошибки как проблемы блокирования, прежде чем предоставлять оценки требований
- Руководство увидело проблемы / ошибки и решило, что ошибки не нужно исправлять перед написанием нового кода.
- Разработчики вынуждены отчитываться за 100% своего времени, хотя, возможно, 20% (или какое-то подобное количество) их времени, вероятно, занято встречами, отвлечениями, электронной почтой и т. Д.
- Оценки согласованы по номинальной стоимости, и никто не корректирует пространство для ошибок или непредвиденных обстоятельств (например, «Мы решили, что это займет 5 дней, поэтому мы ожидаем, что это будет сделано в 8».).
- Оценки обрабатываются всеми (разработчиками и руководством) как единые числа вместо реалистичных чисел «диапазона» - т.е.
- Лучшая оценка случая
- Реалистичная оценка
- Оценка наихудшего случая
... список может продолжаться намного дольше.
Вы должны сделать некоторые "выяснения фактов" и выяснить, почему оценки постоянно отсоединены от реальности. Является ли существующее базовое программное обеспечение плохим? У него нет покрытия модульным тестом? Ваши разработчики избегают общения с руководством? Руководство избегает общения с разработчиками? Есть ли несоответствие между ожиданиями руководства и ожиданиями разработчиков, когда дело доходит до «Определение выполненного» ?