Я недавно присоединился к молодому хакерскому пространству, которое все еще находится в процессе создания. Нам повезло, потому что у этого пространства есть несколько внутренних проектов, над которыми нужно работать, и нет недостатка в добровольцах для работы над ними.
Были некоторые дискуссии о том, как организовать эти проекты. Мой последний профессиональный опыт был связан со Scrum, поэтому я рассматриваю возможность использования подхода Scrum для наших программных проектов, но я не уверен, что он подойдет.
Хотя я видел, как Scrum хорошо работает для небольших групп, работающих полный рабочий день, природа этой организации иная:
- Члены являются добровольцами . Некоторые из них студенты дневного отделения. Другие работают на полную ставку. Мы не можем ожидать постоянного вклада от кого-либо, поскольку их реальная жизнь имеет приоритет.
- Несмотря на то, что почти каждый имеет многолетний опыт написания программного обеспечения, не так много участников сделали это профессионально или в команде.
- Там нет нет Владельца продукта . Требования к этим проектам определяются комитетом. Члены этого комитета также будут работать над реализацией. Это означает, что у нас не будет единого, преданного владельца продукта.
- У нас нет сроков (мягкий или жесткий). Проекты будут выполнены, когда они будут сделаны.
Это довольно существенные различия, но я не уверен, что они будут препятствием для применения Scrum. Я думаю, что некоторые незначительные изменения могут помочь нам преодолеть это препятствие:
- Если мы изменим Sprints, чтобы иметь фиксированный размер сюжета, но длительность (время), мы все равно сможем извлечь выгоду из итеративных выпусков, не оказывая нереалистичного давления доставки разработчикам-добровольцам.
- Мы можем угробить графики выгорания и расчета скорости . Если я правильно понимаю, это инструменты и метрики, которые работают как мост между командой разработчиков и руководством. Они служат для сообщения о прогрессе в форме, которая имеет смысл как для разработчиков, так и для заинтересованных сторон. Учитывая, что нам некому отчитаться (нет руководителя проекта, владельца продукта и внешних заинтересованных сторон), я считаю, что мы можем полностью отказаться от этого.
Вещи, которые я думаю, мы могли бы извлечь выгоду, которые не требуют настройки:
- Требования Gathering собрание (ы). Где все сидят за столом и обсуждают пользовательские истории, делают наброски макетов пользовательского интерфейса и создают журнал невыполненных работ.
- Спринт Ретроспективы . Это будет интересным способом для нас объединиться в процессе разработки, который работает для нас как команды добровольцев.
В чем я не уверен:
- Как следует ежедневно Stand планы лечить? Интересно, будут ли они вообще иметь большую ценность в наших условиях? Насколько я понимаю, ритуал заступничества заключается в том, что он помогает общению, естественным образом распространяя информацию в команде. Учитывая тот факт, что наши Спринты, вероятно, будут доставлять гораздо меньше сложности, чем средний Спринт, может быть меньше необходимости быть в курсе всех достижений / разработок других членов команды.
- Стоит ли настаивать на таких вещах в XP, как непрерывная интеграция, проверка кода и TDD? Я обеспокоен тем, что это будет требовать много. Я бы соблазнился применить эти концепции в будущих проектах, когда люди будут лучше знакомы со Scrum и будут работать в команде.
Мои вопросы:
Можно ли адаптировать Scrum к среде, основанной на волонтерах?
И мой запланированный подход пока идет в правильном направлении?
источник
Ответы:
Посмотри в Канбан. Это более уместно, чем SCRUM для ваших ограничений.
Редактировать: SCRUM - это (очень грубо) упорядоченное отставание со спринтами и церемониями, чтобы гарантировать, что объем незавершенной работы остается под контролем и что-то солидное в конце каждого спринта. Если вы отказываетесь от церемоний и ритма спринтов, вы в конечном итоге получаете Kanban: упорядоченное отставание и сильный упор на прямом ограничении работы «в процессе» и следя за тем, чтобы все помеченное как «сделано» было выполнено, а не навязывая стабильность в конце каждый спринт
Вы по-прежнему получаете гибкие преимущества: выпуск в любое время, гибкость, некоторую меру предсказуемости - хотя SCRUM может немного продвинуть вас в этом аспекте - без церемоний или аспектов SCRUM, которые не подходят для свободной, распределенной команды без обязательств , Подвох? Отказ от церемоний требует большей дисциплины, поэтому вам ДЕЙСТВИТЕЛЬНО нужно обратить внимание на тесты, качество кода, текущую работу в процессе и обеспечить достаточную проработку вершины отставания (вещи, готовые для подбора людьми).
У вас может быть отставание на основе голосования, хотя в волонтерской среде некоторые люди просто работают над тем, что они хотят.
(И да, все идеи TDD, CI, обзоры и идеи коллегиального программирования - хорошие идеи).
источник
Для устранения различий, которые вы сначала отметили:
Что касается ваших предложенных адаптаций, особенно при работе с волонтерами, я настоятельно рекомендую придерживаться фиксированной длины спринта. Таким образом, волонтеры точно знают, на какой период они отдают свои обязательства.
Я также не стал бы сразу бросать графики выгорания. Они также могут быть полезны для самой команды, чтобы увидеть, как они выполняют свои обязательства. Я бы оставил это на усмотрение команды, чтобы решить оставить их или бросить их. То же самое касается расчетов скорости. особенно с большой разницей в доступных человеко-часах каждого спринта, они могут оказаться очень полезными (особенно если вы подсчитаете количество очков, набранных за человеко-час) при оценке будущих спринтов.
Что касается ежедневных дежурств, они по-прежнему будут полезны в вашей обстановке, хотя бы для того, чтобы они знали, что у всех есть или с какими проблемами (и это не зависит от сложности). Но может быть сложнее реализовать ежедневный режим ожидания, поэтому вам, возможно, придется пойти на компромисс.
Упомянутые вами практики XP могут быть введены или нет независимо от использования Scrum, а также могут быть предложены во время ретроспективы.
источник
Меня удивляет, что никто не указал на это, но ваш проект кажется большинством проектов с открытым исходным кодом. Если вы посмотрите несколько более популярных проектов с открытым исходным кодом, вы можете найти вдохновение. И я думаю, что вы должны забыть о SCRUM и думать об этом с точки зрения общей гибкости.
Agile - это общение и сотрудничество. Есть причина, по которой в Agile Manifesto об этом говорят 2 пункта из 4.
И так, как вы описываете свой проект, было бы трудно общаться лицом к лицу со всеми, кто работает над проектом, что поощряют и Agile, и SCRUM. Итак, первое, на чем я бы хотел сосредоточиться - это установить каналы связи для всей команды (как волонтеров, так и комитета по продуктам). Такие вещи, как вики, форумы, видеоконференции и правильное резервирование, задачи и система отслеживания ошибок - это отличные способы гарантировать, что все знают, что происходит и что необходимо сделать.
Второе, что я хотел бы отметить, это не просто расчесывать технологические части Agile. Многие считают (включая меня), что именно они делают гибкую работу, а не процессную сторону вещей. Проверка кода - это важная и наиболее открытая работа, когда кто-то, кто знает проект, проверяет коммиты / push для обеспечения достаточно высокого качества. TDD практически дается для любого гибкого проекта. Это гарантирует, что любые изменения в коде не нарушат предыдущую функциональность, что еще более важно в вашем случае, когда добровольцы не могут быть обеспокоены исправлением ошибок и ошибок других людей. Это также облегчает проверку кода, потому что рецензент может видеть в тестах, какие функции были добавлены, и, запустив их, он гарантирует, что эта функциональность действительно работает как задумано. Непрерывная интеграция аналогична TDD.
Последнее, что я считаю, что у вас должно быть как минимум несколько человек, работающих над проектом полный рабочий день. Эти люди должны иметь определенные роли:
источник
Вы не можете адаптировать его так, как вы описываете, и по-прежнему называть это SCRUM. но, по моему мнению, вы можете использовать Scrum, как описано ниже, для настройки, которую вы описали.
источник
Я мог бы предложить другой подход. Поскольку вы имеете дело с волонтерами, у вас есть несколько вещей, чтобы рассмотреть. Ваша команда, вероятно, будет иметь высокий оборот, жизнь будет мешать, и люди будут отвлекаться. Некоторые из оставшихся будут вносить свой вклад последовательно, но не очень, тогда, наконец, у вас будет эта хардкорная группа, которая действительно утонет в проекте. Я делаю много предположений о вашей рабочей силе здесь, и если вы чувствуете, что моя оценка не отражает людей, с которыми вы работаете, не стесняйтесь игнорировать остальное.
Теперь вам нужна стратегия, которая позволит людям, которые не выполняют много работы, работать достаточно автономно, у них есть только столько времени, чтобы посвятить этому, и вы не хотите, чтобы они тратили большую часть этого. в общении. Люди, которые более вовлечены, должны отвечать за интеграцию и избавляться от некоторых более сложных идей.
Это заставляет меня задуматься о процессе разработки, более сфокусированном на каркасах и прототипах.
Вы можете иметь пул доступных рабочих элементов и поощрять людей писать для них каркасные рамки. Вы можете использовать их как Tracer Bullets (терминология, заимствованная у программиста Pragmatic), чтобы отточить идею и дать людям вдохновение для дальнейшего развития. Оттуда вы можете превратить успешные идеи в прототипы, опять же, это очень маленькие проекты, призванные помочь людям узнать больше о проектах. После этого у вас теперь есть небольшой раздел с солидными идеями, которые были созданы множеством людей, и вы можете передать их немного более активной команде, которая сможет интегрировать эти идеи в вашу систему.
источник
Я думаю, что Канбан лучше подходит для этой ситуации.
Scrum имеет несколько вещей, которые не подходят. Сроки или объем измерений не являются необходимыми, и разработка everoyone имеет то же самое видение продукта от встреч. Подотчетность и выполнение короткого плана с последовательностью являются бизнес-целями.
Kanban предлагает довольно много тех же преимуществ, что и Scrum, без недостатков. Это может дать вам быстрое прототипирование. Прототипы могут быть запущены до встречи. Это также дает TDD для изменяемого кода и регрессионных тестов. Парное программирование может упростить новичков и не завсегдатаев в базе кода, передавая знания.
Канбан также имеет уникальные преимущества. Если видение того, что делают пользователи, разрабатывается параллельно, Kanban работает хорошо. Доказательством этого является успех для программ малого бизнеса. Кроме того, в дни с несколькими добровольцами, такими как три человека, Канбан все еще работал бы хорошо. Scrum, несмотря на то, что он легкий, был бы слишком желтым.
источник