Подтвердить что ты не робот

Список гибких передовых методов

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

Если это имеет значение, мы программируем в С++.

Довольно легко найти множество лучших практик, и это список, который мне удалось сформировать до сих пор:

  • Рефакторинг
  • Небольшие циклы выпуска
  • Стандарт кодирования
  • Коллективное владение
  • Метафора системы
  • Планирование игры
  • Целая команда
  • Ежедневные собрания Scrum
  • Программирование пар
  • Тестируемая конструкция
  • Поведенческая разработка
  • Непрерывная интеграция
  • Обзор кода и дизайна
  • Активные заинтересованные стороны
  • Документ опоздал
  • Широкое использование шаблонов проектирования

Мы уже используем некоторые из методов из списка. Некоторые из них мы не будем использовать.

Есть ли хорошие гибкие методы, которые я мог бы добавить в список?

PS Я могу добавить небольшое описание практики, если потребуется.

ИЗМЕНИТЬ

Как я уже сказал, мы уже используем некоторые гибкие методы (в основном, практики, которые оказались лучшими):

  • Непрерывная интеграция - это очень хорошая практика. Быстрая обратная связь с последними регистрационными записями очень полезна. Имея время простоя, потому что кто-то сломал сборку, может быть очень неприятно, особенно если это длится дольше.
  • Метафора системы - она ​​мало помогает, потому что наличие описательных имен классов и функций помогает лучше понять код
  • Стандарт кода - мы создали стандарт кодирования, прежде чем попасть в кодировку. Использование единообразного стиля кода является хорошим, потому что любой может взять другой код и работать над ним, как на нем.
  • TDD - перед началом кодирования мы настроили среду для легкого создания модульных тестов, но только до недавнего времени мы начали применять принципы TDD. Я лично пробовал это несколько лет назад, и все прошло не так хорошо, но теперь мне это нравится. К сожалению, не все члены команды делают это - только половина команды.
  • Ежедневные встречи Scrum - мы пробовали ежедневные встречи, и они не шли так хорошо. Как и в моей предыдущей работе, ежедневные встречи обычно превращаются в дискуссии продолжительностью более 30 минут. Наверное, мы пропустили хорошего мастера схватки (или лидера, как он называется?).
  • Рефакторинг - мы делали рефакторинг, но только если кто-то из команды создает запрос на изменение. Мы специально не сделали этого: "Давайте теперь сидим и уменьшаем нашу техническую глубину".
  • Небольшие циклы выпуска - сейчас у нас огромные циклы выпуска (6 месяцев), а для следующего выпуска мы планируем разбить цикл на 4-6 внутренних выпусков.
  • Обзор кода и дизайна - мы сделали первоначальный обзор дизайна (например, 5 лет назад) и несколько обзоров проектов некоторых второстепенных субкомпонентов в течение этого периода. Мы провели обзор кода некоторых классов
  • Документ поздно - мы сделали это для этой версии. Только требуемая документация означает, что написание документации становится менее интересным. Разработчики любят это:)
  • Использование шаблонов проектирования - мы уже используем шаблоны проектирования, где это необходимо.

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

4b9b3361

Ответ 1

Этот текст обобщает все гибкие рекомендации (со ссылками):
Требования
- Видение/видение продукта


- Восстановление продукта
- Истории пользователей
- Использование случаев
- Сценарии использования
- Персонажи
- Планирование покера
Приоритизация требований
Дизайн
- Архитектурные шипы/Решения для спайков
- Разработка доменных имен
- Новый дизайн/Эволюционный дизайн
- Карты CRC
- Проектирование по контракту
- Системная метафора
Строительство
- Руководство по кодированию/кодированию/Стандарт кодирования
- Испытательное развитие
- Поведение, управляемое развитием
- Пара-программирование/Сопряжение
- Рефакторинг
- Собственность коллективного кодекса
- Ежедневные сборки/Автоматизированные сборки/Десятиминутные сборки
- Непрерывная интеграция
- Обзоры кодов/Отзывы сверстников
- Метрики и анализ программных показателей


- Контроль источника/контроль версий
- Отслеживание ошибок/Отслеживание ошибок
- Управление конфигурацией
- Частая поставка/Частые выпуски
Тестирование - Единичное тестирование
- Тестирование на дым/тестирование верификации - Тестирование интеграции
- Системное тестирование
- Исследовательское тестирование
- Автоматизация испытаний
- Критерий расследований/приемки/Приемочное тестирование
Процесс
- Timeboxing/Fixed Sprints/Fixed Iteration Length
- Планирование выпуска

- Итерационное планирование/Планирование игры/Планирование спринта
- Спринт Backlog
- Целевая доска
- Определение Готово/Выполнено
- Ежедневная встреча/Ежедневное заседание

- Скорость - - Спринт Обзор/Итерационный демо
- Сопоставление значения потока
- Анализ корневой причины /5 Whys
- Сжигать диаграммы /Burn Up Charts
- Большие видимые диаграммы/информационные радиаторы
- Ретроспективная/рефлекторная мастерская
Организация
- Маленькая команда
- Кросс-функциональная команда
- Самоорганизующаяся команда/Команда Scrum
- Совместная команда/Сидение вместе/Общее рабочее пространство
- Клиент/владелец продукта на месте
- Scrum Master
- Устойчивый шаг - Перемещение людей вокруг - Scrum of Scrums

Ответ 2

Во-первых, прочитайте Двенадцать принципов Agile Software.

Во-вторых, выясните, из чего вы знаете, как достичь наиболее важных для вас принципов.

Люди постоянно ошибаются, ожидая, что Agile Development станет Silver Bullet или строгим набором процессов, которые вам необходимо соблюдать, что сделает успешную разработку вашего программного обеспечения.

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

Ответ 3

Я сейчас в середине чтения "Succeeding with Agile". В главе 2 Майк Кон предлагает серьезное предупреждение против создания "лучших практик" любого рода:

"При переходе на Scrum... сбор передовых методов опасен. Как сирены, поющие нам скалы, лучшие практики соблазняют нас расслабиться и остановить усилия непрерывного улучшения, которые необходимы для Scrum... Хотя члены команды всегда должны делиться друг с другом своими недавно открытыми хорошими способами работы, им следует противостоять стремлению кодифицировать их в набор лучших практик..."

Далее он цитирует Taiichi Ohno, Toyota:

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

Атрибуция: Успех Agile: разработка программного обеспечения с использованием Scrum, Mike Cohn, 2010

Ответ 4

Несколько важных вещей, которые вы можете добавить:

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

  • Ретроспектива - со ссылкой на "Регулярно, команда размышляет о том, как чтобы стать более эффективными, затем настраивает и настраивает его поведение соответственно "

  • Простые дизайнерские решения, которые минимизируют работу

Ответ 5

Составление списка лучших практик кажется BDUF для гибкого перехода. Если вы хотите быть проворным, постарайтесь получить там проворный способ.

Какая самая худшая проблема с вашим текущим процессом? Что вы можете изменить для решения этой проблемы? Попробуйте и посмотрите, как это работает.

Промойте и повторите.

И сделайте все это как команду.

EDIT:

Некоторые вещи трудно выразить разумно в комментариях, поэтому я расскажу о некоторых комментариях здесь:

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

Плохое покрытие тестов - действительно отрицательное решение, а не настоящая проблема.

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

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

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

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

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

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

Ответ 6

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

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

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

Ответ 7

Несколько других идей, которые можно добавить, хотя некоторые из них могут быть скрыты из других методов, которые у вас есть:

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


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

Ответ 8

Scrums каждый заданный период времени (ежедневно, еженедельно и т.д.) и спринты, которые происходят в результате.

Не скрывает, но стоит ссылки на объяснение в любом случае.

Ответ 9

"Agile" или "Agile Software Development" - это не единственный метод. Это зонтичный термин, охватывающий только набор "ценностей", которые вы можете выбрать. Два разных метода могут быть "гибкими" и вместе с тем конфликтующими друг с другом, когда дело доходит до того, что вам следует или не следует делать.

Нет четкого определения "agile" - поэтому невозможно составить окончательный список "гибких практик".

Существует окончательный список основных практик экстремального программирования (то есть, что вам нужно сделать, чтобы встретиться основное определение "делать XP".)

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