Lean Software Development

3,083 views

Published on

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
3,083
On SlideShare
0
From Embeds
0
Number of Embeds
1,090
Actions
Shares
0
Downloads
31
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

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

×