понедельник, 8 февраля 2021 г.

[soft.process] Погружение в Agile: так есть ли в этом всем смысл?

Пожалуй, нужно подвести итог темы, начатой в ноябре прошлого года. Про Agile и непрекращающийся шум вокруг него.

Начитался и наслушался тут разного. И, похоже, сложилось у меня некоторое мнение. Уж не знаю, стоит выносить его на публику, но попробуем.

Итак, Agile есть и он работает. Действительно.

Но для того, чтобы объяснить, почему же работает не везде, не всегда и не так, но при этом вызывает столько обсуждений, нужно провести внезапную аналогию с физкультурой и спортом. А также модными (в прошлом) течениями в этих областях.

Так уж получилось, что я помню ажиотаж вокруг аэробики. И помешательство на теме бега трусцой. И повальное увлечение культуризмом. И набитые битком залы после легализации каратэ в СССР. Вероятно, между концом 1980-х и концом 2010-х были еще какие-то волны популярности тех или иных "увлечений", которые уже прошли мимо меня (типа кроссфита или уличного воркаута). Ну да не суть.

Суть в том, что когда появилась та же аэробика или бег трусцой, туда ломанулось очень много народу. Немного тех, кому это действительно было надо и кому это подходило. Но еще больше тех, кому это было не нужно или же вообще противопоказано по медицинским показаниям. Что в итоге привело к множеству разочарований. Зачем последовал и закономерный спад интереса и практическое забвение тех или иных направлений.

Значит ли это, что та же аэробика не работает?

Нет. Она работает. Если применяется с умом.

Тоже самое и с бегом трусцой.

Тоже самое и с культуризмом. Или каратэ.

Все это приносит результат. Точнее так: все это может приносить результат.

Только вот есть ряд важных нюансов.

Вы должны точно понимать, какой результат вам нужен и может ли принести выбранное вами направление этот самый результат. Если вы хотите избавиться от лишнего веса, то далеко не факт, что бег трусцой или каратэ вам в этом помогут. Аэробика и культуризм, кстати говоря, также не обязательно будут рациональным выбором. Ну или если вы хотите лихо быть морды в уличных драках, то не факт, что каратэ хороший выбор, может вам лучше было бы походить на бокс или на армейский рукопашный бой.

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

Далее, вы должны строго следовать какой-то методике дабы развиваться в выбранном направлении поступательно, не зарываясь, не зарабатывая ненужных травм, но при этом все-таки прогрессируя.

И вот тут мы подходим к главному, на мой взгляд.

Как мне кажется, в разговорах про Agile в разработке ПО слишком много внимания уделяется именно методикам. Конкретным последовательностям конкретных шагов, которые должны привести к должному результату.

Да, методики важны.

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

Ну вот представьте себе тренера по спортивной гимнастике, у которого уже есть методика подготовки юных спортсменов начиная, скажем, с 5 лет. Типа первый месяц делаются такие-то и такие-то упражнения в таких-то сочетаниях и с таким-то количеством повторов. Далее такие-то и такие-то. Далее подводится промежуточный итог. Далее вводятся такие-то и такие-то упражнения. И т.д., и т.п.

Это ведь нормально, не правда ли? Нас бы сильно удивил тренер, который набирает группу 5-леток и толком не представляет чему и как он их будет учить в ближайшие несколько лет.

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

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

Тоже самое происходит и с методиками разработки ПО. С той лишь поправкой, что сама по себе разработка ПО значительно моложе, чем физкультура и спорт.

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

И вполне очевидно почему конкретным методикам нужно следовать. Ведь если вы будете точно и добросовестно следовать программе тренировок своего тренера, то в итоге вы придете к результату (если не случится какого-то форс-мажора в виде травмы). Точно так же и с подходами к разработке ПО: следуйте точно выбранной методике и вы получите результат, на который эта методика ориентирована.

А вот будет ли это тот самый результат, который был нужен вам?

Не факт.

Вот захотели вы постройнеть и увлеклись тяжелой атлетикой. Прошло несколько лет. Вы стали сильнее и жмете 200кг от груди, но при этом потяжелели еще на 20кг и живот стал еще объемней. Да, теперь у вас не пивное пузо, а комок мышц. Но ведь и не осиная талия, о которой мечталось.

Значит ли это, что методика ваших занятий в тяжелой атлетике не сработала?

Отнюдь. Она как раз привела к логичному результату.

А уж то, что логичный результат не совпал с вашими ожиданиями, так это уже про другое. Это уже о том, о чем вскользь говорилось выше: вы должны понимать, какой результат вам нужен, и вы должны понимать, что в вашем случае нет противопоказаний.

И вот как раз с этими двумя пунктами при распространении Agile-подходов и наблюдаются основные проблемы. Т.е. люди тупо не озадачились подумать о том, а зачем им вообще Agile. И не приведет ли Agile в их случае к еще большим проблемам. Ну или озадачились, но недостаточно серьезно, со слишком большой степенью wishful thinking.

Соответственно, получили не тот результат, который хотелось. А виноват, естественно, Agile.

Однако, это пока что была лишь одна сторона разговора об акценте на методике. Теперь нужно поговорить и про другую сторону.

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

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

Гимнаст может замечательно выполнять сложную вольную программу на тренировке. Но психологически перегорать на соревнованиях и заваливать элементы, которые до этого делал с "закрытыми глазами".

Техничный боксер может стушеваться и проиграть напористому сопернику, который прет вперед как танк ничуть не боясь нарваться на встречный удар.

Команда из ярких футболистов, каждый из которых отличается великолепной индивидуальной игрой, запросто проиграет, если они не сыграны и не являются настоящей командой, а каждый из них "тянет одеяло на себя".

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

И не случайно от тренера в спорте настолько много зависит. Хороший тренер -- это отнюдь не массовое явление.

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

А теперь вопрос: а откуда возьмется такое количество хороших "тренеров", если Agile за короткое время стал применяться так массово?

Так что, на мой взгляд, при нынешней моде на Agile мы вынуждены иметь дело с взаимным влиянием двух больших проблем:

  1. Концентрация именно на формальной части Agile-методик, без должного рассмотрения таких вопросов как применимость выбранной вами Agile-методики в ваших конкретных условиях.
  2. Недостаток хороших "тренеров", которые приведут вашу команду, работающую по Agile, к успешному завершению проекта.

Что, в итоге, и ведет к большому количеству споров о том, работает ли Agile или нет, правильно ли его готовят или нет, стоит ли переходить на Agile или нет, и т.д., и т.п.

PS. На правах рекламы сообщаю, что у stiffstream-а есть пара квалифицированных рабочих рук, которыми вы могли бы воспользоваться, если вам действительно нужно качество.

Комментариев нет: