Scrum - секта или необходисть :)

Есть ли у Вас Scrum?


  • Кількість людей, що взяли участь в опитувані
    15
Статус: Offline
Реєстрація: 05.02.2007
Повідом.: 36992
Scrum - секта или необходисть :)

Вот прочел пост:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі


Анти-agile пост.
В мире, где все доброжелательны, честны, взаимозаменяемы, объективны, настроены на результат, синергичны и так далее и тому подобное, все новомодные методики работают. Кроме того, в этом мире все катаются на пони, едят радугу и какают бабочками. Если вы живете в таком мире, я искренне рад за вас, вы молодцы, и далее можете не читать.

У нас на Плюке все обстоит несколько иначе. Программисты не умеют верстать HTML, а дизайнеры почему-то не готовы писать код на C++. Кроме всего прочего, люди ходят в отпуска, болеют, опаздывают, ругаются друг с другом, и вообще занимаются антисоциальными делами. Увы. В раю жить дано не каждому.

То была вводная.Теперь о постулатах.

Коллективное принятие решений и коллективная ответственность

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

Встречаются как-то подводная лодка вероятного противника и русская, переговоры
русских:
- Кто кинул валенок на пульт?
Представители вероятного противника посмотрели на беспоpядок и говоpят:
- У нас в Амеpике такого нет!
- Да нет больше вашей Амеpики... Кто кинул валенок на пульт?!


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

Другая сторона медали - коллективное наказание в случае провала. Увы, но мотивация на достижение результата не может ограничиваться только положительными подкреплениями. Отсутствие рядом с пряником кнута означает абсолютную безнаказанность. Просто вообразите себе, что ВНЕЗАПНО отменили уголовный кодекс. Кто постарше может просто вспомнить лихие 1990-е с воруй/убивай. Вообразили/вспомнили? То-то.

Теперь представьте себе, что у вас в коллективе есть дизайнер, верстальщик и server-side программист. Допустим, верстальщик не успел к сроку, топменеджеры рвут и мечут и требуют крови. Дизайнер и server-side программист себя виноватыми не считают, они все сделали в срок. Коллективная ответственность предполагает и коллективное наказание, не так ли? Поэтому вы идете клевать мозк всему коллективу. Раз. Другой. Третий. Люди собирают манатки и валят куда подальше от такого руководителя. И правильно делают.

И самое главное. Коллективная ответственность противоречит концепции оценки ключевых показателей эффективности. Либо вы персонализируете достижения и провалы, и у вас есть KPI, либо - коллективная ответственность.

Вывод: коллективное принятие решений и коллективная ответственность - плохо. Ни того, ни другого быть не должно. Никогда не наказывайте невиновных и не поощряйте непричастных. Ответственность всегда персональная. Решения всегда принимает конкретный человек.

Тестирование продукта

В общем-то, нет никаких сомнений в том, что за качество продукта отвечает команда. В самом деле: кто еще ответственен за творчество, кроме как не авторы? У каждого, конечно, свои задачи, на их стыках возможны конфликты или просто недопонимания, где-то рядом бродит сволочь техлид-архитектор и ебет мозгиучит как не надо, бла-бла-бла, но тем не менее в своей зоне каждый отвечает за качество выполненных работ сам.

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

Сечете фишку? Нет?

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

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

Вывод: тестировщики в проекте - отдельные люди, а не разработчики, временно сменившие род деятельности. Только в этом случае процедура тестирования будет не просто формальностью, а процессом поиска и исправления недочетов.


Взаимозаменяемый коллектив

Допускаю, путем сильной мотивации можно обучить программиста C++ работе со стилями CSS, а дизайнера - править конфиги. Думается, при этом лояльность будет ни к черту, и качество работы тоже никакое. Говорят, все не так, и где-то есть люди, умеющие все сразу. Не знаю. Я таких полиглотов еще не встречал.

Шили плотники штаны -
Вот тебе и брюки!
Пели песенку слоны -
Вот тебе и звуки!
Лили воду в решето-
Вот тебе и здрасьте!

Лучше все же делать то,
Что ты делать мастер!
Ю. Ким, Песня о компетентности


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

Вывод: Универсальных солдат нет. Разделяйте обязанности. Грамотное разделение обязанностей повышает и качество и скорость исполнения работ.

Фиксированные по времени спринты


Допустим, для выпуска следующей минорной версии продукта необходимо исправить N известных багов и дописать X нового функционала. Это - план.

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

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

Любой большой проект с длительной историей в значительной мере развивается через фидбэк. Поддержка, исходя из моего опыта, требует от 30 до 60 процентов рабочего времени команды. Следовательно, либо постоянно идут "внеочередные" выкатки, либо в выделенное на buigfix время народ играет в Counter Strike, либо баги не фиксятся неделями.

Второй важный момент: я не встречал проекта где все выполняемые задачи квантизуются примерно на одинаковые разумно-небольшие промежутки времени. Ну то есть нарисовать и полностью отладить новый скин для Почты за неделю вполне себе реально, а вот выкатить новый элемент AJAX под реальную нагрузку - уже нет. А есть и более сложные задачи, реализация которых может занять и полгода, и год. Разбивать задачи между итерациями идеологически неверно, здесь я полностью согласен с теорией. Невеста не бывает наполовину беременной. Точно также и продукт не бывает наполовину сделанным. Либо у вас что-то в продакшене, либо - нет.

Вот и получается что фиксированные итерации - вещь слабо реализуемая. Не надо лицемерить и подстраиваться под сроки. Есть что выкатывать - выкатывайте. Главная задача - делать в срок и качественно. То, что на этой неделе было 2 выкатки, а следующие полмесяца выкаток не планируется - не беда. Если отставания от паланов нет - все нормально.

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

И последнее

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

Иными словами: проповедуется духовное единение вокруг единственного Просветленного, несогласные изгоняются, успех однозначно записывается на счет методологии, а неуспех - старательно игнорируется. ;)

Остался неотвеченным последний вопрос: что же делать если руководство непременно хочет от вас agile? Все просто: называйте agile тот процесс, который позволяет вам работать эффективно. И гоните ссаными тряпками всех этих мастеров с их фиксированными сроками, коллективной ответственностью, отсутствием Q&A и прочей новомодной красивой дребеденью.
У вас УЖЕ agile-разработка. Да еще и с определенными улучшениями! Правда-правда. Вы модное слово сказали? Вас услышали? Ну вот и ладно, всем спасибо, возвращаемся к девелопменту.

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

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

в програмировании пстоянно появляются модные фишки -это обычно на несколько лет. потом появляется что то другое. До аджайлов был RUP с тщетными попытками проектировать в UML. В лучшем случае брался написаный код в конце проекта по нему генерились UML диаграммы и вставлялись в ТЗ.
Была мода на COM и XML - теперь на AJAX и паттерны проектирования. И т.д.

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

А Скрам-мастер это не тоже самое, что менеджер/ПМ?
 
от того что кого то назовут скрам мастером вряд ли что то поменяется по сути.
ради понтов и не такие названия придумывают.
 
Была мода на COM и XML - теперь на AJAX и паттерны проектирования. И т.д.
Наличие моды, тем не менее, не означает неэффективность или бесполезность упомянутых технологий. Они просто были к месту в определённом множестве проектов. Точно так же и методологию разработки лучше выбирать, исходя из специфика проекта, а не создавать прокрустово ложе, превращая методики в догмы, и укладывать в него проект при помощи кувалды.
 
Наличие моды, тем не менее, не означает неэффективность или бесполезность упомянутых технологий. Они просто были к месту в определённом множестве проектов. Точно так же и методологию разработки лучше выбирать, исходя из специфика проекта, а не создавать прокрустово ложе, превращая методики в догмы, и укладывать в него проект при помощи кувалды.

Дело в тос что Скрам кк таковой предназначен для урегулирования отнощения в распределенных коммандах/. зачастую фрилансерских.
Попытка построить скрам в какой то среднестатистической конторе обречена на правал, с вероятностью практически 101%, по различным причинам, в частности из-за разного уровня професиональной полготовки (как то странно представлять джуна имеющего голос на равне с синьйорами во время планирования, к примеру), мотивационного уровня большинства людей (работать под руководством несколько проще чем на чистой самомотивации), традиционности мышления - в классической конторе ни один здравый руководитель не отпустить полностью бразды правления, при первых двух недостатках, та даже и без них врят ли отпустит.
 
в частности из-за разного уровня професиональной полготовки (как то странно представлять джуна имеющего голос на равне с синьйорами во время планирования, к примеру)
Совещательный -- почему бы и нет?

мотивационного уровня большинства людей (работать под руководством несколько проще чем на чистой самомотивации)
Согласен. Выходит, Scrum подходит для команд энтузиастов, которые работают в первую очередь ради идеи. Всякие стартапы, особенно в производстве игр. Или тот же агитационный штаб Навального, который эту методологию успешно использует вне контекста IT.
 
Скрам ради скрама - однозначно хрень. Надо брать и использовать те подходы, которые являются эффективными в рамках конкретной команды.
 
на мой взгляд в скраме нет ничего особенного, это просто набор правил, задающих некоторый вектор жизненного цикла проекта. В самих правилах нет никакой магии, они сформулированы больше для того чтобы люди поменьше задавали вопросов "зачем" и "почему", на такие вопросы можно ответить что такова методология =)
Можно нередко встретить удачно построенные системы на базе того-же waterfall и наоборот - не очень-то эффективные процессы на базе scram. Поэтому я считаю дело все не в методолгии, а в понимании и умении организовывать процесс. Слепо следовать правилам скрама или какой-то другой методологии - это не панацея и не сделает успешным проект, который не удавалось сделать таковым с помощью других метолологий...

И вообще, на счет скрама у меня сложилось мнение что его суть скорее не в повышении эффективности разработки, а в том чтобы легче и красивее обосновывать перед заказчиком за что платятся деньги :)
Одно дело когда девелоперы чтото там делают, хз что - какие-то слова непонятные и все такое. И совсем другое дело, когда вот тебе красивые графики, стройная циферь - сразу видно работа кипит и заказчик спокоен :D
 
Останнє редагування:
Патаму что в скрам тиме все равны и все принимают участие в разработке и анализе на равных.
Надо почитать подробнее про Scrum.

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

Вся эта банальщина не является моими гениальными идеями, а является осмыслением "Мифического человеко-месяца" Брукса, статей Спольски и других авторов.
 
Равенство возможностей не означает равенство обязанностей, ответственности и прав. Я так понимаю, что высказывать свои мысли могут все. Но решения принимают в пределах своей ответственности. Архитектор примет решения о том, как будет выглядеть и развиваться система, исходя из описанных потребностей пользователей, собственного опыта и результата диалогов с командой. Тим-лид раскидает задачи по команде, исходя из имеющихся сведений о команде и задачах, и задаст первоочерёдность того или иного кода в рамках этапа. Конкретный разработчик выберет, как реализовать тот или иной кусок задачи. Тестировщик сам определит, как ему писать тесты, чтобы они решали вопрос качества в выпускаемом ПО. Все они (и ещё множество других специалистов) могут обсуждать между собой необходимые для проекта темы и возникшие идеи, сообщать о проблемах и задержках, принимать решения на вверенной им участке создания и распространения ПО, анализировать успешность тех или иных своих и чужих действий по итогам работы. Но в рамках функциональных обязанностей и разделения сфер компетентности архитектор не должен заниматься уборкой помещений, а тестировщик варить кофе просто потому, что они это теоретически могут делать или им скучно делать свою работу.

совершенно верно, это банальные основы управления чем угодно - если все отвечают за все, значит на деле никто ни за что не отвечает :D
 
Пропал дом. Набежало менеджерья и юристов в разработку ПО, и имеем результат, когда сложные системы, типа ядер ОС - пишутся по-старинке, как удобнее, но аутсорсные "игры для айфона по $0.99", сайты знакомств и "порталы на основе wordpress" - только с применением "современных технологий": скрам, экспи, с кучей кьюэй, с ежедневными митингами, петингами, и т.д. :D
 
Надо почитать подробнее про Scrum.

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

Откедова в скраме архитекты? Там каждый архитект. Коллегиальный моск.
 
но аутсорсные "игры для айфона по $0.99", сайты знакомств и "порталы на основе wordpress" - только с применением "современных технологий": скрам, экспи, с кучей кьюэй, с ежедневными митингами, петингами, и т.д.
Всем этим современным технологиям пятьдесят лет в обед. Просто есть проекты, в которых требуется и допускается захват рынка одной мега-фичей на фоне сырой альфа-версии. "Вечная бета", которую требуется вести к светлому будущему постоянно выкатываемыми версиями. Те же онлайн-игры или социалка. Попытка делать законченный продукт с кучей фич упрётся в захваченный конкурентами рынок — и не факт, что получится выбить часть его под себя.

А с ядром можно никуда не торопиться. 0day vulnerability? Ничего, подождёте неделю патчик. Тем не менее, внутренние регулярные сборки и обсуждения стимулируют процесс разработки и позволяют понять, где и в чём отстаёт реальность от плана на столе.
Откедова в скраме архитекты? Там каждый архитект. Коллегиальный моск.
В плане предложения идей? Верю. Но принимать решения в любых областях — это пока считаю недопониманием или искажением сути. Почитаю на выходных методологию подробнее.
 
А с ядром можно никуда не торопиться.
Не могу согласиться. В разработке ядра - бывает очень напряжённо.

А в харьковских реалиях, к сожалению, по большей части, не пишут "вечных бет, захватывающих рынок". Как правило, это продукты категории D.
 
В плане предложения идей? Верю. Но принимать решения в любых областях — это пока считаю недопониманием или искажением сути. Почитаю на выходных методологию подробнее.
Почитайте :) Нет там искажений. Вы архитект, я сисадмин, но сегодня мы с вами вместе планируем и реализуем тестирование, а завтра то же самое проделываем с дизайном и т.д.
 
Назад
Зверху Знизу