Обсуждение блога:Максима Цепкова/2016-12-24: Agile - это Карнавальная ночь как способ производства/c000066

Материал из MaksWiki
Перейти к: навигация, поиск

И еще один содержательный тред комментариев Елена Верещага 25-28.12 (перенесено позже)

Максим, спасибо за столь подробный ответ на мой комментарий.

Признаюсь я несколько “утонула” в том объеме информации, которую Вы вытащили на поверхность данного контекста ))

Прежде всего, хочу сказать, что при углублении в тему - вижу довольно много общих точек соприкосновения - мысли, что Вы излагаете, мне также созвучны. И в этом права также Екатерина, которая заметила, что часто мы по-разному понимаем нечто или напротив - разными словами называем одно и то же.

Какие высказанные Вами идеи мне созвучны:

  1. Профессионализм - прежде всего. Т.е. многие провалы связаны с нежеланием или неспособностью участников проекта разобраться в используемых ими инструментах - технических или организационных, новых или ранее существующих;
  2. Agile включает в себя набор вполне конкретных технических (инженерных) и орг практик. Это не религия.
  3. Выбор подходов и практик нужно делать под задачу и под проект. Где-то подходит одно, где-то другое. Например, глупо пытаться натянуть подходы из разработки front-end систем (web-интерфейсы, например) на системы класса DWH. Разные классы задач требуют разных подходов и разных способов их применения.

Далее под этим комментом я напишу еще несколько мыслей - в продолжение

С некоторыми суждениями я готова поспорить:

  1. Противопоставление Agile и классического управления проектами - на мой взгляд, это неверно. Т.к. Agile является скорее развитием - одной из веток управления проектами и продуктами. Действительно, PMBoK включает в себя Agile. Но это не говорит о том, что что он признает свою несостоятельность. Просто Agile стал частью целого - наряду с другими возможными подходами и практиками.
  2. Не берусь обсуждать приводимые автором проекты (я слишком мало про них знаю). Но из своего опыта могу сказать, что минусами Agile.. точнее минусами его конкретных внедрения являются многое из того, что называет автор: долгосрочное планирование развития системы (планирование спринтов не является достаточным для получения результата в нужный срок с нужным качеством), интеграционное взаимодействие систем (это актуально именно для крупных компаний - т.к. в одном ИТ-решении может участвовать несколько разных систем - и нужно обеспечить их слаженное взаимодействие и готовность функционала к определенному моменту), комплексное тестирование (TDD хорошо решает вопрос внутреннего тестирования, однако комплексное тестирование часто остается “за бортом”).
  3. Не думаю, что автор, который себя позиционирует как Agile-эксперт, заинтересован в том, чтобы как-то нивелировать этот подход. Это было бы странно. Впрочем, я его не знаю. Поэтому, давать тут развернутых комментариев опять же не могу. Однако многие мысли мне кажутся разумными. Действительно, Agile гораздо проще внедрять в локальных маленьких командах, нежели в крупных компаниях, где самыми большими рисками являются как раз интеграционные аспекты. Легко доработать отдельную форму для пользователя. И гораздо сложнее поменять процесс, где задействованы разные системы и люди. Поэтому, действительно важно дать этому внимание. А не превращать Agile в “религию” и окрашивать исключительно радужный окрас. И если в ряде случаев есть наработки и практики, которые хорошо работают и решают ряд проблем - почему их не продолжать использовать? Зачем внедрять “новые ради нового”? Такие вот “инновации ради инноваций”, а не смысла. Впрочем, я опять несколько увлеклась. )) Прошу меня простить.
  4. Насчет Continues* (integration, delivery etc). Это довольно сложная история. Наверное, есть проекты, где это уже сейчас применяется - в ИТ-компаниях. Но не всегда это просто. Например, в случае работы с крупными БД (я специализируюсь в области DWH) - дело осложняется тем, что мы имеем дело не просто с “поведенческим аспектом”, а с хранимыми огромными массивами данных. И это не так просто -исправить в случае чего. Гораздо проще предотвратить. И здесь во многих случаях важнее не скорость, а качество. Кроме того, предъявляются требования к качеству и целостности данных, не которые не должны быть нарушены. “Поведение” и “Хранение” - это разные информационные аспекты. И методологии работы с ними тоже имеют отличия.
  5. “Agile - наше все” - не соглашусь. Например, в нашей области полный переход к проектам "по Agile в чистом виде" выглядит неразумно и как раз приводит к провалам. Начиная с управления требованиями - agile.. точнее неправильно выстроенные процессы по agile позволяют Заказчику необоснованно менять их кардинальным образом. Вместе с тем, накоплены работающие подходы управления требованиями и ожиданиями Заказчика, которые позволяют избежать краха проекта - когда из-за метаний и многочисленных изменений в итоге не готово ничего. Почему же их не использовать? Крики “ТЗ запрещено - у нас Agile” - это мой страшный сон, и не только мой ((( Заканчивая управлением роадмапом развития системы - средне- и долгосрочным планированием. Когда слышишь фразу “у нас запрещено оперировать сроком больше 2х недель” - становится жутко.. а потом - весело ))) Работающим подходом является гибридный вариант - когда разработка ведется в scrum-спринтах, а предварительный анализ и дизайн (проектирование) - выносится за скобки. Также после внутреннего тестирования есть этап сборки и общего тестирования (может включать в себя интеграционные и нагрузочные тесты). Поэтому, я бы не следовала догме “Agile - наше будущее, все остальное - отживший нафталин”.

Максим, в любом случае, спасибо за Ваше неравнодушие, а также за стимуляцию лично моего развития в теме - Вы подняли достаточно большой пласт информации, куда стоит посмотреть.

Было бы интересно продолжить разговор предметно - разбирая конкретную практику из арсенала Agile и где она хорошо применяется, какие могут быть проблемы и почему.

Также замечу, что мы похоже, вышли за пределы круга Agile - все-таки не все *DD имеют к нему непосредственное отношение. По кр.мере, для меня эта связь на данный момент не очевидна.

[ Хронологический вид ]Ответы

Максим Цепков Елена, я очень рад, что мои комменты вызвали такой отклик. По пунктам, которые вы затронули в комментарии, я отвечу детально (только уже завтра), потому что их интересно разобрать конкретно. Но если говорить в общем, то у нас различается взгляд на логику развития ведения IT-проектов, которая породила Agile.

В Вашей логике Agile - преимущественно организационные практики (хотя не только они), которые родились как развитие проектных практик PMBOK и по мере вызревания были в него втянуты.

С моей точки зрения, Agile возник наоборот, как резкое отрицание PMBOK и вообще процессного подхода (который достаточно ярко проявился в RUP). Отрицание начал еще Том ДеМарко в 1987 "Человеческий фактор", и оно очень ярко выражено в первой редакции книги Бека Extreme Programming и Agile-манифесте, который как раз декларирует иные ценности. Далее он развивался, порождая собственные способы IT-разработки (Scrum - первый массово успешный из них), в том числе, используя ранее наработанные практики как источник идей, но сильно адаптируя их к собственным ценностям - в соответствии с диалектикой развития "тезис-антитезис-синтез". А когда успех стал очевиден - пошел еще обратный вектор.

При этом ряд людей восприняли Agile в конструкции ярко выраженного отрицания классического подхода и до сих пор это высказывают, возражая против синтеза.

Характерно, что наши различия во взглядах, как я вижу, больше касаются именно представлений о логике развития, а вовсе не взгляда на идеальное представление об IT-разработке, которое у нас обоих синтетично включает множество практик.

Елена Верещага Максим, спасибо за интересную дискуссию! Буду ждать Ваших детальных комментариев. А "свою историю" про Agile я напишу позже - уже видимо, послезавтра ))

Максим Цепков Елена Верещага Отвечаю по пунктам, как обещал.

1. Про Agile и PMBOK я уже написал в своем комментарии, они противопоставлены логикой развития, и тем, что для нас целое - Agile, втянувший лучшие практики классического подхода, или наоборот, классические подход, втянувший (с моей точки зрения - лишь попытавшийся) втянуть лучшие практики Agile. Для меня Agile и классика - это разные mindset, конструкции устройства мира. При этом я понимаю и могу рассуждать в обоих, но Agile считаю следующим этапом развития.

2. Долгосрочное планирование является проблемным независимо от Agile, про это есть множество исследований. И интеграционное взаимодействие тоже. Так что "а у нас Agile" - это просто очередная причина. Если смотреть глубоко, то Agile утверждает следующее: (а) долгосрочное планирование не должно быть фетишем; (б) трезво оценивайте свою способность к реалистичному планированию. И дальше как практический способ - держите product backlog на том горизонте, на котором можете, на коротком горизонте (1-3 месяца) он должен быть конкретным и пригодным для детального планирования спринта, а на длинном (полгода и более) - достаточно детальным для представлений о развитии продукта. Сроки - ориентировочные. В обучение Product Owner'а это входит (правда, я проходил тренинг Jeff Patton, он гуру, говорят, все бывает по-разному).

Что касается интеграции. в том числе от разных подрядчиков. то как только Заказчик жестко требует 2-3 недельного периода выпуска обновлений на пром, подрядчикам просто некуда деваться от налаживания интеграционного тестирования. На эту тему есть характерный кейс Ростехнадзора (там подрядчик у 17 подсистем был один, но команды разные). Классический выпуск приводил к тому, что после релиза раз в полгода комплекс 1-2 месяца приводили в чувство, а трехнедельные релизы это устранили. Кейсу уже 4 года, Заказчик счастлив. Подробности можно посмотреть http://mtsepkov.org/GosAgile-2015-11 (рассказывала Марина Макарчук, она - Заказчик).

Подводя итоги: трудности есть, но они не в методах, а в головах. Метод как раз жестко нацелен на то, чтобы проблемы были решены, ты не можешь выдать DoD "мы внедрили метод", не решив эти проблемы.

3. Я тут посмотрел автора поглубже. Если пойти на сайт компании, где автор - CEO, то компания ПРОДАЕТ Agile и DevOps крупным заказчикам. Либо автор продает то, во что не верит, либо журналист исказил его мысли до неузнаваемости. И получается. что к статье нельзя относиться, как к мнению эксперта. При этом, помимо CEO в компании два человека "старой школы"...

Конечно, Agile проще внедрять в маленьких компаниях, но это - вообще тривиальная мысль. Что, скажите, сложнее делать в маленьких компаниях. чем в больших? Разве что вести себя деструктивно и насаждать бюрократию :) Так что эта мысль не стоит большой статьи. Автор-то при этом ничего не пишет про то, как в больших компаниях это делать. А за развитие Agile тут наработаны практики и методы, например, SAF.

Xто касается "инноваций раде инноваций", то мы тут недавно обсуждали это дело, и возникла гипотеза, похожая на правду, что ряд менеджеров внедряет новое как приобретает новые гаджеты - все надо попробовать. При этом еще есть исследования, которые показывают. что регулярные изменения для компаний в целом очень полезны :)

4. Continuous Integration, на мой взгляд, must уже 10+ лет (хотя я понимаю, что есть реликты), с delivery сильно сложнее. Тем не менее, есть крупные компании (например, badoo), где это реально применяется. Есть много разных практик, как это делать, в том числе для разных сложных проектов. Включая DWH, такие рассказы я тоже слышал. Фишка в том, что при непрерывной поставки мы делаем малый квант изменений, который проверить и даже исправить гораздо проще, чем большой. И в некоторых компаниях именно так и делают. Если интересно, можно обсуждать уже технические задачи, опыт организации обновлений при том, что работа идет с большими массивами данных у меня есть.

5. Неправильно выстроенные процессы и отсутствие головы у тех, кто их выстраивал приводят к большим проблемам независимо от того, по какой методологии это все делается. А крики про то, что нельзя оперировать сроками больше 2 недель свидетельствуют лишь о незнании предмета кричащими.

На самом деле, в Agile есть довольно много практик работы с требованиями. Userstory с планированием релизов по MVP. Use case, как альтернативный вариант, при чем он не так давно был довольно интересно адаптирован Якобсоном для гибкого планирования (UseCase 2.0). Domain Driven Design для корпоративной разработки. Сложная архитектурная работа в SAF.

B при этом есть отдельные практики. касающиеся того. как предотвратить необоснованные метания, но сохранить требуемую гибкость. Ведь основная-то проблем - именно в тоем, что характерный временной лаг изменений бизнеса во многих областях - 2-4 недели. И IT должно успевать, иначе оно становится ограничением для бизнеса. Такой сейчас мир.

Елена Верещага Максим Цепков , спасибо! Как всегда - детально и обстоятельно.

Позже соберусь - и тоже приведу примеры.. А сейчас за неимением времени отвечу коротко.

В моем понимании "чистых методологий" не существует - ни Agile, ни RUP не внедряется в чистом виде - а "пилится под себя". То, что развитие состоит в том, что отрицаются некие предыдущие подходы - да, в этом собственно оно и состоит. Но никогда я не видела внедрение какой-то методологии "из коробки". А всякие попытки сохранить "чистоту подхода" как раз и приводят с высокой вероятностью к провалу. Однако соглашусь с Вами, что есть ключевые принципы - и их надо придерживаться - ради чего это и затевается (нужно понимать - какая проблема прежнего подхода решается и за счет чего). Вот тут как раз хотелось бы остановиться подробнее. Но не в этот раз ))

И в чем, мне кажется, мы с Вами сходимся, но как бы с разных сторон - это в том, что во многом все зависит от специалистов, применяющих метод, нежели от самой методологии. В хороших руках любая методология будет "жить". Проблемы провалов связаны как правило, не с методом ведения проекта - а как оно делается.

Долгосрочное планирование - всегда сложность и искусство. Проблема в том, что многие с криками "у нас Agile" на это забивают. Действительно - зачем, раз так сложно? Проще с шашками.

И поймите - я не против Agile. Я за! )) Я прекрасно вижу ограничения того же RUP. Там есть хорошие идеи и в этом есть развитие. НО! Меня коробит, когда это романтизируется, охватывается ореолом "инновационности" и преподносится как "серебряная пуля". К тому же он вовсе не в-новинку - об eXtreme Programming заговорили (а кое-где и внедрили, правда те еще приколы были) более 10 лет назад...

В любом случае - продолжаем беседу... Обменяться живым опытом (как + , так и -) всегда интересно! ))

Максим Цепков Про внедрение методологий подход классики (RUP, PMBOK) и Agile тоже кардинально отличается. Классика говорит - возьмите исчерпывающий многостраничный guide, вычеркните ненужное и используйте. Agile говорит другое - возьмите простой метод "из коробки" - Scrum, Kanban, внедрите "как есть", а потом - запустить совершенствование, точки, где это происходит процессно встроены в метод (ретро). При совершенствовании - используйте набор практик как готовый, а не подходит - придумывайте свое. Но при этом есть иерархия сверху-вниз, от ценностей и принципов к конкретным практикам, и трассировку надо сохранять.

В инновационности и романтике надо разбираться более конкретно - потому что в чем-то она есть, а в чем-то - нет. XP и Scrum появились 15 лет назад, но при этом продолжают развиваться, а применение Scrum вне IT, что сейчас делают - является определенной инновацией. То есть надо работать прагматично.

А те, кто продает серебряные пули и светлое будущее - они были, есть и будут, и будут продавать все новое, вернее, все КАК новое. Их породил маркетинг начала 20 века. Это не проблема Agile, это особенность развития современного мира. А он - таков как есть, другого у нас нет, живем в этом.

И да, продолжаем беседу!

Войдите, чтобы комментировать.