Agile и CMMI

Подготовка выступления к SQA Days и, особенно, обсуждение на форуме http://software-testing.ru моей статьи, помещенной в качестве анонса к докладу, вызвало пару мыслей про Agile, которыми хочу поделиться. Именно про agile — хотя само выступление про совмещение ролей аналитика и тестировщика, в я активно апеллирую к agile-процессу и это вызвало отдельную ветку обсуждений.

Мысль первая. Для меня качественное отличие agile-подхода от предыдущего общего мнения состоит в следующем. Agile заявил, что процесс следует настраивать в соответствии с проектом. Что никакой унифицированный процесс, пригодный для IT-разработки — невозможен, даже в варианте «возьмите только нужное, используйте решения адекватного уровня сложности». До этого достаточно продолжительное время IT-сообщество искало именно унифицированный процесс, из которого конкретный процесс строился бы вычеркиванием ненужного и выбором вариантов. А agile заявил, что так невозможно, что есть только рамочные, заведомо общие варианты, от которых тоже можно отступать, и различные практики, и из всего этого надо собирать конкретный процесс.

Надо сказать, что мысль о принципиальном отсутствии унифицированного процесса звучит не слишком ярко. И, более того, не воспринимается многими как сторонниками так и противниками agile. Сторонники получаются догматическими приверженцами определенных вариантов, а противники — указывают на провалы и вообще на «проблемы с методологией». Потому что многим людям очень хочется, чтобы было некоторое «правильное государство», «правильная методология», «правильный процесс» — такая постановка близка их мышлению.

Мысль вторая. Я тут пересмотрел презентацию Джефа Сазерленда на SECR, и вспомнил вещь, на которую обратил внимание еще на конференции. Для Джефа развитие компании идет так: CMMI 1 → CMMI 5 → CMMI 5+SCRUM. Однако, я знаю много лждей, с точки зрения которых CMMI5 и SCRUM — вещи слабо совместимые. На самом деле, тут вопрос оценки CMMI. CMMI 4 говорит о том, что в компании должна быть настроена оптимизация процессов на основе показателей. А CMMI 5 — что сам процесс оптимизации тоже должен оптимизироваться. Дальше вопрос — что именно мы вкладываем в понятие «оптимизация». Максималисткий подход — рассматривать оптимизацию как поиск оптимума (логично, правда), который еще должен быть достаточно быстрым — чтобы придти близко к оптимуму за то время, пока окружение можно считать квазистатичным.

А можно рассматривать это иначе, понимая под оптимизацией всего лишь процесс, направленный на улучшение чего либо. То есть некоторые регулярные мероприятия, в рамках которого формулируются шаги по улучшению некоторого процесса, которые потом воплощаются. И достаточно, если шаги будут в среднем правильными. И если оценивать так, то CMMI 4 в SCRUM есть — это ретроспектива. На которой, в числе прочего, следует обсуждать показатели работы команды — burndown (и другие показатели), придумывая меры по их исправлению, которые затем будут воплощены. А чтобы получился CMMI 5 — нужно еще ретро по ретре, и процесс обмена всем этим опытом в рамках компании (процесс обмена и для CMMI 4 нужен).

Естественно, так происходит не в любом SCRUM, нужно как минимум желание и усилия в этом направлении. И, надо сказать, что слушая истории о конкретных командах от Джефа (и от Хенрика Книберга тоже) — вполне допускаешь, что в конкретных компаниях, в них фигурирующих, SCRUM действительно означает CMMI 5.

Добавить комментарий