5. Программист 1.0
Спецификация Программный продукт
Спецификация на входе – программное обеспечение на выходе.
Изменения в спецификациях не любит. Расценивает как угрозу.
Старается всячески избегать изменений.
@dmytromindra #agilebc
6. Программист 2.0
Программист 2.0 и клиент 2.0 учатся понимать друг друга.
Программист 2.0 все еще боится изменений, поэтому приписывет к
каждой версии продукта BETA.
@dmytromindra #agilebc
7. Программист 3.0
Понимает клиента, его бизнес, разделяет ценности.
Всегда готов к изменениям. Понимает и принимает их необходимость.
Стремится делать рабочее и готовое к использованию ПО.
@dmytromindra #agilebc
8. Agile manifesto
Люди и взаимодействие
важнее процессов и инструментов
Работающий продукт
важнее исчерпывающей документации
Сотрудничество с заказчиком
важнее согласования условий контракта
Готовность к изменениям
важнее следования первоначальному плану
@dmytromindra #agilebc
9. 12 принципов Agile
1. Наивысшим приоритетом для нас является
удовлетворение потребностей
заказчика, благодаря регулярной и ранней
поставке ценного программного
обеспечения.
2. Изменение требований приветствуется, даже на
поздних стадиях разработки.
Agile-процессы позволяют использовать
изменения для обеспечения заказчику
конкурентного преимущества.
@dmytromindra #agilebc
10. 12 принципов Agile
3. Работающий продукт следует выпускать как
можно чаще, с периодичностью
от пары недель до пары месяцев.
4. На протяжении всего проекта разработчики и
представители бизнеса должны
ежедневно работать вместе.
@dmytromindra #agilebc
11. 12 принципов Agile
5. Над проектом должны работать
мотивированные профессионалы. Чтобы
работа была сделана, создайте
условия, обеспечьте поддержку и полностью
доверьтесь им.
6. Непосредственное общение является наиболее
практичным и эффективным способом обмена
информацией как с самой командой, так и внутри
команды.
@dmytromindra #agilebc
12. 12 принципов Agile
7. Работающий продукт — основной показатель
прогресса.
8. Инвесторы, разработчики и пользователи
должны иметь возможность поддерживать
постоянный ритм бесконечно. Agile помогает
наладить такой устойчивый процесс разработки.
@dmytromindra #agilebc
13. 12 принципов Agile
9. Постоянное внимание к техническому
совершенству и качеству проектирования
повышает гибкость проекта.
10. Простота — искусство минимизации лишней
работы — крайне необходима.
@dmytromindra #agilebc
14. 12 принципов Agile
11. Самые лучшие требования, архитектурные и
технические решения рождаются
у самоорганизующихся команд.
12. Команда должна систематически
анализировать возможные способы
улучшения эффективности и соответственно
корректировать
стиль своей работы.
@dmytromindra #agilebc
18. LEAN
“ ”
Концепция Lean – это фактически Toyota
Production System.
TPS – это невероятно успешная Японская
концепция оптимизации производства от
компании Toyota. Благодаря TPS, Toyota
добилась потрясающих результатов и
пережила кризисы без потерь.
@dmytromindra #agilebc
19. Основа TPS
Jidoka (自働化)
(English: Autonomation - automation with
human intelligence)
Just-in-Time (ジャストインタイム) (JIT)
@dmytromindra #agilebc
20. Поток
LEAN ориентирован на
создание и поддержку
потока создание и
доставки ценностей.
@dmytromindra #agilebc
22. Запасы
Запасы
(буфер)
Отказ от накопления запасов позволяет выявить камни т.е. узкие места.
Что-то во время разработки вам мешает, но пока вы делаете планирование
с запасом, вместо того, чтобы устранить эту проблему, вы включаете ее в план.
Когда уйдут все камни, может оказаться так, что вашей лодке достаточно литра
воды для того, чтобы плыть!
@dmytromindra #agilebc
23. LEAN ПРОГРАММИРОВАНИЕ
Мэри и Том в своих книгах
изложили основные принципы
Lean Software Development
@dmytromindra #agilebc
25. #1 Оптимизируйте целое
Оптимизация части системы будет всегда, с течением
времени, выливаться в общую оптимизацию системы.
Сфокусируйтесь на потоке создания ценности: от
концепции к наличным деньгам.
Предоставляйте полный продукт, способный
решить поставленную проблему.
Думайте о долгосрочной перспективе.
@dmytromindra #agilebc
26. #2 Устраняйте потери
Потери все, что не представляет ценность для клиента.
Три крупнейших статьи потерь:
Создание неверного продукта: «Не существует
ничего более бесполезного, чем эффективное
выполнение ненужной работы».
Помехи в понимании, являющимся основой
разработки.
Замусоривание – загрязнение потока работы частым
переключением задач, большими списками
запросов, накопление множества частично
выполненных задач.
@dmytromindra #agilebc
27. #3 Встраивайте качество
Если вы регулярно находите дефекты в процессе
проверки, ваш процесс неисправен.
Дефекты не должны выявляться в процессе
окончательной проверки.
Сделайте ваш процесс устойчивым к ошибкам, взяв
за основу первенство тестов.
Разрывайте зависимости. Архитектура системы
должна позволять добавлять функциональность в
любой момент.
@dmytromindra #agilebc
28. #4 Непрерывно обучайтесь
Планирование полезно. Обучение крайне необходимо.
Предсказуемая производительность. Не пытайтесь
спланировать будущее до мелочей, просто
развивайтесь и будьте готовы к нему.
Оставляйте открытыми возможности. Делайте код
устойчивым к изменениям.
Принимайте решения как можно позже. До этого
собирайте информацию.
@dmytromindra #agilebc
29. #5 Быстрые результаты
Начните с понимания того, что представляет ценность
для заинтересованных лиц. Настройте поток создания
этих ценностей.
Быстрые результаты, высокое качество и низкая
стоимость совместимы.
Теория массового обслуживания применима к
процессу разработки, а не только к серверам.
Управлять потоком намного легче, чем управлять
расписанием.
@dmytromindra #agilebc
30. #6 Вовлекайте каждого
Время и энергия, ярких, творческих людей являются
ограниченным ресурсом, а также конкурентным
преимуществом. Люди, которым платят честно и
адекватно, мотивированы:
• Автономией: ответственность за выполнение
значимых задач.
• Мастерством: культура и среда, которая позволяет
каждому стать мастером своего дела.
• Целью: вера в цель работы.
@dmytromindra #agilebc
31. #7 Совершенствуйтесь с каждым днем
Результаты не являются конечной целью – конечной
целью является развитие людей и построение
системы, способной давать результат.
Провал – возможность научиться.
Стандарты существуют для того, чтобы их изменять
и улучшать.
Используйте научный метод:
гипотезы, эксперименты, документация, альтернати
вы.
@dmytromindra #agilebc
32. Повторим принципы
#1 Оптимизируйте целое
#2 Устраняйте потери
#3 Встраивайте качество
#4 Непрерывно обучайтесь
#5 Быстрые результаты
#6 Вовлекайте каждого
#7 Совершенствуйтесь с каждым днем
@dmytromindra #agilebc
33. Раньше декларировались принципы:
Устраняйте потери
Усиливайте обучение
Принимайте решения как можно позже
Доставляйте результаты как можно
раньше
Давайте команде полномочия
Встраивайте целостность
Пытайтесь увидеть целое
@dmytromindra #agilebc
34. 7 ИСТОЧНИКОВ ПОТЕРЬ
1. Экстра функциональность
2. Частично сделанная работа
3. Повторное изучение
@dmytromindra #agilebc http://www.seppo.net/cartoons/displayimage.php?album=23&pid=678
35. …
4. Передача задачи
5. Переключение между задачами
6. Задержки
7. Дефекты
http://www.seppo.net/cartoons/displayimage.php?album=23&pid=785
@dmytromindra #agilebc
37. №0: Одна задача за один раз
Попытка сделать несколько дел одновременно
приводит к тому, что все они остаются недоделанными.
@dmytromindra #agilebc
38. №1: Все под контролем
“ Решил начать
”
проект, заведи систему
контроля версий.
Есоѓ райо жиѐжсѓися д
пзжядий, жѐ лжомяѐ кєиь в
сѓсияея джѐизжоя вязсѓй.
@dmytromindra #agilebc
39. №2: Небольшие шаги
“ Тише едешь –
дальше будешь.
”
Чем меньше шаги – тем меньше затраты.
Большой шаг => увеличивает затраты.
Пзѓ лвѓмяѐѓѓ ѐякжоьтѓеѓ тагаеѓ, иє
сауя ѓеяять закжиаюуйю пзжгзаеей ѓ
оягся джѐизжоѓзйять наизаиє взяеяѐѓ.
@dmytromindra #agilebc
40. №3: Автоматизируй
“
”
Не автоматизируй то, что
можно вообще не делать.
Чяе кжоьтя налас кєож
авижеаиѓнѓзжваѐж, ияе
кжоьтя взяеяѐѓ ѐа ѐжвєя
ѓѐиязясѐєя наласѓ.
@dmytromindra #agilebc
42. №5: Тестируй
“ Предотвращение
ошибок в начале
”
эффективнее их
исправления в конце.
Мжлйоьѐєя иясиє – эиж кязямоѓвая
занзакжида в сѓсиже вѓля. Эиж ѓ лвѓмяѐѓя
еяодѓеѓ тагаеѓ, ѓ авижеаиѓнађѓя, ѓ
пзжвязда ѐа сжживяисивѓя спяђѓрѓдађѓѓ.
@dmytromindra #agilebc
43. №6: Автоматизируй развертывание
“ ”
Минимум ручной работы
при развертывании.
Чяе еяѐьтя зйсѐжй закжиє, ияе еяѐьтя
жтѓкжд. Тяе кєсизяя ѐжвєя рйѐдђѓѓ ѐасѐйи
закжиаиь ѓ пзѓѐжсѓиь пжоьнй.
@dmytromindra #agilebc
44. №7: План Б
“ Обязательно оставлять
возможность быстро
”
откатиться к предыдущей
версии.
Вжнежмѐжсиь жидаиѓиь ѓнеяѐяѐѓя
пжожмѓияоьѐж кязямяи ѐязвѐйю сѓсияеє, а
иадмя ѓнкавояяи жи сизаёа пязял
занвязиєваѐѓяе ѐжвжй вязсѓѓ.
@dmytromindra #agilebc
45. №8: Ползучий фичуризм
“ По статистике 2/3 всей
”
функциональности ПО
никогда не используется.
Чѓсиєя йкєидѓ!
Есоѓ вє сежмяия пзавѓоьѐж зассиавѓиь
пзѓжзѓияиє, иж вамѐєя рйѐдђѓѓ ляоаиь
кйляи пзжуя, закжиаиь ѐа вас жѐѓ ѐасѐйи
заѐьтя, а лж еаожвамѐєё рйѐдђѓй ляож
ежмяи вжжкуя ѐя лжйиѓ.
@dmytromindra #agilebc
46. №9: Сложность
“ Чем сложнее код, тем
”
сложнее добавление
функциональности.
@dmytromindra #agilebc
47. №10: Удаляйте лишнее
“ ”
Этот класс не используется?
Удаляйте!
Есоѓ жѐ пжѐалжкѓися, вє ягж ѐайляия в сѓсияея
джѐизжоя вязсѓй. Нж иядйуая кана джла
лжомѐа кєиь сѓсижй.
@dmytromindra #agilebc
48. №11: Откладывайте решения
“ Чем позже вы принимаете
решение, тем большей
”
информацией вы
обладаете.
Мѐжгѓя ѐасѓѐаюи пзжядиѓзжваѐѓя
пзѓожмяѐѓя с канє лаѐѐєё. А лжсиаижсѐж оѓ
вє ж ѐяй нѐаяия? Засасийю ѐяи. Мжмѐж
жиожмѓиь эиж зятяѐѓя ? Лягдж! Пзжлязмѓиясь
кян канє иад лжогж, дад эиж вжнежмѐж. Кжгла
вє кян ѐяя ймя ѐя сежмяия жкжйиѓсь, вє кйляия
нѐаиь жсяѐь еѐжгж ж яя сизйдийзя.
@dmytromindra #agilebc
51. Сжвяиє:
№0: Одна задача за один раз
№1: Все под контролем
№2: Небольшие шаги
№3: Автоматизируй
№4: Интегрируйся
№5: Тестируй
@dmytromindra #agilebc
52. ѓ яуя ѐяеѐжгж
№6: Автоматизируй развертывание
№7: План Б
№8: Ползучий фичуризм
№9: Сложность
№10: Удаляйте лишнее
№11: Откладывайте решения
@dmytromindra #agilebc