Dmitry Lobasev (lobasev) wrote in ru_agile,
Dmitry Lobasev
lobasev
ru_agile

Lean Software Development - что это такое

После первой презентации Асхата в Питере слово Lean стало прямо витать в воздухе. И вот в один из выделенных центров компании пришла телеграмма от заказчика "Identify Lean as company wide initiative". Пришлось разбираться, что такое Lean и как он соотносится с гибкими методологиями. А заодно и понять, как внедрить Lean, сохранив при этом совместимость с CMMI пятого уровня (но это скучно). Итак, что же такое Lean?

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

Цели Lean – сделать возможной разработку проекта за треть времени, с использованием только трети бюджета и с уровнем дефектов, уменьшенным до одной третьей. Как этого достичь?

Lean предлагает 7 ключевых принципов:

· Eliminate waste. В разработке приложений waste – это все то, что не приносит business-value заказчику, не улучшает качество разрабатываемой системы и не снижает время выхода проекта в production. Другими словами это то, на что мы тратим деньги и не получаем с этого никакой прибыли. Давайте просто не будем этого делать.

· Amplify learning. Для того, чтобы команда могла разработать систему, которая будет приносить business-value заказчику, она должна обладать достаточно широким набором знаний. Некоторые из них технические, например как эффективнее организовать удаленные соединения в .Net (используя remoting, COM+, web services и т.д.). Другие наоборот, относятся к требованиям, например, понимание того, что реально хочет бизнес-пользователь, а не то, что представляют себе разработчики. Поэтому команда должна постоянно развиваться и учиться, накапливать знания.

· Decide as late as possible. Основная идея здесь в том, чтобы до последнего ждать перед тем, как принять какое-либо решение, особенно необратимое. Чем позже вы принимаете решение, тем больше у вас знаний и понимания вопроса, тем меньше вам придется потом переделывать. Любое решение должно «созреть», и только тогда оно будет оптимальным.

· Deliver as fast as possible. Это основа итеративной разработки. Чем быстрее вы покажете свои наработки заказчику, тем быстрее соберете его отзывы и он быстрее получит продукт с необходимыми доработками. Вам не придется тратить время и деньги, идя в неверном направлении, потому что требования к системе постоянно меняются. Бизнес-фича, попавшая в production через несколько месяцев, может оказаться совершенно бесполезной, в то время как если бы она была выпущена через две недели, она могла бы принести заказчику неплохой доход.

· Enpower the team. Человеческий фактор - один из самых важных моментов в успешной разработке программного обеспечения. Для того, чтобы люди брали на себя ответственность, были замотивированы и работали как одна команда, они должны осознавать свой вклад в разрабатываемый продукт и чувствовать, что конечный результат их работы зависит именно от них. Доверяйте своей команде и уважайте ее.

· Build integrity in. Авторы Lean предлагают решать проблему качества непосредственно у ее истоков – изначально закладывая качество в продукт, а не оставляя выявление и исправление дефектов на тестирование или production. Таким образом, на качество направлен основной фокус – вы должны постоянно создавать и поддерживать автоматизированные модульные и интеграционные тесты, потому что только они позволяют обнаруживать ошибки на наиболее ранних стадиях и являются неотъемлимым условием целостности вашей системы.

· See the whole. Основной способ решения проблем – это разбиение их на более мелкие проблемы и последовательное устранение причин возникновения этих проблем. Но для того, что видеть корни проблем, у команды должно быть хорошее общее понимание текущего используемого процесса разработки, концепции и стратегии разрабатываемого продукта. Но она не сможет сделать этого сама - ей нужна ваша помощь.

В своей книге “Lean Software Development: An Agile Toolkit”, о которой уже упоминал Никита, Mary и Tom Poppendieck говорят о 22 инструментах для реализации этих принципов. Авторы показывают, как применять эти инструменты для выявления проблемных областей проекта и нахождения возможных решений. Каждый принцип содержит набор шагов, с помощью которых вы можете хоть прямо сейчас начать применять Lean в своем проекте. Но поскольку это именно принципы, а не жесткие правила, то вам придется приложить некоторые усилия для того, чтобы адаптировать их под специфику вашего проекта.

Оригинал здесь: lobasev.blogspot.com

Subscribe
  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 8 comments