2008-09-29 5 views
5

У меня есть два связанных вопроса относительно Scrum.Два вопроса относительно Scrum

Наша компания пытается ее реализовать и, конечно же, мы прыгаем через обручи.

Оба вопроса касаются «сделанных средств, сделанных!».

1) Это очень легко определить «Done» для задач, которые являются/ - ясно Приемка КРИТЕРИИ - полностью автономный - тестирование в конце тестеров

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

Основная проблема с ним, что он почти полностью внутренним объектом и нет никакого способа, чтобы проверить/протестировать его снаружи.

В качестве примера реализации функции является двоичным - это сделано (и передает все тестовые примеры), либо это не сделано (не пропустите некоторые тестовые примеры).

Лучшая вещь, которая приходит мне в голову, - попросить другого разработчика рассмотреть эту задачу . Тем не менее, это никак не дает четкого определения , это полностью сделано или нет.

Итак, вопрос в том, как вы определяете «Готово» для таких внутренних задач?

2) Debug/багфикс задача

Я знаю, что проворная методология не рекомендую иметь большие задачи. По крайней мере, если задача большая, ее следует разделить на меньшие задачи.

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

Я знаю, что это обычно проблема модели водопада. Однако, я думаю, трудно избавиться от него (особенно для довольно больших изменений).

Должен ли я выделять специальную задачу для отладки/исправления/системной интеграции и т. Д.?

В случае, если я это делаю, обычно эта задача просто огромна по сравнению с всем остальным, и ее трудно разделить на меньшие задачи.

Мне не нравится этот путь из-за этой огромной задачи монолита.

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

Мне это не нравится, потому что в таком случае вся оценка станет подделкой. Мы оцениваем задачу, отмечаем, что она запрашивается в любой момент. И мы будем открывать новые задачи для ошибок с новыми оценками.Итак, мы закончим с фактическое время = время оценки, что определенно не хорошо.

Как вы решаете эту проблему?

С уважением, Виктор

+4

Я голосую, чтобы закрыть этот вопрос не по теме, потому что речь идет не о программировании. – 2017-11-01 08:25:10

ответ

4

Для первой части «дизайн архитектуры - рефакторинга - некоторые вспомогательные классы развития» Они никогда не «сделано», потому что вы их, как вы идете. По кусочкам.

Вы хотите сделать достаточно архитектуры, чтобы получить первый выпуск. Затем, для следующего выпуска, немного больше архитектуры.

Рефакторинг - это то, как вы находите классы полезности (вы не планируете создавать служебные классы - вы обнаруживаете их во время рефакторинга).

Рефакторинг - это то, что вы делаете на куски, по мере необходимости, до выпуска. Или как часть большой функциональности. Или когда у вас возникли проблемы с написанием теста. Или когда у вас возникли проблемы с передачей теста и необходимость «отладки».

Маленькие кусочки этих вещей делаются снова и снова через жизнь проекта. Они на самом деле не «освобождают кандидатов», поэтому они просто спринты (или части спринтов), которые делаются в процессе выхода на релиз.

+1

«Архитектура, рефакторинг, классы полезности» Это никогда не делается, потому что они никогда не являются явными задачами - вот некоторые из ваших практик/инструментов, которые вы используете для выполнения реальных задач. Хороший ответ! – quamrana 2008-09-29 20:31:58

+1

Хорошо. Продукт выпущен. Что следует делать в таком случае при большой редизайне, когда нужно переделать большой модуль? – 2008-09-29 20:42:51

0

«Должен ли я выделять специальную задачу для отладки/исправления/системной интеграции и т. Д.?»

Не так, как вы это делали с методологией водопада, где ничто действительно не работало.

Помните, что вы строите и тестируете постепенно. Каждый спринт проверяется и отлаживается отдельно.

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

Иногда интеграционное тестирование выявляет ошибки, которые становятся низкоприоритетными, поэтому их не нужно исправлять до следующего выпуска.

Насколько велика эта проверка на выпуск? Не очень. Вы уже протестировали каждый спринт ... Там не должно быть слишком много сюрпризов.

+0

ОК. Что происходит, если что-то не имеет смысла сделать наполовину (как пример редизайна модуля)? Он просто не впишется в один спринт. – 2008-09-29 20:45:38

0

Я хотел бы утверждать, что если внутреннее действие имеет преимущество для приложения (которое должно иметь все элементы для хранения в пределах схватки), то выполняется это преимущество. Например, «Архитектура проектирования» является слишком общей для определения выгоды от деятельности. «Архитектура проектирования для пользовательской истории A» определяет сферу вашей деятельности. Когда вы создали архитектуру для истории A, вы закончите с этой задачей.

Рефакторинг также должен выполняться в контексте достижения пользовательской истории. «Класс Customer Refactor для включения нескольких телефонных номеров для поддержки Story B» - это то, что можно идентифицировать как выполненное, когда класс Customer поддерживает несколько телефонных номеров.

0

Третий вопрос: «Редактирование большого большого модуля (для замены новой архитектуры устаревшей новой). Конечно, эта задача разделена на десятки небольших задач. Однако я знаю, что в конце мы будем иметь довольно длинную сессию отладки/фикс «.

Каждый спринт создает то, что может быть выпущено. Может быть, этого не будет, но может быть.

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

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

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

Затем вы изменяете временные интерфейсы, мосты и клей, чтобы завершить следующий спринт.

Да, вы добавили код. Но вы также создали спринты, которые вы можете тестировать и выпускать. Спринты, которые являются полными, и любой может быть кандидатом на выпуск.

0

Похоже, что вы размываете определение истории пользователя и задачи. Просто:

  • Истории пользователей добавляют ценность. Они , созданные владельцем продукта.

  • Задачи - это мероприятия, направленные на создание этого значения . Они созданы инженерами .

Вы прибивали ключевые части пользовательской истории, заявляя, что должны иметь четкие критерии приемлемости, они автономны и могут быть протестированы.

Разработка, проектирование, реорганизация, утилизация классов задач. Это то, что сделано для завершения истории пользователя. Для каждого из них есть разные стандарты, но в нашей компании, по крайней мере, еще один разработчик должен был посмотреть на код (парное программирование, чтение кода, обзор кода).

Если у вас есть истории пользователей, которые являются «классом рефактора X» и «конструктивной особенностью Y», вы ошибетесь. Может потребоваться рефакторинг X или дизайн Y перед написанием кода, но это могут быть задачи, необходимые для выполнения пользовательской истории «создать новый виджет входа».

0

У нас возникли аналогичные проблемы с кодом «за кадром». «За кадром» я имею в виду, не имеет очевидной или проверяемой стоимости бизнеса.

В этих случаях мы решили определить, что разработчики этой части кода были истинными «пользователями». Создав примеры приложений и документации, которые разработчики могли использовать и тестировать, у нас был некоторый «готовый» код.

Как правило, с помощью скрипта вы должны искать функциональность бизнеса, которая использовала фрагмент кода для определения «сделанного».

0

Для технических задач, таких как рефакторинг, вы можете проверить, действительно ли рефакторинг выполнен, например. вызов X больше не имеет никакого метода f() или не имеет функции foobar().

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


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

Если это действительно не представляется возможным, то это должно быть сделано отдельно от остальных пунктов спринта отставания и не интегрированы до его «сделано сделано». Если спринт заканчивается до завершения всех задач предмета, вам необходимо оценить оставшийся объем работы и перераспределить его для следующей итерации.

Здесь twenty ways to split a story, которые могут помочь с несколькими более мелкими предметами хранения, с действительно рекомендуемым и безопасным способом.

 Смежные вопросы

  • Нет связанных вопросов^_^