Agile software development
Dec. 21st, 2010 12:51 pmКогда в открытой аудитории начинается обсуждение проблем проектирования, то весьма часто к обсуждению присоединяются сторонники подхода Agile. И, обычно, говорят, что проблемы от того, что традиционное проектирование плохое, а в Agile никаких проблем не будет, потому что Agile хорошее.
У меня же Agile вызывает стойкую ассоциацию с бегом курицы без головы. Если отойти от того, что сама ассоциация неприятна, то определяет она вполне характерное движение. Бег не потому, что в этом движении есть смысл или польза, а потому что помимо головы ещё есть ноги, рефлексы и реакции.
Можно сказать, что Agile является формой естественного эскапизма, когда необходимая, но сложная или неинтересная работа заменяется не бездельем, а другой [как бы] работой, более простой или интересной. Безделье само по себе тягостно, к тому же требует оправдания. А тут все работают.
Помимо психологического фактора, Agile своеобразно соответствует нескольким, в том числе современным, особенностям индустрии. Тезисно, можно посмотреть на следующие направления.
Проектирование – это тоже сложная деятельность, результат которой можно оценить. Успешное проектирование ценится не слишком хорошо, на уровне «само собой разумеется», в то время как провалы в проектировании наглядно портят весь проект. Используя Agile, сама деятельность по проектному управлению сохраняется, но переводится в спонтанную категорию (ad hoc) где её качество становится смутно оцениваемым.
Второе, на мой взгляд, выдающееся качество -- ответственность практически полностью перекладывается на заказчика, особенно в областях не входящих в компетенцию заказчика. Вот это последнее особенно ценно. Это позволяет почти любую проблему исполнителя документально обосновать запросами заказчика.
Этим же подходом качество архитектурных решений и общая системотехника так же переводится в смутную область.
Обходится проблема массового привлечения персонала недостаточной квалификации. Задача формулирования заданий и контроля исполнения сводится к утилизации простейших доступных навыков исполнителей. Результат неквалифицированного труда так же представляется как результат выполнения запроса.
Процесс выполнения работ неявно приводится к схемам Time&Material и Outstaffing. Собственно, проблема тут в неявности, поскольку контроль, в том числе и времени и состава аренды, остаются у исполнителя.
Или кратко, Agile позволяет переложить на заказчика проблемы проектирования, архитектуры и общей низкой квалификации производителей работ и исполнителей.
PS: Прочитав этот текст должен признать его видимую черствость к сторонникам Agile, это уже моя проблема формы изложения, а не отношение к людям.
У меня же Agile вызывает стойкую ассоциацию с бегом курицы без головы. Если отойти от того, что сама ассоциация неприятна, то определяет она вполне характерное движение. Бег не потому, что в этом движении есть смысл или польза, а потому что помимо головы ещё есть ноги, рефлексы и реакции.
Можно сказать, что Agile является формой естественного эскапизма, когда необходимая, но сложная или неинтересная работа заменяется не бездельем, а другой [как бы] работой, более простой или интересной. Безделье само по себе тягостно, к тому же требует оправдания. А тут все работают.
Помимо психологического фактора, Agile своеобразно соответствует нескольким, в том числе современным, особенностям индустрии. Тезисно, можно посмотреть на следующие направления.
Проектирование – это тоже сложная деятельность, результат которой можно оценить. Успешное проектирование ценится не слишком хорошо, на уровне «само собой разумеется», в то время как провалы в проектировании наглядно портят весь проект. Используя Agile, сама деятельность по проектному управлению сохраняется, но переводится в спонтанную категорию (ad hoc) где её качество становится смутно оцениваемым.
Второе, на мой взгляд, выдающееся качество -- ответственность практически полностью перекладывается на заказчика, особенно в областях не входящих в компетенцию заказчика. Вот это последнее особенно ценно. Это позволяет почти любую проблему исполнителя документально обосновать запросами заказчика.
Этим же подходом качество архитектурных решений и общая системотехника так же переводится в смутную область.
Обходится проблема массового привлечения персонала недостаточной квалификации. Задача формулирования заданий и контроля исполнения сводится к утилизации простейших доступных навыков исполнителей. Результат неквалифицированного труда так же представляется как результат выполнения запроса.
Процесс выполнения работ неявно приводится к схемам Time&Material и Outstaffing. Собственно, проблема тут в неявности, поскольку контроль, в том числе и времени и состава аренды, остаются у исполнителя.
Или кратко, Agile позволяет переложить на заказчика проблемы проектирования, архитектуры и общей низкой квалификации производителей работ и исполнителей.
PS: Прочитав этот текст должен признать его видимую черствость к сторонникам Agile, это уже моя проблема формы изложения, а не отношение к людям.
no subject
Date: 2010-12-21 10:07 am (UTC)1. Agile требует проектирования, просто оно покрывает более короткий период времени.
2. Нормальная agile команда ничего никуда не перекладывает, а занимается всем как и положено.
Т.е. мне кажется, что ты взял наблюдения за низкокачественными командами и обобщил это на всю методологию.
no subject
Date: 2010-12-21 10:55 am (UTC)1. "Классическое" проектирование подразумевает цикличность и итерационность.
1.1. В классическом подходе размер циклов может быть большим, средним маленьким, разноуровневым и это, в идеале, величина определяемая измеряемая изменяемая и т.д. В Agile микроциклы практически hard-coded, это некий культ. :)
1.2. Определение и реализация тактических параметров без закрытия стратегических, очень хорошо может оказаться бессмыслицей. Так же как и без понимания картины в целом, хотя бы в крупную клетку, которая определяет взаимосвязи между отдельными элементами. Это как перед испытаниями выяснить, что танк должен плавать. Начинать что-то кодировать до того, как сложена общая картинка теоретически можно, но практически это работает на достаточно узком классе задач. Хорошо ещё когда разработчик знает этот класс.
2.1 imho, это не вопрос субъективной нормальности. Когда на раннем этапе нет достаточных данных, объективно нельзя принять правильное решение, его можно только угадать или не угадать. Нормальная команда может чаще угадывать, но всё равно пролёт это вопрос времени.
Нет данных, это не просто "то-то не ясно", а неясен ни масштаб, ни функциональность, ни динамика её изменения, ни взаимозависимости. И т.д.
2.1 Заказчик сказал, надо сделать A,B и С, команда сделала, потом выясняется, что это какие-то частные отображения, надо было делать не то и не так, выяснилось тогда, когда потом до этого дошли. Кто виноват? Заказчик вообще-то не специалист в разработке, сказал чего бы ему хотелось в первую очередь, заявка есть, работы выполнены, ресурсы потрачены. Исполнитель хотелки сделал. Я в целом не о злонамеренности.
2.2 Нормальная команда может сделать что-то хорошее в очень широких методических рамках, выдающийся специалист может и методологию под себя прогнуть. :)
no subject
Date: 2010-12-21 01:10 pm (UTC)А в другом месте, мне угрожали, когда отказалась дать положительный отзыв именно о команде проектирования (через 2,5 года команда огребла проблемы по полной, со статьями в печати не удовлетворив и запоров проект для одного из крупнейших заказщиков в стране). Самым проблемным местом везде была проверка выполнения: никто точно не знал почему и на сколько сдвигаются сроки, а уж сколько раз хватала за руку, что не все требования заказчика регистрируются -- не счесть...
no subject
Date: 2010-12-21 03:56 pm (UTC)Использование специалистов не экстра класса оно всех интересует, и меня интересует, резонанс понятен. Вопрос в том, где грани. Насколько это управляемо. В конце концов, мы все решаем общие проблемы, и моя цель не в том, чтобы кого-то оскорбить, а чтобы подумать.
Да, умное руководство -- это прекрасно, но тривиально. Но интересно. :) Вот проверка выполнения это предмет, можно сказать, водораздел. И управление требованиями -- предмет. Вроде и не бозон Хиггса, а обычно запущенно.
PS: написала бы книжку.
no subject
Date: 2010-12-21 05:00 pm (UTC)Макс, чем дальше, тем больше уверена, что нам не хватает не методик, книжек, систем управления, а людей которые понимают простые истины:
сделал -- проверь за собой,
не знаешь -- спроси,
забыл -- не ври, что помнишь.
Самая главная проблема: за всеми все нужно перепроверять и очень мало людей способных даже простое дело доводить до конца.
( и уж совсем личное: очень трудно объяснить начальству, что нельзя вынуждать делать человека то, в чем он не вполне разбирается (оставляя при этом без помощи)).
no subject
Date: 2010-12-22 03:17 pm (UTC)Простые навыки честного труда... Проверять за собой непросто, и не всем дано. Тем более в нашей суете. Но вообще конструктивная проверка -- не ужас как сложно. Скорее мало востребовано.
А начальство думает "А чё, я-то обхожусь и ничё" :)
no subject
Date: 2010-12-21 06:03 pm (UTC)no subject
Date: 2010-12-22 02:49 pm (UTC)Опять же кто и что пишет? Когда пишет? Кто и когда читает? Пишет кодер после беседы с заказчиком? Ведь беседа кодера с каким-то представителем заказчика -- это то, что если не диктует, то продвигает Agile?
Если нет ролей да и людей в штате, если нет таймслотов, если банально нет технологии и управления документирования, то откуда возмётся документация? Как говорил один персонаж "порнография сама себя не скачает. :)
no subject
Date: 2010-12-22 03:57 pm (UTC)no subject
Date: 2010-12-23 08:16 am (UTC)no subject
Date: 2010-12-23 08:19 am (UTC)Scrum это больше даже не про коммуникации, а про способ не заниматься лишним бумаготворчеством всем составом команды. Что на мой взгляд (про весь состав) есть большое благо для любого проекта.
no subject
Date: 2010-12-23 08:20 am (UTC)no subject
Date: 2010-12-23 10:06 am (UTC)no subject
Date: 2010-12-23 11:59 pm (UTC)no subject
Date: 2010-12-23 10:02 am (UTC)При этом я считаю, что орудием инженера является слово. :)
no subject
Date: 2010-12-24 12:05 am (UTC)Фокус в том, что заставлять команду писать еженедельные отчеты - херовый способ потратить время. Хороший способ - ежедневная летучка на 10-15 минут во время которой отвечается только на три вопроса "что сделано?", "что запланировано?", "что мешает?".
Во-первых, команда оказывается в курсе того, что делают остальные. Во-вторых, ничего не успело забыться. В третьих, обеспечивается хорошая скорость реакции на проблемы. В четвертых, руководитель проекта каждый день знает в каком состоянии проект.
no subject
Date: 2010-12-21 06:02 pm (UTC)1.1. Да. Впрочем, не вижу в том вреда.
1.2. Нигде в agile не сказано, что нужно определять тактику без определенности в стратегии.
2.1. Если заказчик позволяет себе говорить, что нужно сделать "A, B и C", то он сам себе дятел. Команда не телепаты и не предсказатели судьбы, и не знает насколько заказчику нужно именно это. Вставать в позу "пока мы твой проект полностью не обследуем - ни строчки кода не будет" еще больший идиотизм. В разы больший.
2.2. Не существует единой agile методологии. Даже если рассматривать фундаменталистов - их уже набралось на любой вкус и цвет, можно не гнуть текущих, а выбрать соседних, которые на копейку отличаются :)
no subject
Date: 2010-12-21 08:55 pm (UTC)no subject
Date: 2010-12-21 09:08 pm (UTC)no subject
Date: 2010-12-21 09:15 pm (UTC)Чтобы понимание отношения стратегии и тактики было настолько же прописной истиной, которую можно вынести за скобки, её надо вдалбливать столь же часто, как человек кушает в присутствии следящих за этикетом. То есть, трижды в день на протяжении двадцати лет.
Пока это невозможно, надо говорить об этом при каждом удобном случае.
Чего в Agile нет.
Как и понимания, какие истины являются прописными, а какие нет - у его сторонников.
no subject
Date: 2010-12-21 09:19 pm (UTC)no subject
Date: 2010-12-21 09:31 pm (UTC)На этот раз даже без намёка на какую-либо связь с тем, что я сказал, поэтому я совершенно не в силах расшифровать ваш комментарий.
Не затрудните себя более развёрнутым комментарием?
no subject
Date: 2010-12-21 09:39 pm (UTC)Я уж и не говорю, что и изначальное утверждение о том, что тактика должна следовать после стратегии - безосновательно.
no subject
Date: 2010-12-21 10:32 pm (UTC)Во-первых, вы считаете тезис "тактика следует за стратегией" прописной истиной для образованного человека, сродни умению пользоваться ножом и вилкой. Или умению делить в столбик для физика-теоретика.
Во=вторых, вы считаете, что моё первоначальное утверждение "тактика следует за стратегией" безосновательно, то есть, спорно.
Я вижу здесь непоследовательность.
no subject
Date: 2010-12-21 10:40 pm (UTC)no subject
Date: 2010-12-22 03:09 pm (UTC)Вто время как мы с тобой вполне обходимся словами и ничего из пенопласта при этом не выпиливаем :)
no subject
Date: 2010-12-22 03:02 pm (UTC)no subject
Date: 2010-12-22 02:59 pm (UTC)Вот так говоришь "ну мы тут все культурные люди", а потом оказывается что в метро шесть молодцев в ряд сидят при стоящих дамах.
Программист php не обязан хорошо писать на c, agile разработчик не обязан хоть что-то знать из понятий классического проектирования. В школах им не учат.
Опять же, хороший специалист, умный, образованный, эрудированный, опытный может работать с очень разными методиками. Как говорится, при некотором уровне мастерства вид спорта не имеет значения.
no subject
Date: 2010-12-22 04:06 pm (UTC)no subject
Date: 2010-12-22 02:40 pm (UTC)1.2 Кем и когда определяется такая стратегия, я не вижу ни ролей, ни времени, ни техпроцесса, ни бюджета etc в рамках подхода Agile.
2.1 У заказчика нет экспертизы. Административный молоток есть и всё. Откуда у него в штате будет системотехник? То, что предметную область надо для автоматизации формализовать и систематизировать -- это задача и навык исполнителя.
Поза немного другая -- мы не будем тратиться на реализацию, пока не поймём где, что и как нам делать. Что исследовать, что моделировать, что прототипировать, что кодировать.
2.2 Я сужу об Agile с чужих слов и документов :) Не хотелось бы тебя за что-то грузить необходимостью ответов на глупые вопросы, но ссылку на какие-то канонические принципы Agile посмотрел бы с интересом. Я не просто так говорил про умных специалистов -- есть у меня ощущение, что есть классика, есть Agile, а есть классика раскрашенная под хохлому, то есть в Agile skin. ;)
no subject
Date: 2010-12-24 01:41 am (UTC)Я к тому, что судить по пионерам вообще плохая идея, хотя бывают места, где не пионеров мало и такие места меня раздражают.
no subject
Date: 2010-12-21 03:44 pm (UTC)отмазка: я, правда, книжек по агилу не читал и тренингов не проводил, и может просто каждый называет агилом то, что полноценым агилом не является :)
no subject
Date: 2010-12-21 04:53 pm (UTC)Например, если надо сделать кастомизацию Joomla под серию заказчиков, то, наверное, это не хуже чем ничего. Ведь переписывать Джумлу задача не стоит, [бедные] кодеры работают за еду. Кусок управления изменениями как-то живет.
Если говорить об идеологических стартапах, то тут неочевидно. Всё же такие стартапы строятся вокруг полноценной идеи, со всеми её концепциями и прочими богатствами.
И если Agile банально является альтернативой отсутствию или профанации управления, то может и баталий не было бы… :)