Shu-ha-ri для программистов

shuhari

В японских боевых искусствах есть концепция трехэтапного обучения мастерству - Shu-ha-ri.
1. Shu (守:しゅ - “защита”, “подчинение”) — изучение традиционной мудрости — изучение основ, техник, движений.
2. Ha (破:は - “отделение”, “отклонение”) — отступление от традиции — поиск исключений в традиционной мудрости, размышление о правильности традиций, поиск новых путей и техник.
3. Ri (離:り - “покидание”, “отделение”) — превосходство над традицией — нет больше никаких техник или традиционных движений, все движения естественны и рождаются самостоятельно, а не из традиционной мудрости.


Любое обучение начинается с этапа Shu, когда ученик должен преданно следовать всем инструкциям своего учителя. На этом этапе нельзя спрашивать “почему”, нельзя ставить под сомнение правильность движения или слов учителя - только полное подчинение и следование инструкциям. На этом уровне ученик еще не готов к вопросам, а точнее - он не готов задавать правильные вопросы и не готов воспринять ответы на них. Только учитель может решить, что ученик готов перейти на следующий этап - этап Ha.


На этапе Ha ученик начинает изучать границы своей техники и постоянно должен спрашивать “Почему?”. Вопросы позволяют ученику лучше адаптировать под себя фундаментальные знания, которые он получил на этапе Shu. Ученик может даже находить новые техники усиляющие его потенциал.


И вот в определенный момент количество опять переходит в качество и ученик переходит на уровень Ri. На этом уровне больше нет никаких правил, точнее ученик сам создает правила. Ученику больше не надо спрашивать “почему” - он это уже знает или чувствует. Ученик готов к самостоятельному изучению движений, созданию новых движений, и он видит взаимосвязь между ними.

Каждый следующий уровень включает в себя знания и умения, накопленные на предыдущих уровнях, поэтому невозможно сразу попасть на уровень 3, не проведя долгие месяцы и годы на уровнях 1 и 2.


А при чем тут IT и программисты, спросите вы?



В книге Agile Software Development Alistair Cockburn применил те же самые 3 уровня развития, 3 уровня зрелости к применению командой методологий разработки ПО.
Что происходит, когда команда (или фирма) решает, что теперь она разрабатывает софт, используя SCRUM (или XP или что угодно)?
Сначала команда находится на уровне Shu и следует предписанным правилам - правилам из книг или полученным от консультанта. И книги и консультанты утверждают, что шаг влево-шаг вправо и методология не будет работать, поэтому команда не делает шагов влево или вправо.
Но в какой-то момент кто-то начинает спрашивать “Почему?” и команда переходит на уровень Ha. Это не всегда случается, например, если руководство давит все попытки что-то изменить (ага - это забавно, когда методология зовется “гибкой”, а изменять в ней ничего нельзя). На уровне Ha команда начинает менять методологию под себя.
Например, если это SCRUM, то команда может решить, что ей не нужны 5% workshops, или что она не хочет запрещать Product Owner-у добавлять новые задачи внутри итерации, или даже что ежедневные Scrum standup - это waste и их надо делать раз в 2-3 дня.
На уровне Ha команда избавляется от ненужного, что мешало ей в работе, а также может добавить в процесс что-то, что будет помогать. Как результат - рост производительности и самоудовлетворенности команды.
Команда продолжает изучать границы применимости методологии и вот в какой-то момент оказывается, что она уже на уровне Ri.
Она уже не ограничена никакими рамками конкретной методологии.
Она может выбирать самое подходящее из разных методологий, пробовать это и решать - подходит или нет.
Она может даже ненадолго полностью отказаться от одной методологии и переключиться на другую только затем, “чтобы попробовать”.
Такая команда работает еще эффективнее и это и есть та самая “команда мечты”, про которую писали ДеМарко и Листер в Peopleware. Такой команде просто не надо мешать, и тогда она сделает все, что от нее требуется.


Интересно, как проявляются проблемы с общением между людьми, находящимися на разных уровнях Shu-ha-ri.
Люди на уровне Shu не понимают (и не должны понимать) советов людей с уровней Ha или Ri. Для них эти советы слишком неконкретны и абстрактны, так как они призывают выйти за пределы инструкций, но Shu-человек еще не готов выходить за пределы - он просто хочет следовать конкретным инструкциям! А уж от советов Ri-людей Shu-человека просто коробит - Как это “Daily standup - это неважно, отмени их?”. Это же важнейшая часть SCRUM, придурок!.
Примерно такое же недопонимание царит и между уровнями Ha и Ri потому что на уровне “Ha” люди готовы исследовать границы методологии, но не готовы выходить за границы.


Те же самые 3 уровня развития можно применить ко многим вещам.
Например, к умению программировать.
Вначале программист находится на уровне Shu - он изучает язык или языки программирования, изучает алгоритмы, улучшает свои навыки написания программ, изучает предметную область и т.д.
Shu-программист может быть вполне успешным и Shu-программистов большинство в нашем мире.
Такой программист может отлично делать свою работу, если задание поставлено четко, но с трудом может ставить себе задачу сам. Он следует правилам разработки, принятым в его компании или отрасли и не спрашивает постоянно “почему?”, не пытается постоянно изменить что-то. Он “следует”, “течет по течению” и эти фразы лучше всего описывают таких программистов.
Уверен, что вы знаете немало Shu-программистов, потому что, подчеркну, их большинство. А может вы и сам - Shu-программист? Тогда читайте дальше и, возможно, вы сможете постичь третью ступень.
Ведь есть и Ha-программисты. Обычно они быстро выбиваются в лидеры или на руководящие должности, потому что они активны, задают вопросы, пробуют постоянно свои знания на прочность и расширяют их.
Ha-программисты готовы изучать новые языки программирования, переходить в новую отрасль для изучения новых знаний. Они готовы ставить под сомнение каждую задачу, которую они получают и каждую книгу или статью, которую они читают. Именно это постоянное сомнение и стремление к познанию порождает в их мозгу постоянную работу и размышления.
И со временем такой программист может достигнуть просветления и перейти на уровень Ri.
Ri-программист уже не думает о задаче, как об обособленной проблеме, но думает о ней, как о чем-то, что интегрировано в огромную систему, состоящую из других компоненов. Каждый класс или переменная - это не просто класс или переменная - это просто точка в огромном многомерном графе проекта.
Ri-программист не думает о том, как написать класс - он думает о том, как НЕ написать класс.
Для Ri-программиста нет задач, которые он не смог бы запрограммировать и главное для него в задаче - это не сложность, а важность.
Когда Ri-программист пишет код, то он не думает о языке программирования или операторах цикла - он видит многомерный граф проекта и расширяет его, а код рождается сам по себе.
Ri-программист оптимизирует граф проекта, а не конкретные функции, поэтому одно его правильное решение может сократить код проекта вдвое и одновременно улучшить качество или производительность.
Про Ri-программистов можно писать и дальше, но проблема, как я уже написал, в том, что невозможно научить быть Ri-программистом, невозможно даже описать что это такое - только другой Ri-программист сможет понять это. Так что, если вы видите смысл в строках про Ri-программиста, то welcome to the club.


А вы на каком уровне сейчас находитесь?
И, главное, что вы делаете и достаточно ли стараетесь для перехода на другой уровень?




Похожие записи:
Общение несовершенно - умей управлять несовершенностью.
Канбан в IT (Kanban Development).
Software Engineering is Dead?!

10 комментариев к Shu-ha-ri для программистов

  • Woo

    Может быть, Ri-программисту и Ri-командам еще важно не “зазнаваться”. Как писал Карлос Кастанеда “Сила - самый сильный из всех врагов”.

    • Может быть, Ri-программисту и Ri-командам еще важно не “зазнаваться”. Как писал Карлос Кастанеда “Сила - самый сильный из всех врагов”.

      А что значит “зазнаваться” в этом контексте?
      Имхо, грош цена программисту или команде (Ri или не Ri - неважно), если они “зазнаются” и перестают сотрудничать с другими. И те, кто познал Ri - те это понимают. Один программист или одна команда не могут сделать весь проект - на это должны все вокруг работать.

      • Woo

        Ну “зазнаваться” в общепринятом смысле - много о себе думать и воображать. Если такое происходит, то это не очень хорошо, так как глаза замыливаются.

  • даВинчи был Ri и рисовал тайную вечере около двух лет, обдумывая, взвешивая и даже так и остался недовольным… работал он по заказу.. собор Святого Петра в Риме строился около 70 лет, результат работы Ri налицо, досих пор стоит.. вот вопрос - кто сейчас даст профинансированный проект на сроки от двух до семидесяти лет?

    • кто сейчас даст профинансированный проект на сроки от двух до семидесяти лет?

      Наса? Государство? Нефтянка? Много кто может дать.
      Но ты же понимаешь - проект проекту рознь. И у того же Да Винчи наверняка были и короткие проекты, не на 2 года и не менее великие.

  • НАСА? гуд… берем туда 20 Ri .. Государство Россия? гуд.. берем туда 2 Ri и пилим бабло как будто взяли 1000.. нефтянка? ой.. а зачем там Ri? для престижу? единственное что я скажем как то слышал от людей связанных с нефтью - вопрос “можно ли хакнуть какой то западный управляющий автоматикой софт”, при такой 0.5 Ri на всю нефтянку.. армия и зеленые человечки? там потребность в Ri идентична, у первых они будут чистить сортиры и маршировать, а вторые будут ставить нечеловечески опыты сексуального плана.. так что выходит что общемировая потребность в Ri где то 10-20 тысяч из них 80% это США.. вот и выходит что если у нас два Ri и одна фирма в которой нужен один Ri то никто не будет нанимать второго, но брать его как Shu или На будут с крайним скрипом ибо overqualified

  • Lloyd

    Три превращения духа называю я вам: как дух становится верблюдом, львом верблюд и, наконец, ребенком становится лев.

    (с) Фридрих Ницше. О ТРЁХ ПРЕВРАЩЕНИЯХ

  • Oleg Mikhailov

    Сейчас как раз начал ощущать границу между Shu и Ha. Этот раздел мне кажется есть переход от превалирования логики Аристотеля (логика высказываний) к диалектической логике Гегеля. Переход от догматизма к скептицизму. Следующий уровень - это спонтанное творчество.

  • Я не программист, но с удовольствием прочитал этот пост. Сын подбросил Вашу ссылку. Тема универсальная для всех областей жизни, науки, для любой профессии. Трехэтапный путь обучения мастерству Shu-Ha-Ri это путь развития личности, индивидуальный путь. Каждый в своей жизни находится - стоит или идет - на том или ином участке этого пути.

Ответить

 

 

 

Вы можете использовать эти HTML тэги

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>