Реализуете хорошие моменты из Agile/XP?

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

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

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

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

Поэтому я спрашиваю всех вас, пользователей stackru, что вы думаете о наиболее важных / полезных аспектах Agile/Scrum/XP/(вставьте вашу любимую методологию здесь)

Мне повезло, что я могу определить, какие процессы / методы будут использоваться в будущем, когда команда начинает расти в соответствующую команду разработчиков программного обеспечения.

Я потратил много времени, читая различные методологии и упрекая их, и я думаю, что для меня самое важное:

  • Короткие итерации, обеспечивающие функциональные продукты - для нашей организации и клиента, возможность показать спонсору / инвестору / пользователю что-то "реальное", которое они могут использовать на практике, прошла долгий путь и не позволила длинным продуктам умирать на корню.,
  • Хороший способ расставить приоритеты для задач - это имеет первостепенное значение для обеспечения бесперебойной работы вышеуказанного.
  • Экспертная оценка
  • Модульное тестирование. Может ли кто-нибудь указать мне ссылку, содержащую хорошую информацию / примеры по модульному тестированию, которая обеспечивает хорошую полезность, не будучи чрезмерно трудоемкой или утомительной (я не совсем уверен, нужен ли мне тест для определения существования класс / интерфейс, прежде чем я, например, кодирую этот интерфейс)
  • Оценки времени - я думаю, что я ищу лучший способ "угадать", когда что-то будет готово, вместо того, чтобы подтолкнуть команду к выполнению чего-либо в сжатые сроки.

Я знаю, что этот вопрос туманный и т. Д., Но спасибо за внимание: D

TLDR: Какие части Agile, XP и Scrum, по вашему мнению, являются "лучшими" и способствуют созданию полезных продуктов? Если бы вам нужно было наметить новый процесс управления программным обеспечением завтра, что бы он включал?

5 ответов

Решение

Вот лучшие практики, на которые мы опираемся (используя Scrum почти 5 лет):

  • Короткие, определенные итерации (30 дней идеально).
  • Приоритетное отставание пользовательских историй от бизнес-ценности.
  • Командная оценка всех историй как усилий (баллов), а не времени.
  • Встречи ежедневно в течение 15 минут или меньше, чтобы выявить препятствия и т. Д.
  • Хорошо написано, представлено демо в конце спринта.
  • Как только начинается спринт / итерация, без значительных изменений в истории без завершения. Очень важно.
  • Команда должна решить, когда / если взять на себя дополнительную работу.
  • Скорость отслеживается вверх / вниз на основе наблюдений. Сначала это предположение, затем вы отслеживаете и корректируете.

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

Когда у вас есть деловые люди / ПО, которые спрашивают вас об оценках в "точках", а не во времени, спрашивают, сколько "баллов" нам нужно потратить (т.е. скорость) и т. Д., Вы знаете, что готовы перейти к продвинутым вещам.

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

Автоматическое приемочное тестирование

Согласно выступлению Кента Бека в USENIX "Software G Forces" http://www.youtube.com/watch?v=KIkUWG5ACFY о том, какие методы необходимы для увеличения частоты выпусков, автоматическое приемочное тестирование является одним из основных методов, чтобы надежно получать от ежегодного ежеквартально.

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

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

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

Другой будет простой дизайн. Стремление держать вещи в чистоте и простоте также принесло дивиденды.

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

Технически, я бы посмотрел на непрерывную доставку.

Эта техника направлена ​​на то, чтобы иметь возможность отправлять программное обеспечение в производство в любое время суток. Например, Flickr использует его ("За последнюю неделю было 35 развертываний 331 изменений 18 человек".).

Для этого вы должны иметь:

  • Надежная система испытаний, от модульных до функциональных.
  • Хорошее знание вашей инфраструктуры развертывания. Вам придется избегать простоев.
  • Ваше размещение должно быть полностью автоматизировано.
  • и больше.

Что касается метода, я бы взглянул на Канбан и другие принципы Бережливого производства. Он направлен на сокращение вашего времени на рынок: от идеи до состояния производства.

Повеселись!

Другие вопросы по тегам