История велосипеда — более подходящая аналогия для разработки программного обеспечения.
На недавнем семинаре, посвященном разработке программного обеспечения, мы обсуждали одну известную аналогию гибкой методологии разработки. Если вы когда-нибудь читали книги или посещали курсы по обучению гибкой методологии, то вы, скорее всего, тоже это видели. Хенрик Книберг нарисовал довольно оригинальную и узнаваемую картинку.
Эту картинку не стоит воспринимать буквально. Она рассчитана на то, чтобы показать главные преимущества гибкой разработки над каскадной моделью, а именно по отношению к минимально жизнеспособному продукту (Viable Product (MVP).
- Стоимость меняется на каждой стадии разработки
- Решение задачи изменяется и улучшается с каждой моделью
- На каждой стадии, решения могут согласовываться и приниматься снова, если это необходимо.
Именно из-за этих причин я поддерживаю гибкую методологию разработки и концепцию минимально жизнеспособного продукта, но эта картинка немного меня смущает. И вот почему:
- Это и не итеративная и не инкрементная модели разработки. Вы не сможете построить автомобиль, если начнете со скейтборда, а затем сделаете велосипед, или мотоцикл. Как Книберг сам отмечает в своем блоге, картинка описывает разработку продукции, а не разработку программного обеспечения.
- Требуется слишком много предположений, чтобы соотнести его с разработкой программного обеспечение. Так, во время своего семинара, ведущий предположил, что главной задачей, которую надо было решить был перевоз коробок с одного конца парковки, на другой конец, и тогда скейтборд мог считаться лучшим решением ( ведь конечный результат, четырехдверный седан не совсем подходит для этого).
- И если бы меня наняли, чтобы создать машину, а я бы в качестве прототипа показал скейтборд, то меня бы тут же уволили.
А что еще хуже, мой генеральный директор по профессии инженер, и он управлял нашим производством на протяжении нескольких лет, прежде, чем стать генеральным директором. Если бы я показал ему эту аналогию, то я бы все совещание потратил на защиту этой картинки, и мы бы даже не дошли до главной темы — гибкой методологии разработки.
Картинки и ментальные модели никогда не идеальны, но они могут быть неплохи. Но это изображение недостаточно хорошо. На самом деле, потребовалось много лет, прежде чем автомобиль смог превзойти лошадь в простых параметрах, и у нас ушел целый век на развитие автомобилестроения. Картинки с объяснениями должны быть проще, чем то, что они объясняют.
А эта картинка гораздо сложнее, чем гибкая методология разработки, т.к. в ней объединено 125 лет развития автомобилестроения в нескольких изображениях. Более того, для тех, кто хоть немного разбирается в машинах или производственном процессе, эта картинка станет скорее помехой, чем помощью.
Но в этой картинке все-таки есть одна хорошая аналогия — велосипед. Почти все когда-нибудь катались на велосипеде, и как его технология, так и история развития довольно просты. Более того, развитие велосипеда — как минимум в самом начале, а может быть и позднее — было как итеративным, так и инкрементным.
Велосипедный Agile
На протяжении 200 лет с помощью велосипедов пытались решить одну конкретную задачу:
Как можно передвигать быстрее, используя только свою собственную силу?
Итерация 1: Самокат
Первые велосипеды состояли из того, что уже было хорошо знакомо к 1800-м — колес и сидений.
Это было довольно хорошо для первой попытки, и даже сейчас еще можно встретить детские велосипеды, которые работают по этому же принципу. Чтобы поехать, вам нужно оттолкнуться ногами и приподнять от земли ступни. Но вам удастся проехать только несколько метров, и вы никак не сможете контролировать скорость.
Итерация 2: Педали
Во второй итерации были добавлены педали, приделанные прямо к переднему колесу.
Теперь можно было увеличивать скорость езды, не касаясь ногами земли. Появилась возможно путешествовать быстрее и дальше. Но педали все еще были неэффективны, они не использовали всю прикладываемую силу.
Итерация 3: Пенни-фартинг
Чтобы увеличить эффективность педалей, переднее колесо было увеличено. Так, с каждым оборотом педали, колесо проезжало бОльшее расстояние. Заднее же колесо, которое стало менее важным, было уменьшено в размере, чтобы сохранить тот же вес.
Велосипед «пенни-фартинг» был популярен среди здоровых молодых людей, но высокая цена и опасность такой конструкции- только представьте, что будет, если упадете с него!- уменьшили спрос.
Итерация 4: Безопасный велосипед
Как мог велосипед сохранить, или даже увеличить эффективность модели «пенни-фартинг», и при этом стать более безопасным? При помощи цепной передачи на заднее колесо.
Теперь, велосипеды могли оставаться обычного размера, и седло находилось невысоко над землей. Педали вращали передаточный механизм при помощи цепи, которая так же соединялась с задним колесом. Соотношение механизмов могло регулироваться, так что велосипеды были такими же быстрыми и эффективными, как и пенни-фартинг, но гораздо безопаснее
Эта версия велосипеда была очень популярна. После 10 лет изменений, велосипед достиг массового спроса. Количество покупателей увеличилось, и развитие пошло в таком важном направлении, как …
Итерация 5: Переключение скоростей
Многоскоростные велосипеды.
Велосипедный переключатель скоростей позволяет менять скорости на велосипеде. Он был изобретен около 1900 года. Благодаря планетарному механизму стало возможно уменьшить прикладываемые усилия и увеличить эффективность за счет использования низких передач на старте или во время подъема на холмe, и высоких во время быстрой езды. Велосипед принял вид, который сохранил до наших дней.
Продвинутая аналогия
Почему история развития велосипедов подходит в качестве аналогии для гибкой методологии разработки?
- Каждая итерация велосипеда решала одну и ту же проблему: использование человеческой силы для более быстрого движения.
- Устройство велосипеда всем знакомо и понятно.
- История развития велосипеда действительно инкрементна: на каждой стадии добавлялись новые детали, но использовалась постоянная парадигма. На некоторых стадиях велосипед преобразовывался благодаря применению новых технологий.
- Развитие в то же время было и итеративным. Различные версии велосипедов были представлены конкурирующими производителями, это позволяло пользователям велосипедов информировать производителей о том, какие еще изменения необходимы. Некоторые нововведения, такие как педали, были сохранены в последующих итерациях, а например огромное колесо, как у модели «пенни-фартинг» было быстро отброшено.
Может быть кто-нибудь сможет превратить эту аналогию в комикс для следующего бестселлера о гибкой разработке?
Автор: MagisterLudi