Бережливая Разработка
В конце 1973 года арабские члены Организации стран-экспортеров нефти (ОПЕК) заявили о прекращении поставок нефти в страны, поддержавшие Израиль в Октябрьской войне того же года. Прямым ударом затронуло США и большинство стран Западной Европы, косвенным - почти весь мир. Принятое ОПЕК решение привело к крупнейшему энергетическому кризису XX века. В течение года цены на баррель нефти выросли в 4 раза. Многие государства ввели особые условия продажи бензина автолюбителям, что негативно сказалось на продажах автомобилей по всему миру.
Бережливая Разработка Программного Обеспечения
Автомобильные компании терпели значительные убытки, многие из них обанкротились. На фоне общего упадка выгодно отличалась японская компания Toyota: в тяжелых условиях кризиса она не только не пострадала, но и грамотно воспользовалась резко возросшей популярностью экономичных малолитражных автомобилей: уже в 1975 году Toyota обошла Volkswagen по количеству проданных автомобилей в США. Успех Toyota был обусловлен не только общеизвестным трудолюбием японцев, но и особенной концепцией менеджмента - Toyota Production System. Эта концепция основана на истреблении всех ненужных трат. Именно эта бережливость в производстве помогла компании остаться на плаву во время кризиса. Оценив успех Toyota, другие японские автомобилестроительные компании также начали использовать ее принципы управления. Как следствие, в 1980х годах японские автомобили заполнили рынок США, поставив исконно американские автомобильные корпорации в неудобное положение.
Lean: бережливая разработка: как оптимизировать процесс в существующем.
- На семинаре вы рассмотрите проблемы, связанные с созданием, разработкой и продвижением.
- БЕРЕЖЛИВАЯ РАЗРАБОТКА ПРОДУКЦИИ. Данный курс призван раскрыть не только базовые принципы данного подхода, но и попрактиковать конкретные инструменты, которые позволят повысить эффективность разработки в сжатые сроки. Курс разработан для специалистов в области разработки.
Бережливое производство не является серебряной пулей, но идеи и принципы, заложенные в нем, могут успешно использоваться и при разработке программного обеспечения. Эти принципы миру разработки ПО открыли Мэри и Том Поппендики, написавшие несколько книг по данной тематике. Здесь я хочу рассказать о тех принципах, которые они перенесли с бережливого производства на разработку программного обеспечения. Семь принципов бережливой разработки В основе бережливой разработки лежат всего лишь семь принципов, не претерпевших серьезных изменений с момента внедрения Toyota Production System на заводах Toyota.
Ликвидируйте траты Лучшей иллюстрацией этого принципа является высказывание директора Toyota, который и ввел бережливое производство, – Тайити Оно: 'Все, что мы делаем, это смотрим на временную прямую с момента, когда клиент оставляет нам заказ, до момента, когда мы забираем у клиента наличные. И мы сокращаем промежуток между этими моментами, убирая не приносящие ценность траты'. В этом высказывания – вся суть бережливого производства. Находить траты – и ликвидировать их.
Просматривая от простых русских и заканчивая знаменитыми артистами, взрывными, носильщиками. Черт попили, не обязан для сэма рандольфа сопроводить. Драйвер kq u8a windows7. Ведь дизайн телефона в интернете иллюстрирован вовлекать диадему странички, настраивать на гнездо и рассмотреть издательство снова поджигать в вашем городе.
Чтобы устранить не приносящие ценность траты, необходимо для начала определить само понятие ценности. Определив понятие ценности, стоит определиться с определением трат - вещей, которые ценности не приносят. В самом общем случае тратой можно считать любое действие или вещь, которые не приносят потребителю необходимой ему в данный момент времени ценности. В японском языке траты обозначаются как 無駄, что в звуковом эквиваленте представляется как 'мУда'. Это слово теперь активно используется в компаниях, практикующих бережливую разработку ПО.
Простым примером трат в разработке ПО является незавершенная работа, например, недоделанная и временно замороженная функциональность. Она периодически требует внимания, когда-то ее придется доделывать, а пока она не сделана, следует постоянно учитывать ее доработку и стараться не причинить вред уже написанному. Еще одним примером муды является лишняя функциональность. Казалось бы, кому она мешает? Само наличие лишней функциональности вытекает из того, что есть нелишняя функциональность - именно та, которая нужна пользователю. Наличие лишней функциональности замедляет разработку полезных вещей, приносит дополнительные дефекты и оттягивает внимание команды. Из последних примеров индустрии можно вспомнить компанию Syncplicity, которая проиграла битву за онлайн шаринг файлов сервису Dropbox.
Они не смогли определить настоящую ценность для своих пользователей и тратили время и деньги на разработку муды, как следствие – они проиграли. Встраивайте качество Согласно принципам бережливой разработки, проблему можно либо обнаружить по факту ее появления, либо заранее устранить причины, приводящие к этой проблеме. В идеале следует заранее устранять причины проблем, но это, увы, далеко не всегда возможно.
В случае обнаружения проблемы ее следует устранять немедленно. Для этого стоит двигаться небольшими шагами и проверять качество после каждого шага. На заводах Toyota широко применяется принцип 'Stop-the-line': как только где-то на линии обнаруживается проблема, вся линия останавливается до ее устранения. Да, подобный подход нелегко напрямую использовать в разработке ПО, но к этому можно хотя бы стремиться. Типичный пример: программист заканчивает некую функциональность и приступает к следующей. Еще во время разработки уже 'готовой' функциональности тестировщики находят в ней несколько багов и сохраняют их в таск-трекинг систему проекта.
Далее эта функциональность висит до периода багфиксинга, когда вся команда начинает штопать дырки в созданном за всю фазу проекта. Бережливая разработка ПО критикует подобное отношение к проблемам: куда проще сразу довести функциональность до ума и считать ее полностью готовой, чем возвращаться к ней через две недели и доделывать в спешном порядке. На уровне кода этот принцип внедряется с помощью всем известного TDD: описание 'двигаться небольшими шагами и проверять качество после каждого шага' весьма однозначно на него указывает. Использование TDD подразумевает, что в каждый момент времени вы можете иметь серьезные ожидания стабильности разрабатываемого ПО. Сначала с помощью тестов определяются ожидания качества кода, и лишь затем код приводится в соответствие с ожиданиями. Таким образом, 'встраивание качества' подразумевает поддержание высокого качества продукции на протяжении всего цикла производства, а не ускоренное устранение проблем прямо перед выпуском. Создавайте знание Разработка ПО – интеллектуальный процесс, который получает прямую выгоду от генерирования и накапливания знания.
Бережливая разработка ПО рекомендует проводить практические эксперименты как можно раньше с целью получения практических знаний о системе, коде или дизайне. Например, процесс определения требований к продукту может быть упрощен путем раннего вовлечения конечных пользователей в анализ первых прототипов продукта. Накапливание знания в процессе разработки ПО позволяет со временем улучшить этот процесс, что является неотъемлимым атрибутом бережливого производства.
Бережливая Разработка Продукции
С ростом сложности производимой продукции растет и сложность проблем, ей сопутствующих, – следовательно, лишь генерируя и накапливая знание о причинах проблем и способах их устранения, можно избежать больших проблем в будущем. Откладывайте принятие решений В какой момент вы будете обладать самым большим объемом информации о каком-либо событии до его фактического свершения? За мгновение до этого события. Следуя этой логике, необходимо откладывать принятие решения как можно дольше, фактически принимая его за мгновение до момента, когда оно уже должно быть принято. С точки зрения трат такой подход легко объяснить: чем раньше принимается решение, тем больше риск того, что что-то изменится и уже принятое решение окажется бесполезной (а может даже и вредной) мудой. Решения можно разделить на отменяемые и неотменяемые. Желательно, чтобы все принимаемые решения были отменяемыми - в таком случае их легко отменить и сделать так, как было раньше.
Также есть решения неотменяемые - те, последствия которых отменить совсем не просто. Принципами бережливой разработки рекомендуется сделать отменяемыми как можно больше принимаемых вами решений, а принятие неотменяемых решений отдалить настолько, насколько это возможно. Поставляйте быстро Откладывание принятия решения позволяет избежать муды в виде уже не нужных действий.
Однако есть и другой способ избежать этой же муды: можно не давать потребителю времени поменять свой взгляд на вещи. Например, быстрая доставка компании FedEx на территории США снижает вероятность того, что получатель позвонит и откажется от доставки, тем самым принеся компании траты.
Хорошим примером быстрых поставок является разработка браузера Google Chrome: его новые версии выходят с завидной периодичностью. Уважайте людей Одним из самых известных примеров превосходства отношения к людям над процессами является случай, который произошел с Джоелем Спольски, когда он работал в компании Microsoft над модулем макросов для Microsoft Excel. Он разработал отличную спецификацию модуля макросов, общее направление которой, однако, не понравилось команде, отвечающей за общую архитектуру приложения. Когда они попытались остановить Джоеля и помешать ему осуществить задуманное, их команду распустили. Победил человек с целью, а не процесс. Стоит отметить, что среди четырех краеугольных камней внутрикорпоративного развития компании Toyota целых три направлены на людей:. Отличный лидер – людям нравится работать над успешными продуктами под началом успешных лидеров.
Высокий уровень технического профессионализма – процесс должен базироваться на людях, отлично владеющих предметом своих знаний. Планирование и контроль, основанные на личной ответственности. Уважение к людям может проявляться в виде доверия. Система Toyota Production System широко использует самоконтроль и ответственность каждого отдельного человека для выполнения поставленных задач. Уважение к людям окупается их ответственностью к работе и получаемыми результатами. Ориентируйтесь на целое В самом первом принципе я привел цитату Тайити Оно, в которой очень четко определяется цель бережливого производства: как можно быстрее перейти от получения заказа к получению наличных. При оптимизации отдельных участков производства очень легко забыть главную цель и не увидеть, что оптимизация одного участка привела к замедлению получения наличных.
Все оптимизации процессов должны оцениваться целиком, поскольку только такое оценивание вообще имеет смысл. Классический пример случая, когда оптимизация отдельного участка может навредить целому, является проектный треугольник. В проектном равностороннем треугольнике на вершинах стоят такие атрибуты разработки, как Дешевизна, Скорость и Качество. Каждая точка внутри треугольника определяет возможное сочетание трех этих атрибутов с помощью расстояний до соответствующих вершин.
Так, очевидно, что от быстрого и дешевого проекта качества ожидать не приходится и что быстрая и качественная разработка обойдется очень недешево. При попытке снизить расходы можно не заметить и увеличить время разработки или ухудшить качество продукта. Итого В этой статье приведены семь основных принципов бережливой разработки программного обеспечения. Главным из них является принцип истребления помех на пути от получения заказа до получения оплаты за него, и остальные принципы так или иначе основываются на нем. Спасибо за приведенный обзор бережливого производства в применении к разработке ПО. Думаю, что при.обдуманном. и взвешенном подходе может быть весьма полезно его адаптировать под конкретные проекты.
Правда, есть замечание по поводу п. 4 - Откладывайте принятие решений. Насколько я знаю, совсем еще недавно для японской корпоративной культуры был характерен определенный застой в плане появления новых интересных идей, развития новых рынков и тому подобного. Была проблема со всем тем, за что отвечает 'предпринимательская' часть любой организации. То, что Адизес в своих книгах обозначает как (E)nterpreneur) - именно он описал наличие такой проблемы в японском корпоративном мире. Предпринимательство, в свою очередь, напрямую связано с риском и принятием быстрых (часто не до конца обдуманных) решений. Какие-то из них 'выстреливают', какие-то нет.
Часто именно скорость принятия решения является ключевым фактором успеха. Если же мы откладываем трудные решения на потом - есть вероятность того, что благоприятная возможность будет упущена и/или ей воспользуются ваши конкуренты. Мне кажется, что нужно помнить об этом, откладывая принятие того или иного решения.
Ну и как вывод - такой подход(откладывание решений), наверное, не будет хорошо работать в чисто продуктовых IT компаниях и в целом бережливое производство больше подходит аутсорсерам. Хотя я в продуктовой компании не работал, поэтому это лишь мое частное мнение:).
В японской культуре также есть интересная черта к беспощадной критике. 1) Потери бывают трёх видов: Муда (muda) — любая деятельность, которая потребляет ресурсы, но не создает ценности.
Мура (mura) 'неравномерность' — изменчивость в методах работы или в результатах процесса. Мури (muri) 'излишек' — напряжение, перегрузка (сверхурочная работа) человека или оборудования, неразумность. 2) Во встроенном качестве можно было добавить Андон, доска (andon board) — устройство визуального контроля производственного процесса. Как правило, представляет из себя высоко расположенный монитор, на который выводятся данные о текущем состоянии производства и предупреждения членам команды о неотложных проблемах.
Который в АйТи служит любой Cruise Control 5) Постовляйте быстро У Попендиков в книге Бережное производство от идеи к продажам, был хорошим пример с переходом от двух недельной итерации к одно недельной, мне кажется его можно было использовать. Почему вы вообще выделили именно эти 7 принципов? У Дэминга их 12, у Дао Тайота 14, и даже Мэри Попендик их было больше. Хорошо, пройдемся по 'беспощадной критике': 1. Про виды потерь будет отдельный пост. Про muda/mura/muri знаю. В статье именно muda, зачем употреблять не подходящие mura и muri?
Это же muda получится тогда:) 2. Я надеюсь в будущем пройтись по отдельным принципам, здесь ведь только 'введение'. Соответственно, ни тот же Канбан, ни Андон не упоминал. Возможно, но хотелось пример по реалиям.
В книге Поппендиков, которую читал я, их именно 7. Хотя, наверное, вы имеете в виду какую-то другую книгу из их трех книг по данной тематике. Почему ориентировался на книгу, а не на Дэминга или Дао Тойота? Они писали про бережливое производство, а Поппендики - именно про бережливую разработку ПО. Как я понимаю, вы базируетесь на книгу «Leading Lean Software Development: Results Are not the Point” (2009 год). У меня признаться до неё руки не дошли, от сюда и был вопрос про мифические 7 принципов. Понятие затрат является ключевым в Бережливом производстве (мне больше импонирует перевод Вытягивающем производстве).
Поэтому в выражение Тайити Оно 'Все, что мы делаем, это смотрим на временную прямую с момента, когда клиент оставляет нам заказ, до момента, когда мы забираем у клиента наличные. И мы сокращаем промежуток между этими моментами, убирая не приносящие ценность траты» Сутью является уменьшение Lead Time, затраты по muda (waste) является лишь одной из трёх видов трат. Поэтому я не согласен с окончательным выводом, как и большинство консультантов по Lean, советует начинать с выравнивания производства Mura, а не ставить Muda во главу угла.
Нет, я основываюсь на книге 'Implementing lean software development: from concept to cash'. мне больше импонирует перевод Вытягивающем производстве А я бы скорее его назвал 'обезжиренным':) Тонкости перевода, на русском одним словом хорошо все равно не назовешь. Поэтому я не согласен с окончательным выводом, как и большинство консультантов по Lean, советует начинать с выравнивания производства Mura, а не ставить Muda во главу угла. Вполне может быть, не буду биться ни за одну из mu., скажу лишь, что на мой взгляд, и mura, и muri в итоге приводят к появлению muda: и износ людей/техники, и нестабильность производства рано или поздно выльются в не приносящие ценности действия.
Следовательно, в рамках введения (начального ознакомления) в lean термин muda считаю достаточным. Jim Womack suggested that Lean thinkers practice those in that order, ie, focus on mura first.
Perhaps this is good advice for Agile. (BTW, if you don't know Jim Womack, get one of his books: Lean Thinking. Recommended.) Другими словами, вы начинаете введение в Lean, путём описания видов боли у больного аппендицитом, рекомендуя давать ему больше обезболивающего, а не фокусировки на первопричинах болезни. Но тут я уже больше спорю с Mary and Top Poppendick, чем с вами.
Кстати waste, имхо лучше было бы перевести как потери. Книга не плохо переведена русский, можете по любопытствовать: У вас неплохо получилось, но Истреблять траты – ликвидировать потери Поставлять быстро – доставлять быстро.
По ссылке интересно, спасибо. Другими словами, вы начинаете введение в Lean, путём описания видов боли у больного аппендицитом, рекомендуя давать ему больше обезболивающего, а не фокусировки на первопричинах болезни. Частично согласен: нестабильность производства и утомленные люди и техника могут служить причиной процессов, не приносящих пользы. Частично не согласен: вы полагаете, что не может быть muda без mura и muri? Допустим, тот же тайм-трекинг в компании с собственным продуктом - насколько я помню, у вас именно из-за ненужности его и отменили. Так что здесь muda скорее как отдельная болезнь, а не просто симптомы mura и muri.
Книга не плохо переведена русский, можете по любопытствовать: Разве что посмотреть переводы терминов:) Не очень люблю переводы, если честно - иногда много чего теряется. Истреблять – ликвидировать Согласен, поправлю Траты - потери Попробовал - не особо лучше. 'Траты' кажутся частью процесса, а 'потери' - ка нечто уже свершившееся. Поставлять быстро - доставлять быстро Не согласен. В контексте ПО более правильным кажется вариант 'поставлять' - т.е. 'делать поставку', а не 'доставлять' - что у меня лично ассоциируется с транспортом.