В свете грядущей конференции AgileBaseCamp, которая состоится уже завтра хотелось бы резюмировать некоторые мысли и опыт, накопившиеся за последнее время.
В доказательстве новых теорем и законов существует как правило три стадии. Первая стадия заключается в осознании и необходимости поиска новых подходов и решений в той или иной области и соответственно нахождении такого решения. Что как правило приводит к пониманию или осознанию нового явления, но еще не доказуемого или имеющего слабую теоретическую базу.
Вторая стадия – испытаний и опытов. С целью подтвердить явление проводится ряд экспериментов, в ходе которых накапливаются знания и необходимые научные обоснования для построения полной доказательной базы с целью объяснить явления с научной точки зрения.
Третья стадия – доказательство. В ходе второй стадии опытов и экспериментов был установлен ряд неопровержимых фактов достаточных для доказательства явления с научной точки зрения.
А теперь давайте посмотрим на современные методологии разработки программного обеспечения с научной точки зрения. Становится очевидно, что Agile методологии находятся на второй стадии научного обоснования. Существует множество экспериментов, причем достаточно успешных, множество практик и теорий, однако не существует полного научного обоснования доказывающего эффективность этих подходов.
И конечной формулы нет. В сумме мы имеем набор гибких практик об эффективном взаимодействии людей в команде, но не процессов, в связи с чем доказать это не возможно. Agile – это больше о психологии, а не о практике разработки ПО.
В связи с чем нельзя точно сказать, что один и тот же набор практик будет одинаково эффективен во всех командах. Однако данное утверждение не мешает некоторым проект-менеджерам впасть в паранойю, навязывая все подряд.
А теперь о неприятном
Цель любой методологии (а в данном случае Agile), чем бы она не была обоснована – сократить риски и затраты на выполнение задачи с целью оптимизации производства любыми доступными средствами. И вот тут кроется большой подводный камень для разработчиков.
Понятие минимизации рисков достаточно обширное, однако давайте рассмотрим его с точки зрения обычного разработчика.
Понятие минимизации рисков для конечного(низшего) уровня в большой бизнес-иерархии, уровня разработки, сводится к “дроблению” технических задач до настолько мелких, что в конечном счете от одного взятого разработчика как единици рабочей сили в целом для процесса ничего не зависит.
Чем это грозит отдельно взятому разработчику? По сути ничем. Вы такой же исполнительный элемент в иерархии как и раньше. Только в случае Agile быть таким элементов немного веселее (что кстати по мнению автора также является частью “большого плана”). Если вы это понимаете – это уже часть прогресса и значит вы найдете достаточно сил для дальнейшего профессионального развития.
Если от прочтения предыдущего абзаца вам стало страшно (вы осознали свое место и вам стало не по себе) – расслабьтесь, сейчас будет еще неприятнее.
Фокус заключается в том, что будь вы менеджером (вас повысили?), вы будете точно также применять различные методологии для минимизации рисков и оптимизации расходов как это делали до вас, заботясь о конечном business value.
Agile – отличный налаженный инструмент для успешного ведения бизнеса, но в тоже время отличный убийца для многих разработчиков в профессиональном смысле.
Данная методология создана исключительно с целью увеличение прибыльности бизнеса и организации полного контроля над процессом разработки, где талант и способности отдельно взятого разработчика редко что значат.
Не согласны? И правильно! Читайте далее.
Но не все так плохо
Все выше изложенные негативные стороны, для вас как для разработчика, применимы как правило к крупным компаниям и к крупным распределенным командам, где действительно крайней сложно следить за всем ходом процесса разработки. И как писалось выше, Agile для конечного разработчика призван служить лишь способом сделать этот процесс более приятным и подконтрольным (помните рассуждения о религии в фильме “Дух времени”?).
Но если у вас небольшая команда, вы создаете свой проект и ищите эффективные способы для его реализации, хотите оптимизировать свои бизнес процессы в уже существующей команде.
Тогда Agile – это то, что вам нужно. В данном случае, таланты каждого игрока команды превозносятся в ранг необходимых составляющих успеха и делают процесс разработки действительно увлекательным и эффективном.
Technorati Tags:
agile, business process, management
А разве Agile требует мелкого дробления задач? 1-5 дней на историю – вполне нормальные рамки и для крупных задач, особенно если процесс позволяет сосредоточиться конкретно на разработке.
Не требует, подразумевает. И так или иначе команда в скором сама к этому приходит. Так-как на более мелких задачах легче наблюдать динамику.
Да, все верно
Декомпозируем задачи так, что любой программист может быть уволен сразу после ретроспективы в конце спринта. Мечта бизнесмена.
и на его место может также прийти “любой” в прямом смысле слова. без особых потерь.
Без особых потерь может прийти любой член команды, а не вообще любой программист. Новичку все равно придется некоторое время въезжать в структуру проекта и местные практики.
Мелкие задачи сложно сделать изолированными, поэтому требуют внешней координации, а значит – начинаются архитектурные митинги, а то и вообще разработчиков удаляют из процесса проектирования. Не агильно выходит.
так или иначе, на конечной стадии дробления задачи она теряет свою ценность с технической точки зрение и приобретает ценность с точки зрения бизнеса.
То есть? Обычно ведь наоборот: бизнес ставит задачу в своих терминах, а затем она интерпретируется и разбивается разработчиками, причем часто бывает так что задачи уровня разработчиков сами по себе не имеют бизнес-ценности (например, логин не имеет ценности без регистрации и наоборот, а это обычно две разные задачи).
Кстати, на мой взгляд, это неправильно. Любая задача должна нести бизнес-ценность. Если она при этом слишком большая – то ее нужно упрощать, но не разбивать.
Браво!
А как вы со мной красиво дискутировали, поздравляю! Видно развитие!
http://victorronin.com/2009/10.....todatelya/
http://victorronin.com/2009/10.....-praktiki/
все же опыт со временем приобретается. Кроме того, после активной работы в координаторской роле на крупном Agile проекте можно уже делать какие-то выводы.
Но, я не хочу сказать что Agile это плохо. Наоборот, Agile отличный инструмент и кстати пришел совсем не из IT, который действительно стоит применять. Просто нужно понимать что и с зачем делается.