У меня есть существующий язык, который мне нужно перенести на новую платформу. Я, вероятно, попробую это, изменив бэкэнд существующего компилятора.
Переписать бэкэнд - это значительный объем работы. Я не вижу способа разбить это на разумные истории, не нарушив критерии INVEST.
Я не вижу, как каждая история может быть предметом переговоров - все они необходимы для работающего компилятора. Все истории имеют одинаковый приоритет, и не важно, в каком порядке я их доставляю. Мне нужно сделать их все.
Некоторые части программного обеспечения, которые я реализую, имеют более низкий приоритет, чем другие, и я вижу, что мы можем предоставлять их постепенно. Тем не менее, есть существенное ядро, которое должно быть .
Я планирую попытаться следовать за Scrum, но я просто прохожу движения?
Есть ли рекомендуемые практики для такого проекта?
Ответы:
Имейте в виду, что основная причина, по которой были созданы гибкие процессы, заключалась в том, чтобы справляться с меняющимися требованиями. Если требования изложены в камне (действительно фиксированные требования встречаются редко, но я верю вам на слово!), То некоторые из лучших методов работы с изменяющимися требованиями - например, оборотные истории - становятся несколько неактуальными. Тем не менее, следование рабочему процессу Scrum все еще имеет большую потенциальную ценность с точки зрения планирования и предоставления результатов. Даже если ваши результаты не будут на какое-то время полностью пригодным к использованию продуктом, еще есть что сказать, чтобы продемонстрировать прогресс вашему клиенту (и команде!).
Подумайте, что все эти «должны иметь» истории составляют одну эпопею: «Уметь компилировать на платформе X». В этом случае весь эпос должен быть завершен до того, как пользователю будет передано какое-либо значение, но это часто имеет место в начале больших проектов. Начните с истории, чтобы составить простейшую из возможных программ, а затем создайте дополнительные истории, чтобы поддерживать все больше и больше языковых функций.
Прежде всего, не зацикливайтесь на попытках заставить каждую ситуацию вписаться в высоко обобщенный подход. Agile должен работать на вас, а не наоборот!
источник
Конечно Scrum полезен. Это методология, которая делает две вещи для вас:
Таким образом, есть некоторая ценность в использовании этого.
Я думаю, что некоторые из ваших предварительных условий не верны, и именно здесь вы заблудились.
Это неправда. Вы можете поддерживать подмножество языка и при этом иметь компилятор, который работает при определенных условиях. Конечно, менее ценный, чем полный компилятор, но все же ценный.
Кроме того, вы неправильно понимаете, что означает «Договорная»: это не обязательно означает «Необязательный» и не требуется, чтобы истории были необязательными в INVEST. История является ценной целью, и ведутся переговоры о том, как достичь этой цели. Конечно, будет не просто способ реализации серверной части каждой языковой функции. Там, где вам нужны переговоры.
Это не правильно, как вы говорите ниже, что некоторые истории не «должны иметь», поэтому, безусловно, некоторые из них менее ценны. Но даже в категории «должен иметь»: некоторые языковые особенности намного более фундаментальны, чем другие, и в значительной степени таковы.
Один из способов измерить это - «сколько еще строк кода мы можем скомпилировать в существующей кодовой базе» или «сколько еще тестов пройдено», если у вас есть предопределенный набор тестов.
Есть и другие варианты. Если вы компиляции C-подобный язык, строго говоря , вам нужно только
if
иgoto
цикл иметь (едва) функциональный язык , и вы можете реализоватьwhile
,for
иrepeat
как макросы. Предполагая, что написать прекомпилятор достаточно просто, у вас может быть дешевое решение для временной задержки (эй, мы ведем переговоры? :-)Что касается адаптивности, поддержка языка является довольно статичным набором требований, но языки также меняются, а также изменяются ваши знания о ваших потребностях . Вам нужно все реализовать? Есть ли вещи, которые вам не нужны специально для ваших целей? Одним из основных клиентов Agile является знание неполного знания, можете ли вы использовать его?
В заключение, чтобы ответить на ваш вопрос более прямо: нужны ли вам гибкие процессы, когда ваши требования неизменны? Точно нет! Они пригодны для использования? Возможно - да! Они стоят вашего времени? Вероятно, нет - но ваши требования неизменны? В моем прошлом опыте «неизменяемые требования» => «ленивый владелец продукта» - не правило, но стоит помнить.
источник
DavesCompiler -O9 program.c
, и вывод должен быть высокооптимизированной версией program.c (более формальное определение того, что означает высокооптимизированное средство)» - звучит для меня как разумная пользовательская история.TL; DR
Все элементы управления проектами добавляют накладные расходы. Не добавляйте накладные расходы, которые вам не нужны.
Scrum - неправильный молот здесь (не будь гвоздем)
Scrum - это структура управления проектом, а не набор методов разработки, подходящих для отдельного разработчика. Если вы не занимаетесь управлением проектами, Scrum, вероятно, неправильный выбор.
Кроме того, когда вы говорите:
вы подразумеваете пару вещей:
Если оба эти утверждения верны, то в действительности нет смысла использовать платформу или практику, разработанную для приоритизации работы по значению или порядку зависимости.
Предлагаемые альтернативы
Любой проект разработки может получить выгоду от некоторых гибких методов. В частности, в вашем конкретном случае я бы порекомендовал:
Кроме того, даже если ваш продукт действительно имеет нулевую ценность, если не все истории сделаны, я бы потратил некоторое время на группирование историй по темам, которые вы можете рассматривать как завершенные этапы. Возможность сказать «Я выполнил функцию foo» часто более полезна, чем сказать «У меня 23/117 случайных историй». YMMV.
источник
I
вместо вместо,We
вероятно, почему.Я понимаю ваши опасения, но я верю, что использование скрама для вас все еще полезно.
Следует признать, что пользовательские истории гораздо более фиксированы, чем в приложении, ориентированном на потребителя. Таким образом, этот аспект схватки обеспечит меньшую ценность.
Я думаю, что вы получите ценность от повторяющихся и частых выпусков . Наличие потенциально выпускаемого продукта в конце каждого спринта заставляет вас поддерживать высокое качество кода и низкую техническую задолженность. Это также отличный способ найти дефекты на ранней стадии.
Я думаю, что вы также выиграете, зная свою скорость . После нескольких спринтов вы можете увидеть, сколько очков усилий ваша команда заканчивает каждый спринт. Это дает вам объективную метрику, чтобы помочь определить дату вашего корабля.
Прежде всего, помните, что Agile прилагательное . В конце каждого спринта вы должны проводить ретроспективное собрание, а затем адаптировать свой процесс к вашим потребностям. Если есть часть процесса scrum, которая не относится к разработке компилятора, удалите ее. Если есть какой-то другой элемент процесса, который принесет вам пользу, добавьте его. Самая важная часть гибкой, на мой взгляд, должна быть осведомлена о вашем процессе и постоянно улучшать для вашей конкретной ситуации.
(Пожалуйста, обратите внимание, я никогда не делал разборки по проекту компилятора; прислушайтесь к моему совету с долей соли.)
источник
Да, если вы помните, что Scrum не является набором строгих правил, которым нужно следовать. Вы можете настроить его под свой проект. Спринты, заезды, еженедельные скруты по-прежнему будут полезны для того, чтобы способствовать лучшему общению между членами команды и для обеспечения того, чтобы проект продолжался в том направлении, которое планировалось.
Все истории могут иметь одинаковый приоритет, но вам необходимо учитывать относительную сложность их реализации. Вы не хотите хранить свои самые сложные предметы до конца проекта. Вы хотите начать работать над ними как можно скорее.
источник
Scrum is not a set of strict rules to follow
- Я думал, что это наоборот. Разве это не похоже на то, что у него есть только несколько правил, но вы должны придерживаться их (например, ежедневные заезды, определение выполненного, сюжетные пункты)?