Хочу поспорить/покомментировать пост Ильи Хамушкина про его, как мне показалось, в целом нерадужные впечатления от agile-методологий. С начала статьи у меня было ощущение, что я понимаю слово "agile" по-другому, и так оно и оказалось:
Итак, главная фишка agile методологии разработки — это непосредственное общение внутри команды, с минимумом спецификаций и других технических документов и с максимумом реального общения.
Я ни в коем случае не выделяю это даже в необходимые черты agile-методологий, и уж тем более не считаю это определяющим. На большом количестве общения в команде, причем с участием заказчика, если мне не изменяет память, настаивает только одна agile-методология — XP. Но даже она, кажется, не настаивает на минимуме спецификаций. В фундаментальной статье Мартина Фаулера "Новые методологии программирования", где он описывает и сравнивает agile-методологии, за основу взята именно их гибкость — способность адаптировать процесс разработки к меняющимся требованиям прямо по ходу этого процесса.
В качестве свежего личного примера хочу привести наш готовящийся скоро к выпуску проект в Яндексе. Мы не пытались построить процесс по какой-то конкретной описанной методологии (и уж тем более не по XP, которую я просто не люблю). Я даже думаю, что многие участники проекта и не знают, что мы работаем по "agile-методологии" :-). Вместо этого мы просто применяем принципы, которые кажутся разумными, и в итоге проблемы, которые Илья упоминает в статье, у нас просто не случились:
команда распределена регионально (в смысле люди сидят в разных зданиях); сильно ухудшает коммуникацию; на самом деле при таком раскладе нормальный agile почти невозможен;
Наша команда распределена по Екатеринбургу, Москве и Питеру, причем разделение идет прямо "по-живому": например питоновый код и HTML'ные шаблоны пишут люди в разных городах. Оперативная коммуникация идет через Jabber, но основа общения между участниками проекта — баг-тракинг. Мы пользуемся им очень активно, и это одна из составляющих нашей гибкости: мы всегда знаем, что нам нужно делать, от чего можно безболезненно отказаться, и во что нам встанет очередное изменение направления развития.
бизнес/заказчик все таки пишет подробные спеки; в этом случае пролеты гарантированы, т.к. скорее всего спеки нормально писать в agile темпе никто не сможет;
Вот с этим я не согласен максимально. Без спецификаций работать по agile-методологии вообще невозможно, потому что в спецификации написано текущее согласованное видение всех участников проекта о том, буквально, куда все идут! Если не знать этого, то совершенно невозможно куда-то гибко поворачивать.
Кто их будет писать — вопрос второстепенный, на самом деле. У нас их пишет тот, у кого получатся полно и читаемо формулировать (я :-) ). Но что именно туда писать, определяется в общении с заказчиками, менеджерами и разработчиками. Большой ошибкой Ильи мне тут кажется то, что он воспринимает подробные спецификации от заказчика помехой темпу разработки, который устанавливается целью agile-методологии. На мой взгляд, темп — это вторично, он появляется сам по себе, если все остальное делается правильно. И отказ от написания читаемых и всем понятных спецификаций здесь точно не помогает.
командой управляет не технический менеджер или менеджер который не может прочитать/подправить код; это просто беда, такой менеджер скорее всего будет стопорить работу лишними вопросами и пустыми разговорами;
Если нетехнический менеджер стопорит работу лишними разговорами, то это просто плохой менеджер :-). Но он вовсе не обязан это делать. У нас так вышло, что менеджеров два: технический и нетехнический. Технический пишет спецификации, следит за полезностью и актуальностью баг-тракера, планирует разработку, думает над архитектурой проекта. Нетехнический держит в голове общее видение проекта и определяет на крупном уровне приоритеты задач, для чего разговаривает с заказчиками и маркетингом. Знали бы вы как технический менеджер доволен, что ему не приходится заниматься этой частью :-).
Другими словами, нетехнический менеджер может быть очень полезен. Его только не надо грузить несвойственными ему полномочиями.
Есть, кстати, место в статье, где я на 100% с Ильей согласен:
Итак простой вывод для читателей-разработчиков: если на собеседовании на новую работу/проект вы услышали волшебное слово agile, не спешите радоваться :-) позадавайте побольше общих вопросов о команде, менеджерах и заказчиках.
+1
Ускользающие методологии
Какое-то время назад прочитал у одной дамы в блоге (забыл у какой, к сожалению :-( ) наблюдение, что большинство современных методологий, технологий, практик и т.п. описываются примерно такой схемой:
- Сделать предварительные наблюдения и оценки
- Произвести магию
- Обработать результаты и сделать выводы
Другими словами, как бы подробно ни была описана методология, как бы просто или сложно ни было делать то, что она подразумевает, всегда есть этот второй пункт: личная интерпретация методологии человеком, который ее применяет. В зависимости от того, что он в этой методологии видит, какие ставит приоритеты, результат получается кардинально разным. Все зависит от человека.
Комментарии: 15
Интересно, Яндекс делает проекты сторонним заказчикам ? Впервые об этом слышу, можно примеры таких проектов, уже работающих.
Ваня, не спойлери болдом! :)
Нет, я не имел в виду сторонних, это внутрияндексовые заказчики. У любого проекта всегда есть человек, фактически исполняющий роль заказчика: он придумывает проект и говорит, что там должно быть.
Maxime: нет, с чего вы взяли?
Я вот думаю, когда уже набор магических принципов, правильное применение которых полностью зависит от интерпретации, перестанут называть, прости господи, методологией?
Лень, а я думаю, что у людей, которые эти методологии разрабатывают, в самом начале стоит целью именно то, что можно будет применять последовательно и предсказуемо. Больше того, я думаю, что частично это получается.
Целью разработки методологий является зарабатывание денег на консалтинге по внедрению оных в процесс разработки, разве нет? :)
Пишу свои мысли по agile еще разок. Чтоб прояснить наше понимание и найти побольше общего :-)
Я совершенно не собирался давать определения agile в своей заметке. А рассмотрел частный случай, описал грабли на которые наступил, так сказать просто поделился опытом (местами наболевшее :-)
В начал специально дал линк на общие понятия по agile (советую прочитать, если не заглядывали).
Совершенно верно, гибкость — это цель методологии agile, но не средство. А вот например итеративная разработка — это средство достижения гибкости. А еще я писал, про спецификации. Гибкая разработка подразумевает быструю адаптацию при перемене спецификаций или общих требований проекта. Так вот я хотел сказать, что в реальном проекте на полную переписку первоначальных спек времени как правило нет, но есть живая коммуникация, позволяющая передавать спеки из головы спеко-писателя в голову разработчика устно (извините за каламбур).
И вот я могу привести конкретный пример из проекта, в котором я участвую. Что при разборе задач на очередную итерацию, в которой меняется, например, добрый кусок функционала (ага, гибкость вот она) бизнес не успел написать полноценных спек. И начинается долгий процесс выяснения деталей по джабберу в чате (где-то я это уже читал ;-). Из-за ушедшего времени на коммуникацию не укладываешься в сроки итерации по решению задач. И в этоге получается затормаживание темпа разработки или ухудшение качества кода.
Так вот у вас в «Яндекс» куча работающих проектов и готовых продуктов и никто не гонит сроки и темпы (я так думаю), как например в свеже-запущенном стартапе. Так что мы с тобой описали как минимум два частных случая, по которым наши читатели смогут ориентироваться в этом волшебном мире agile ;-)
нельзя писать о недостаках методологии имея проблемы со сроками написания спек.
простой вопрос, а как вы провели планинг и тот-же planing pocker провели, если нету спеки и непонятно что делать? что вы записали в беклог? естимейты в беклоге ставит програмист, что он туда понаписывал?
вы просто не можете начать спринт, если нету спеки. А если допустить что вместо спеки вам дали общии и мутные мысли на тему "наш новый вижин функциональности", то в баклог пишите "уточнить/прототипировать и т.д." и соответсвующий эстимейт на это.
Кроме того есть скрам-митингде, ежедневные, на них отсутсвие спеки декларируется как блокер, и начинаеш заниматься другими делами, пока его не устранять. И еще есть спринт ревью где можно обобщить, что имено привело к выкидыванию записей из беклога и как изменить процесс чтобы достигать цели спринта на следующих итерацияхю
А я хотел сказать, что это как раз неверная постановка проблемы. Именно из-за того, что процесс у вас поставлен так, что времени нет на спецификацию, вы полчаете остальные проблемы.
Вот она, проблема. У вас уже есть сроки итерации, но задачи в ней еще до конца не описаны. Cencio выше написал про это, и я с ним согласен. Практика показывает, что сроки итерации, придуманные по какому-то произвольному астрономическому признаку (типа: "релиз раз в неделю"), не работают. Работают только сроки типа "этот набор функциональности, в том виде, который описан в спеке, мы думаем, что будем делать 54 часа". То есть сроки должны идти от фич, а не просто тикать, как тактовый генератор.
Яндекс большой, он не работает как одно жесткое неделимое целое. Фактически каждый отдельный проект — это и есть стартап, только степень риска меньше. А методологии в каждом проекте, в общем-то, свои. И темпы со сроками конечно же есть, хоть и отношение к ним разное. Например далеко не все менеджеры разделяют то мнение, что я написал абзацем выше. Есть группы, в которых люди работают в более жестких рамках.
Ну вот и получилось, что мы пришли к общему знаменателю. Как все заметили, я описал действительно проблему, в которой каждый увидел свою причину. Так что цель которую ставил я одолел . Хотел всего лишь дать замечание, что при выборе новой работы/проекта более внимательно отнеситесь к условиям управления проектом, срокам итп.
Особенно по этому поводу "в которой меняется, например, добрый кусок функционала". Если меняется таки добрый кусок функционала, разве не нужно пересматривать сроки итераций, по крайней мере этой кардинальной итерации. Разве не очевидно? Т.е. в рамках поставленного графика можно удерживаться пока это позволяют требования, например, добавлять по нескольно мелких фишек к функциональности, которые не зависят от не реализованных. А ситуацию когда меняется концепция или что-то ещё более или менее глобальное, имеет смысл рассматиривать как исключительный случай.
У нас вообще заказчики разбаловались ;-(. Заказывая почасовку они не думают о спецификациях, т е вообще. Так, немного намекают чего им хотелось бы видеть - далее мы сами пишем спецификацию, реализуем, они смотрят, и говорят нравиться или нет. Платят они по любому потому позволяют себе вольность задействовать наш креатив на реализацию "сделай то, сам не знаю чего, но чтоб красиво." .А не пишут specs они только потому, что сами не знают как результат доложен выглядеть. Это происходит в итерациях. Сделали кусок - собрались, посмотрели, решили что нравиться что нет. Кстати насчёт последнего тоже бывает много конфликтов. Нам (часто) нравиться что мы (сами) сделали, а заказчику нет. В результе пришли к компромиссу - ставим на Web, смотрим на реакцию юзеров. Так называемое "parallel deployment" когда одна фича, реализованная по разному, показывается разным группам юзеров. Далее, судя по статистике отделяем котлеты от мух. И не всегда прав заказчик (так же как и мы).
Вообще, это самый нормальный процесс. Писать спецификацию лучше получается у специалиста, потому что он знает ограничения среды, в которой работает, и не придумает невозможного. А заказчик действительно не должен представлять в деталях конечный результат. Например, когда девушку стрижет в хорошей парикмахерской грамотный парикмахер, она не говорит ему, где сколько оставить и куда завить. Она просто хочет, чтобы было красиво.
Я бы очень огорчился, если бы клиенты писали сами все требования.
Я же не хожу в автосервис с точным списком работ, я хочу чтобы «перестало стучать», я не знаю, что нужно делать с моим сцеплением, мне лишь нужно, чтобы оно заработало.
Каждый должен решать то, в чём он профессионал.
Иван, не могли бы вы увеличить список последних комментариев в RSS? Ридер проверяет раз в день примерно, и за это время часть комментариев успевает из RSS выпасть (: