Реализуете хорошие моменты из 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 человек".).
Для этого вы должны иметь:
- Надежная система испытаний, от модульных до функциональных.
- Хорошее знание вашей инфраструктуры развертывания. Вам придется избегать простоев.
- Ваше размещение должно быть полностью автоматизировано.
- и больше.
Что касается метода, я бы взглянул на Канбан и другие принципы Бережливого производства. Он направлен на сокращение вашего времени на рынок: от идеи до состояния производства.
Повеселись!