Недавно наткнулся на интересную презентацию на TOCPA про cash-flow driven development http://www.tocpractice.com/page/toc-and-software-development-0#attachments. Презентация содержит много интересного и разбудила во мне мыслительный процесс. Настолько, что я решил вставить свои 5 копеек :-) Просто несколько тезисов - в качестве приглашения к обсуждению - мысли вслух.
Я думаю, что как и положено любому инструменту каждая методика разработки ПО хорошо решает строго определенные типы задач и каждая имеет границы применения. Серебряные пули хорошо убивают только вампиров, для кабана лучше подойдут бронебойные.
Про Agile
Я отлично отношусь к идее итеративной разработки. Постоянно наблюдаю на практике, как требования меняются чаще погоды за окном. Мне очень близки мысли из презентации по ссылке, которые утверждают, что требования - это прогноз. А более короткие прогнозы - точнее. Изменения в фичах, которые еще не запущены в работу бесплатны. И нет ничего прекраснее, чем возможность получать быструю обратную связь.
Однако не всегда есть возможность разделить проект на итерации. Представьте себе, что мы строим самолет. Он либо взлетит либо нет. И нет никаких промежуточных результатов.
Еще итерации плохо работают в ситуации очень быстро меняющихся приоритетов и требований. Например в службе поддержки, в которой в любой момент может появится задача, которая заставляет бросить все и заняться собой.
Еще итерации плохо работают в ситуации очень быстро меняющихся приоритетов и требований. Например в службе поддержки, в которой в любой момент может появится задача, которая заставляет бросить все и заняться собой.
А еще слишком частые итерации имеют много побочных эффектов, таких, как например, мультитаскинг и реворк. Так что делать итерации нужно когда это приносит пользу, а не потому, что "так нужно".
Про самоорганизующиеся команды
Это прекрасно, когда люди имеют возможность сами выбирать себе не только задачи из бэклога, но и способы их выполнения. Однако работает это только когда у вас есть хорошая квалифицированная команда. Часто это не так :-)
Опытная профессиональная команда крутых кодеров, горящих идеей, может сделать хороший продукт вопреки любому процессу. А команда новичков, которые не вполне понимают, зачем все это нужно, запорет проект несмотря ни на какую супер-методику управления разработкой
Про Канбан
Сама идея вытягивающего производства и превращения разработки в поток, ориентированный на создание конечной ценности - это конечно очень круто.
Канбан хорошо отвечает на проблему мультизадачности, но плохо - на задачу фокусировки на глобальном результате проекта. Кроме того, как известно из производственной системы Тойоты (с которой и был срисован Канбан для разработки ПО), ограничения по количеству WIP убивают положительные вариации в производительности одного звена.
Разберем о чем я говорю на примере:
Представьте себе, что звено может производить 5 +/-2 детали. То есть в среднем 5. По Канбан мы должны поставить ограничение 5, так как если поставим больше - будет копиться незавершенное производство. Но тогда средняя производительность больше не будет равняться 5. Звено в лучшем случае произведет 5, но произвести 7 уже не сможет.
Почему бы тогда не попробовать вместо Канбан придумать в разработке ПО аналогию с ТОСовским "барабан-буфер-канат"? Он лучше сфокусируется на ограничении.
Почему бы тогда не попробовать вместо Канбан придумать в разработке ПО аналогию с ТОСовским "барабан-буфер-канат"? Он лучше сфокусируется на ограничении.
Про серебряные пули
Так вот мысль в том, что инструмент (или комбинацию инструментов) нужно подбирать под задачу. Любая методика оставляет многие вопросы без ответов. Не стоит относиться к ней, как к священной корове, и молиться на нее, слепо следуя ее предписаниям.
Можно комбинировать Scrum и Канбан. Можно добавлять к ним инженерные техники (например, парное программирование и test driven development) из XP. Для фокусировки на результате проекта использовать CCPM.
Нет идеальных решений, подходящих всем - каждая команда должна комбинировать и подстраивать методики под себя, исходя из своих реалий и задач.
Замечание:
Для подбора правильных процессов нам нужно понимать свои текущие ограничения. Потому что, как говорит ТОС, действия, не нацеленные на ограничения, не увеличивают результат системы :-)
Пример ограничений в разработке
Ограничения бывают очень нетривиальными и их понимание может привести к неожиданным действиям :-)Процитирую +Audrius Vasiliauskas
"Я руководил ИТ в 70 программистов, и всегда мы заканчивали 2-3 проекта в месяц. Я долго не мог понять в чем проблема. Оказалось, что deployment это долгое занятия, а у меня не было достаточно хороших программистов-админов. Новых я так и не нашёл - очень дорого. Пришлось менять портфель проектов. Тогда ограничением стали консультанты."
These enabled the player to cease each reel, allowing a degree of "talent" so as to satisfy the New Jersey gaming legal guidelines of the day which required that gamers had been able to to} control the game ultimately. The original conversion was applied to approximately 50 late-model Bally slot machines. Because the everyday machine stopped the reels mechanically in lower than 10 seconds, weights had been added to the mechanical timers to delay the automated stopping of the reels. By the 우리카지노 time the New Jersey Alcoholic Beverages Commission had accredited the conversion to be used in New Jersey arcades, the word was out and each different distributor began including talent stops. The machines had been an enormous hit on the Jersey Shore and the remaining unconverted Bally machines had been destroyed as they'd turn out to be immediately out of date. A bonus is a particular feature of the actual sport theme, which is activated when certain symbols appear in a profitable combination.
ОтветитьУдалить