0
Бережливая разработка       Дмитрий Миндра       Lohika, Одесса
@dmytromindra #agilebc
@dmytromindra #agilebc
О ПРОГРАММИСТАХ@dmytromindra #agilebc
Программист 1.0       Спецификация                                Программный продукт          Спецификация на входе – про...
Программист 2.0          Программист 2.0 и клиент 2.0 учатся понимать друг друга.          Программист 2.0 все еще боится ...
Программист 3.0          Понимает клиента, его бизнес, разделяет ценности.          Всегда готов к изменениям. Понимает и ...
Agile manifesto    Люди и взаимодействие         важнее процессов и инструментов    Работающий продукт         важнее исче...
12 принципов Agile    1. Наивысшим приоритетом для нас является    удовлетворение потребностей    заказчика, благодаря рег...
12 принципов Agile    3. Работающий продукт следует выпускать как    можно чаще, с периодичностью    от пары недель до пар...
12 принципов Agile    5. Над проектом должны работать    мотивированные профессионалы. Чтобы    работа была сделана, созда...
12 принципов Agile    7. Работающий продукт — основной показатель    прогресса.    8. Инвесторы, разработчики и пользовате...
12 принципов Agile    9. Постоянное внимание к техническому    совершенству и качеству проектирования    повышает гибкость...
12 принципов Agile    11. Самые лучшие требования, архитектурные и    технические решения рождаются    у самоорганизующихс...
Agile расчитывает на ...@dmytromindra #agilebc
Обычно в наличии ...@dmytromindra #agilebc
БЕРЕЖЛИВОЕ ПРОИЗВОДСТВО@dmytromindra #agilebc
LEAN     “                    ”         Концепция Lean – это фактически Toyota         Production System.       TPS – это ...
Основа TPS    Jidoka (自働化)    (English: Autonomation - automation with      human intelligence)    Just-in-Time (ジャストインタイム...
Поток    LEAN ориентирован на    создание и поддержку    потока создание и    доставки ценностей.@dmytromindra #agilebc
Поток@dmytromindra #agilebc
Запасы     Запасы     (буфер)     Отказ от накопления запасов позволяет выявить камни т.е. узкие места.     Что-то во врем...
LEAN ПРОГРАММИРОВАНИЕ                         Мэри и Том в своих книгах                         изложили основные принципы...
Основные принципы                  бережливой разработки@dmytromindra #agilebc
#1 Оптимизируйте целое            Оптимизация части системы будет всегда, с течением            времени, выливаться в общу...
#2 Устраняйте потери            Потери все, что не представляет ценность для клиента.            Три крупнейших статьи пот...
#3 Встраивайте качество            Если вы регулярно находите дефекты в процессе            проверки, ваш процесс неисправ...
#4 Непрерывно обучайтесь            Планирование полезно. Обучение крайне необходимо.             Предсказуемая производи...
#5 Быстрые результаты            Начните с понимания того, что представляет ценность            для заинтересованных лиц. ...
#6 Вовлекайте каждого            Время и энергия, ярких, творческих людей являются            ограниченным ресурсом, а так...
#7 Совершенствуйтесь с каждым днем            Результаты не являются конечной целью – конечной            целью является р...
Повторим принципы    #1 Оптимизируйте целое    #2 Устраняйте потери    #3 Встраивайте качество    #4 Непрерывно обучайтесь...
Раньше декларировались принципы:          Устраняйте потери          Усиливайте обучение          Принимайте решения ка...
7 ИСТОЧНИКОВ ПОТЕРЬ    1.       Экстра функциональность    2.       Частично сделанная работа    3.       Повторное изучен...
…    4. Передача задачи    5. Переключение между задачами    6. Задержки    7. Дефекты                             http://...
Практика                         (советы)@dmytromindra #agilebc
№0: Одна задача за один раз     Попытка сделать несколько дел одновременно     приводит к тому, что все они остаются недод...
№1: Все под контролем“    Решил начать                 ”     проект, заведи систему     контроля версий.      Есоѓ райо жи...
№2: Небольшие шаги                                      “     Тише едешь –                                            даль...
№3: Автоматизируй “                                  ”    Не автоматизируй то, что    можно вообще не делать.  Чяе кжоьтя ...
№4: Интегрируйся                             “   Самая лучшая стратегия –                                 непрерывная инте...
№5: Тестируй“   Предотвращение    ошибок в начале                             ”    эффективнее их    исправления в конце. ...
№6: Автоматизируй развертывание                         “                   ”                             Минимум ручной р...
№7: План Б“   Обязательно оставлять    возможность быстро                 ”    откатиться к предыдущей    версии.   Вжнежм...
№8: Ползучий фичуризм                         “   По статистике 2/3 всей                                                  ...
№9: Сложность“   Чем сложнее код, тем                             ”    сложнее добавление    функциональности.@dmytromindr...
№10: Удаляйте лишнее                         “ ”                          Этот класс не используется?                     ...
№11: Откладывайте решения “  Чем позже вы принимаете    решение, тем большей                         ”    информацией вы  ...
Kanban & Kaizen@dmytromindra #agilebc
Ретроспектива@dmytromindra #agilebc
Сжвяиє:    №0: Одна задача за один раз    №1: Все под контролем    №2: Небольшие шаги    №3: Автоматизируй    №4: Интегрир...
ѓ яуя ѐяеѐжгж    №6: Автоматизируй развертывание    №7: План Б    №8: Ползучий фичуризм    №9: Сложность    №10: Удаляйте ...
Какой инструмент лучше?@dmytromindra #agilebc
Спасибо !@dmytromindra #agilebc
Upcoming SlideShare
Loading in...5
×

Lean Software Development

2,612

Published on

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,612
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
24
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "Lean Software Development"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×