четверг, 23 июля 2009 г.

Kanban vs. Scrum

7 июля состоялось собрание сообщества AgileRussia, посвященного сравнению методологий разработки Scrum и Kanban. Позже я обязательно напишу свои комментарии к такому сравнению, а пока наслаждаемся отчетом о встрече и видео

http://team.custis.ru/2009/07/kanban-vs-scrum.html

среда, 1 июля 2009 г.

Lean Software Development

Стремительно набирающая популярность методология "бережливой" разработки ПО (Lean Software Development) в рунете представлена очень скудным количеством материалов. Фактически, интересующемуся человеку придется собирать информацию по крупицам или с англоязычных ресурсов (хорошо, что для меня это не препятствие).

Немного облегчу задачу читателю и представлю здесь ссылки на некоторые найденые мной ресурсы, а также своё понимание.

http://lobasev.ru/2008/01/lean-software-development.html

http://www.crisp.se/henrik.kniberg/Kanban-vs-Scrum.pdf
http://availagility.wordpress.com/2008/10/28/kanban-flow-and-cadence/
http://en.wikipedia.org/wiki/Lean_software_development
http://www.leancor.ru/article2.phtml?m=10160

Название Lean Software Development произошло из названия одноимённой книги авторов Mary и Tom Poppendieck, изложивших в книге основные Lean принципы, 22 инструмента для реализации этих принципов, а также их применение к Agile-практикам.

Итак, Lean Software Development - это даже не методология, а скорее набор принципов улучшения процесса разработки и повышения его эффективности.

Ключевые процессы Lean-разработки таковы:

1. Eliminate waste
Необходимо избавиться от waste (или muda в оригинальном лексиконе компании Тойота),
т.е. от всего, что не приносит ценности (value) заказчику
- необязательный код или функциональность
- задержки в процессе разработки ПО
- неясные требования
- бюрократия
- неоперативные внутренние коммуникации

2. Amplify learning
Разработка ПО требует постоянного обучения команды и накопления знаний. Полученные в процессе разработки знания используются как best practices в последующих проектах.

3. Decide as late as possible
Принимать решения как можно позднее, особенно это касается необратимых решений.
Чем позднее принимаются решения, тем больше информации у вас есть, и тем меньше надо будет потом переделывать.

4. Deliver as fast as possible
Чем быстрее вы покажете результаты разработки заказчику, тем быстрее получите от него обратную связь, и он быстрее получит продукт со всеми доработками.

5. Empower the team
Человеческий фактор - решает! Во многих отраслях существует традиционное заблуждение о процессе принятия решений - менеджеры говорят рабочим, как им надо делать их работу. Опытные же руководители проектов сформулировали рецепт успешного проекта просто - "Найди хороших людей и позволь им делать их работу!".
Другая порочная практика - относиться к людям как к ресурсам. В разработке ПО, как и в любом организационном бизнесе людям нужно нечто большее, чем просто список задач и уверенность в том, что их не потревожат во время выполнения этих задач. Людям нужна мотивация и достижимые цели, осознание собственной значимости и своего вклада в проект, нужно признание людьми важности создаваемого проекта. Здесь большую роль играет team leader, который оказывает поддержку и помощь в трудных ситуациях (это также может осуществлять project manager).

6. Build integrity in
Целостность - это то, как отдельные компоненты системы работают в целом вместе, с балансом гибкости (flexibility), удобства сопровождения (maintainability), эффективности (effectiveness) и способности к реагированию (responsiveness). Это осуществляется выявлением и решением проблемных областей на самых ранних стадиях.
Инструменты достижения целостности - рефакторинг и полное автоматизированное тестирование (и со стороны разработчиков и со стороны заказчика).

7. See the whole
Система это не сумма составляющих её частей, но продут их взаимодействия.
Чем больше система, тем больше организаций принимают участие в разработке, тем больше частей разрабатывается разными командами и тем большее значение имеет взаимодействие между разными вендорами.
Поэтому для команды очень важно понимать, как идет процесс разработки и стратегию продукта в целом.

Для воплощения в реальном проекте принципы lean разработки должны хорошо пониматься всеми участниками проекта. Важность понимания области применения и пригодности lean принципов суммирует следующий слоган - Think big, act small, fail fast; learn rapidly - Думать широко, действовать маленькими шагами, заваливать скоро, учиться быстро.