Lean Software Development
Upcoming SlideShare
Loading in...5
×
 

Lean Software Development

on

  • 2,726 views

 

Statistics

Views

Total Views
2,726
Views on SlideShare
1,650
Embed Views
1,076

Actions

Likes
4
Downloads
20
Comments
1

4 Embeds 1,076

http://agilebasecamp.org 1008
http://kiev2012.agilebasecamp.org 63
http://us-w1.rockmelt.com 3
https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Lean Software Development Lean Software Development Presentation Transcript

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