Построение гибкого процесса разработки (3 курс)

85
Построение гибкого процесса разработки от теории к практике Codeparts developers initiative ДОИ «Тендер-2012»

Upload: timur-rakhmatillaev

Post on 14-Jan-2015

1.032 views

Category:

Education


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Построение гибкого процесса разработки (3 курс)

Построение гибкого процесса

разработкиот теории к практике

Codeparts developers initiative ДОИ «Тендер-2012»

Page 2: Построение гибкого процесса разработки (3 курс)

Обо мне

Имя: Рахматиллаев Тимур Twitter: http://twitter.com/eskat0n Email: [email protected] VK: http://vk.com/eskat0n Skype: eskat0n

Page 3: Построение гибкого процесса разработки (3 курс)

Обо мне

Получил диплом инженера по специальности 230101 в 2011 году.

С сентября 2010 до февраль 2012 года работал в компании IndyCode в должности разработчика в стеке технологий .NET

С марта по июнь 2012 года работал в компании DoneRight в должности web-разработчика в стеке технологий .NET

С августа 2012 года работаю в компании ByndyuSoft в должности ведущего разработчика / тимлида

Page 4: Построение гибкого процесса разработки (3 курс)

Я...

Не менеджер Не технический директор Не внедритель Agile/Scrum/Kanban

Разработчик

Page 5: Построение гибкого процесса разработки (3 курс)

С другой стороны баррикад

Page 6: Построение гибкого процесса разработки (3 курс)

Что я видел

Микроменеджмент переходящий в «наноменеджмент»

Провальные в своей сути попытки внедрить Agile

Переход к Kanban от Scrum’а и обратно

Kanban-board собственной разработки

Проведение ретроспектив

Проведение стендапов

Попытка уйти от стендапов

Тайм-менеджмент

Использование sticky-notes

Mind map

Roadmap

Story mapping

User stories

Тестирование силами заказчика

Заказчик в команде

Заказчик на другом конце земного шара

Взаимодействие через wiki

И много чего еще...

Page 7: Построение гибкого процесса разработки (3 курс)

Я вас предупреждал

Page 8: Построение гибкого процесса разработки (3 курс)

Чего НЕ произойдет после того как вы пройдете этот тренинг

Ваши проблемы не решаться сами по себе Вы НЕ наладите оптимальный процесс

разработки Поведенческие особенности разработчиков из

ваших команд не изменятся

Page 9: Построение гибкого процесса разработки (3 курс)

Но!..

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

делают другие команды разработчиков) Вы сможете более эффективно решать

возникающие проблемы

Page 10: Построение гибкого процесса разработки (3 курс)

Притча про командную греблюодна поучительная история

Page 11: Построение гибкого процесса разработки (3 курс)
Page 12: Построение гибкого процесса разработки (3 курс)
Page 13: Построение гибкого процесса разработки (3 курс)
Page 14: Построение гибкого процесса разработки (3 курс)
Page 15: Построение гибкого процесса разработки (3 курс)
Page 16: Построение гибкого процесса разработки (3 курс)
Page 17: Построение гибкого процесса разработки (3 курс)
Page 18: Построение гибкого процесса разработки (3 курс)
Page 19: Построение гибкого процесса разработки (3 курс)
Page 20: Построение гибкого процесса разработки (3 курс)
Page 21: Построение гибкого процесса разработки (3 курс)
Page 22: Построение гибкого процесса разработки (3 курс)
Page 23: Построение гибкого процесса разработки (3 курс)
Page 24: Построение гибкого процесса разработки (3 курс)

Выводы

Важно осознавать факт наличия проблемы Необходимо понимать, в чем именно

заключается проблема Нужно обладать набором знаний для решения

проблемы Надо обладать навыками для эффективного

применения этих знаний на практике

Page 25: Построение гибкого процесса разработки (3 курс)

Проблемы самосознанияНасколько я квалифицирован, чтобы что-то решать?

Что я могу решить?

Я знаю, как я могу что-нибудь гарантировано решить?

Page 26: Построение гибкого процесса разработки (3 курс)

Матрица компетентностиКомпетентность

Осознанность

да

нет да

нет

неосознаннаянекомпетентност

ь

осознанная некомпетентност

ь

осознаннаякомпетентность

неосознаннаякомпетентность

«собирание шишек»советы коллег

обучениеподражание

путь творцаопыт

Page 27: Построение гибкого процесса разработки (3 курс)

Матрица компетентностиКомпетентность

Осознанность

да

нет да

нет

А че там делать? О, да тут все не просто так...

Ага, вот оно как!Я не понимаю, почему так будет правильно, но это

правильно

Page 28: Построение гибкого процесса разработки (3 курс)

Анекдот

Встречаются две рыбы.

Одна другую спрашивает: «А вот как ты жабрами дышишь?»

Вторая рыба задумалась... и задохнулась.

Page 29: Построение гибкого процесса разработки (3 курс)

А на самом деле...

Все правила, принципы и подходы – это просто формализованный здравый смысл.

Нахождение в 4й стадии означает использование собственного опыта и здравого смысла.

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

Page 30: Построение гибкого процесса разработки (3 курс)

Её величество ПРОБЛЕМАКак понять, что у вас есть проблемы в организации процесса разработки?

Page 31: Построение гибкого процесса разработки (3 курс)

Проблемы?

Page 32: Построение гибкого процесса разработки (3 курс)

Проблемы?

Вы тратите на организацию работы команды неоправданно большое время

Вы планируете дольше, чем разрабатываете В процессе разработки одновременно не

задействованы все члены команды Вы не знаете, кто и чем занимается СЕЙЧАС

Page 33: Построение гибкого процесса разработки (3 курс)

Причины?

Неправильно построенный процесс Неправильно выбранные инструменты Неправильно расставленные приоритеты

Page 34: Построение гибкого процесса разработки (3 курс)

UML – не панацея

Что дает вам применение диаграммы прецедентов?

Что дает вам применение диаграммы последовательности?

Что дает вам применение диаграммы классов? Что дает вам наличие нотации?

Page 35: Построение гибкого процесса разработки (3 курс)

UML – не панацея

UML отъедает временные ресурсы команды UML не формирует единого представления из-за

высокого уровня абстракции UML не нужен заказчику (как правило) UML плохо декомпозируется над подзадачи

Page 36: Построение гибкого процесса разработки (3 курс)

Что мы делаем при разработке?

Решаем проблемы заказчика!А не превращаем абстрактные

рисунки в код

Page 37: Построение гибкого процесса разработки (3 курс)

Если бы программисты строили дома42 в мире управления процессом разработки ПО

http://bit.ly/progbuilding

Page 38: Построение гибкого процесса разработки (3 курс)

Отсутствие единого мнения

Обсуждали проект. Сидоров предлагает крупноблочную архитектуру. Петрович настаивает, что все надо строить по старинке, из кирпича, не по-ламерски. Самый радикальный проект предложил Алекс: построить несколько десятков деревянных коттеджей и потом соединить их подземными туннелями. На Западе сейчас так модно. Напомнили ему, что заказчик требует именно 12-этажный дом. Пытались решить вопрос дуэлью в Quаkе. Алекса с его коттеджами завалили сразу, но между Петровичем и Сидоровым вышла ничья. В итоге каждый будет строить по своему плану, а потом попытаемся все это соединить, чтоб не рухнуло.

Page 39: Построение гибкого процесса разработки (3 курс)

«Хватит трепаться – покажите мне код!»Линус Торвальдс

Page 40: Построение гибкого процесса разработки (3 курс)

Главная задача – быстрый переход к непосредственной разработке

Page 41: Построение гибкого процесса разработки (3 курс)

Вечные ценности командыНемного философии

Page 42: Построение гибкого процесса разработки (3 курс)

Решение проблемы заказчика

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

Page 43: Построение гибкого процесса разработки (3 курс)

Саморазвитие

Вспомнили, что у нас кран достает только до 8 этажа. Послали Сидорова доставать новый кран. Играем в Quаkе. Алекс замочил Петровича. Растет смена!

Page 44: Построение гибкого процесса разработки (3 курс)

Явное ощущение прогресса

Что уже сделано?

Что осталось сделать?

Какой вклад я внес?

Page 45: Построение гибкого процесса разработки (3 курс)

Коллективное владение информацией

Вернулся Сидоров. Кран не достал, зато достал крутой экскаватор. Предлагает вырыть глубокую шахту и построить дом не в высоту, а в глубину. Говорит, что нигде в контракте не сказано, что 12 этажей должны быть над поверхностью. Еле отговорили.

Page 46: Построение гибкого процесса разработки (3 курс)

Ценности команды

Решение проблеммы заказчика

Саморазвитие

Явное ощущение прогресса

Коллективное владение информацией

Page 47: Построение гибкого процесса разработки (3 курс)

AgileLean, Scrum, XP, Kanban, FDD

Page 48: Построение гибкого процесса разработки (3 курс)

Принципы Agile

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

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

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

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

Над проектом должны работать мотивированные...

http://agilemanifesto.org/iso/ru

Page 49: Построение гибкого процесса разработки (3 курс)

Agile-практики

Lean

XP

Scrum

Kanban

FDD

Page 50: Построение гибкого процесса разработки (3 курс)

Agile-практикиXP

Whole team

Coding standard

TDD

Collective ownership

Customer tests

Pair programming

Refactoring

Planning game

Continuous integration

Simple design

Sustainable pace

Small releases

Scrum

Scrum master

Product owner

Team

Sprint planning meeting

Daily scrum

Sprint review

Product backlog

Spring backlog

Burndown chart

Kanban

Visualize the workflow

Limit WIP

Measure and optimize lead time

Page 51: Построение гибкого процесса разработки (3 курс)

Agile – это не серебряная пуляВолшебства не будет – электричество закончилось

Page 52: Построение гибкого процесса разработки (3 курс)

Agile – это инструментарий, который применяют людиНезнание правил техники безопасности не освобождает от ответственности

Page 53: Построение гибкого процесса разработки (3 курс)

Agile нельзя внедрять!

Page 54: Построение гибкого процесса разработки (3 курс)

К Agile нужно переходить

Page 55: Построение гибкого процесса разработки (3 курс)

Agile – это конструктор

Нет понятия Agile

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

Практики можно комбинировать друг с другом

Практики нужно комбинировать друг с другом

Page 56: Построение гибкого процесса разработки (3 курс)

Не сочтите за рекламу...

Page 57: Построение гибкого процесса разработки (3 курс)

Но Agile это сендвич

Page 58: Построение гибкого процесса разработки (3 курс)

По какому принципу комбинировать?

Это вкусно

Page 59: Построение гибкого процесса разработки (3 курс)

По какому принципу комбинировать?

Это вкусно

Это удобно

Команда уже неформально использует это

Это решает конкретную проблему

Это способствует поддержанию определенной командной ценности

Page 60: Построение гибкого процесса разработки (3 курс)

Основные понятия Agile

Page 61: Построение гибкого процесса разработки (3 курс)

Итеративная разработка

Выполнение работ параллельно с непрерывным анализом полученных результатов и корректировкой предыдущих этапов работы. Проект при этом подходе в каждой фазе развития проходит повторяющийся цикл: Планирование — Реализация — Проверка — Оценка

Page 62: Построение гибкого процесса разработки (3 курс)

Итеративная разработка

Продолжительность итерации – одна-две недели

Результат итерации – протестированная версия разрабатываемого продукта

Итерация включает в себя процесс перехода задач итерации из состояния в состояние

Page 63: Построение гибкого процесса разработки (3 курс)

На самом деле всё не так

Page 64: Построение гибкого процесса разработки (3 курс)

User stories

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

Пример:

Я как зарегистрированный и авторизованный пользователь

Могу нажать на кнопку «Сменить пароль» после ввода нового пароля на форме «Смена пароля»

При этом мой пароль изменяется и я получаю сообщение об успешной смене пароля

Page 65: Построение гибкого процесса разработки (3 курс)

User stories и Use cases

User story представляет собой описание функции системы со стороны пользователя (заказчика)

Use case представляет собой описание функции системы со стороны самой системы (как правило содержит большее число технических деталей)

Page 66: Построение гибкого процесса разработки (3 курс)

WIP (work in progress)

Количество задач (user stories, etc.), находящихся в одновременной разработке

В идеале WIP на определенном этапе жизненного цикла задачи не должен превышать числа членов команды, задействованных на данном этапе

Page 67: Построение гибкого процесса разработки (3 курс)

DoD (definition of done)

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

Требования выражаются на языке сценариев приемочных тестов

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

Понимание и четкое видение DoD обязательно должно быть общим у всех членом команды

Page 68: Построение гибкого процесса разработки (3 курс)

Agile board

Доска (физическая или виртуальная) для фиксирования прогресса выполнения задач в рамках итерации

Каждая задача должна побывать во всех состояниях-колонках

Примеры состояний: «Запланировано», «В разработке», «Готово к тестированию», «В процессе тестирования», «Готово»

Page 69: Построение гибкого процесса разработки (3 курс)

Решения для организации Agile board

SaaS: AgileZen – http://www.agilezen.com

YouTrack InCloud – http://www.jetbrains.com/youtrack/hosted

My agility board – http://www.myagilityboard.com

Standalone: Atlassian JIRA – http://www.atlassian.com/software/jira

Пробковая доска ;)

Page 70: Построение гибкого процесса разработки (3 курс)

Некоторые практики AgileДетальное рассмотрение

Page 72: Построение гибкого процесса разработки (3 курс)

Whole team

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

Page 73: Построение гибкого процесса разработки (3 курс)

Collective ownershipCoding standard

Коллективное владение знаниями о проекте, техническими деталями реализации, списом требований подразумевает открые механизмы доступа к ним.

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

Page 74: Построение гибкого процесса разработки (3 курс)

Planning game

Служит инструментом выработки и проверки наличия единого представления всех членов команды о существующих задачах

Является адаптивной системой оценки сроков выполнения задач

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

Page 75: Построение гибкого процесса разработки (3 курс)

Planning poker

Оценка задачи производится «в закрытую» с использованием специальных карт оценки определенного номинала

Затем карты переворачиваются «рубашкой» вниз

Члены команды разработчиков с самой маленькой и большей оценками высказываются о причинах подобной оценки

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

Page 76: Построение гибкого процесса разработки (3 курс)

Small releases

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

Релизы делаются как можно чаще. В идеале – каждый день.

Page 77: Построение гибкого процесса разработки (3 курс)

Visualize the workflow

Использование любых подручных средств для визуального представления процесса разработки:

Burndown chart

Story mapping

Agile board

Page 78: Построение гибкого процесса разработки (3 курс)

Daily meeting (standup)

Ежедневное (иногда ограниченное по времени) собрание всех членов команды с целью получить ответы каждого на следующие вопросы:

Что было сделано вчера?

Какие проблемы возникли в работе? (Что мешает двигаться дальше?)

Что будет сделано сегодня?

Некоторые из вопросов могут пропускаться

Page 79: Построение гибкого процесса разработки (3 курс)

Daily meeting (standup)

Цели:

Формирование единого представления о прогрессе у всей команды

Предотвращение простоев в работе

Повышение мотивации (выявление «халявщиков»)

Page 80: Построение гибкого процесса разработки (3 курс)

Limit WIP

Ограничение числа задач, находящихся на стадии выполнения (разработка, тестирование).

Page 81: Построение гибкого процесса разработки (3 курс)

Pair programming

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

Возможна комбинация с TDD: один разработчик пишет тест – другой реализацию.

Page 82: Построение гибкого процесса разработки (3 курс)
Page 83: Построение гибкого процесса разработки (3 курс)

Ролевая играИли одни 10мин из жизни команды разработчиков

Page 84: Построение гибкого процесса разработки (3 курс)

Задавайте свои вопросыНе стесняйтесь

Page 85: Построение гибкого процесса разработки (3 курс)

Фил фри ту аск мо квесченз

Email: [email protected] Skype: eskat0n Twitter: http://twitter.com/eskat0n VK: http://vk.com/eskat0n