И каппа тонет (Каппа — японский водяной). Конь о четырех ногах, да спотыкается. Чаще всего тонут хорошие пловцы.

Японские пословицы.

(こんにちは) Конничива! Я Виктор, менеджер проектов в Selectel. Это пятая часть цикла о применении TPS/TBP (Toyota Production System/Toyota Business Practice) на практике в IT. Любому инженеру знакомо правило: работает — не трожь, не сломано — не чини. Но что делать, когда оно работает, но не так? Или работает, но часто ломается? Разбираемся под катом.

Используйте навигацию, если не хотите читать текст полностью:
Сушим сухари
10 000 ударов и сэнсэй Ху Ли
Биомеханика опрокидывания прода
Ловим карпа и бьем в цель
Вместо пустословия

Сушим сухари


Сюхари — концепция этапов обучения, которая состоит из трех ступеней.

Все новое рождается на примере старого — например, сухарики (под пиво и нет). Процесс простой: берем хлеб, нарезаем кусочками и сушим в печке. Но что делать с задачей посложнее: произвести пару тонн сухарей, а не противень?

Любой процесс является простым, если он ограничен, достаточно декомпозирован, а на его реализацию есть ресурсы. Что получаем? Классический проектный треугольник.



Однако есть нюанс: результат должен быть на 100% предсказуемым и формализованным. Проще говоря, отлаженный процесс — это уже один из результатов проекта (в идеале).

От сухарей к карате


Ловко переходим от выпечки к бою. Идеи в восточной философии часто переплетаются с боевыми искусствами. Один из таких принципов — сюхари. Он часто встречается в поп-культуре, но мало кто об этом догадывается.

  • Сю (от яп. 守 — «соблюдать»). Слушаем мастера, нарабатываем базу. В тексте фокусируемся на этой ступени.
  • Ха (от яп. 破 — «прорываться»). Пробуем нарушать, экспериментируем.
  • Ри (от яп. 離 — «отделяться»). Выводим свои правила.

Хороший пример — сцена из фильма 1984 года «Karate Kid». Да и вся каноническая трилогия — отличный иллюстратор подхода.

  1. Ученик осваивает классический стиль (Окинавское карате).
  2. Учится у разных наставников, находит новые решения.
  3. Нарушает правила, идет к предыдущему пункту, далее — снова к первому. И все это циклично. (Тут вспоминаем о цикле Деминга из первой части).


Классический цикл Деминга.

Смысл прост: чтобы добавить в процесс что-то свое, нужно сначала понять, как он работает сейчас. Важно помнить, что «там тоже не дураки сидели» — и выстраивали процесс не просто так. Но понимаем ли мы, как он устроен сейчас? Или как вообще это должно работать?



10 000 ударов и сэнсэй Ху Ли


У уличных драк есть особенность: чаще всего в них нет правил. Побеждает не тот, кто бьет по технике, а тот, кто бьет сильнее и чаще. В этом и отличие от спорта. В боевых искусствах подготовка занимает много времени, а удары отрабатываются до автоматизма — строго по технике, с акцентом на цель.

Например, ката в некоторых видах карате — это не просто разминка, а основа понимания движения. Без понимания биомеханики мы не сможем повторить движение корректно — и, скорее всего, не сможем научить этому других. Об этом даже есть интересные исследования.


Фрагмент ката в карате.

Вернемся к нашему гипотетическому бою на улице. Ваш товарищ подходит после стычки и говорит: «Ты же кричал — бей! Вот я и бил». Но бил — в воздух (шапка сползла на глаза), а когда попадал — делал это расслабленной рукой (и теперь болит кисть).

Подобное я, наверное, как и многие из читателей, слышал от IT-команд: «Мы пробовали решить проблему, но не получилось». Однако тут возникает закономерный вопрос: что конкретно не получилось? Или получилось, но не то, что ожидали?

Биомеханика опрокидывания прода


В прошлой части мы разбирали ситуацию, в которой Вася якобы положил прод. Однако при внимательном рассмотрении истиная причина суматохи — Кирилл смена endpoint без явного оповещения.


Пример инцидента.

Вспомним пример с процессом смены endpoint.

1. ○ Анализ потребности в смене endpoint.

2. х Согласование смены и дат смены.

3. Δ Оповещение всех интересантов, которые используют endpoint.

4. ○ Подготовка конфигов.

5. Δ Повторное оповещение всех интересантов, которые используют endpoint.

6. ○ Постановка задач на дежурных и смена endpoint.


Теперь разберемся в символах:

  • ○ — кажется, что с шагом все нормально;
  • Δ — есть вопросы;
  • х — вот тут проблема.

Все наши «Почему?» привели нас ко второму пункту: процесс согласования был «поломан».

И тут «эффективный менеджер» остановится: крайний найден — теперь мы загоняем все согласования в Jira по кнопке и история завершена!

Однако мы так делать не будем. Перед нанесением (или получением) удара идет целый процесс: поворот корпуса, выброс руки, прицеливание и т. д. Выходит, что мастер всегда смотрит не «куда», а «как» и «для чего» (вспоминаем о принципе 5 Why).

Таким образом, наше внимание уходит глубже — делаем шаг назад и возвращаемся к первому пункту: выявление потребности в смене endpoint (идти можно и дальше, но пока ограничимся на этом). Вопрос теперь звучит так: почему сам процесс выявления потребности оказался «грязным» и неполным?


Ловим карпа и бьем в цель



Чтобы найти и устранить настоящие причины проблем, а не только бороться с их симптомами, воспользуемся матрицей на основе 6M — классическим инструментом из производственной среды. Он заключается в разделении составляющих на части.

Но сначала — диаграмма Исикавы, она же «рыбьи кости». Суть метода в выделении всех возможных причин, затруднений и мыслей о процессе. В диаграмму выписывают все причины «поломки процесса» исходя из обозначенной проблемы. Изначально ее создавали для рабочих на производстве, и этим все сказано: просто, наглядно, практично.


Пример диаграммы Исикавы.

6M — шесть групп причин



  • Man (люди) — сотрудники, реализующие лица.
  • Method (метод) — процессы, которые используют в процессе.
  • Measurement (измерения) — все, что фиксирует выполнение процесса.
  • Machine (машина) — «механизмы», которые применяют в процессе — например, микросервис на Python.
  • Mother Nature/Environment (окружение) — условия, которые влияют на сотрудников.
  • Material (материалы) — все то, при помощи чего реализуют продукт (шаблоны, паттерны, исходный код, кабели и прочее)

Что делать с кучей проблем


Мы выписали все, что потенциально влияет на сломанный endpoint. На вид — полный кавардак. Но если немного разобраться, то можно выделить три корневые причины — root causes (RC), те самые точки, в которые стоит «бить». Мы на них вышли сделав step-back (шаг назад) на основе уже изученных процессов, а именно — при помощи любимого genchi genbutsu. На рисунке ниже подсветили эти связи пунктирными линиями.


Перечислим ключевые проблемы.

  • RC1 — текучка разработчиков. Классика жанра.
  • RC2 — очень много Legacy. Классика жанра x2.
  • RC3 — отсутствие механизма документирования изменений. А вот тут уже назревает вопрос.

«Эффективный» менеджер или тимлид скажет: «Наймем еще людей» или «Срочно переписывайте Legacy, но фича должна быть готова завтра». Но почему он сделал такие выводы? Основывался на эмпирическом опыте и знаниях из книг.

Однако это не наш путь. Разумно подойдем к проблемам и разложим возможные предложения в таблицу, где спланируем:

  • что мы делаем,
  • какую корневую причину (RC) лечит конкретное предложение,
  • сколько это будет стоить,
  • сколько времени займет,
  • сколько усилий и рук будет нужно.



Разложив все в табличку и вспомнив про крестики, треугольники и кружки видим, что нам по-хорошему надо всего лишь прикрутить систему оповещения. Далее — связать ее с мессенджером, которым пользуются сотрудники (уверен, такие плагины есть для GitLab). Вуа-ля — важные события не пропущены, все в курсе!

Да, дальше нужно будет поработать и с Legacy, и со stage-средами, и с другими проблемами, но это уже другой этап. Главное — мы поняли, куда «бить», и делаем это сосредоточенно и эффективно.


Вместо пустословия


Внимательный читатель спросит: но где само согласование? Наша цель на текущем этапе — не решить все и сразу, а подсветить, что можно улучшить прямо сейчас, без глобальных реформ.

Прозрачность и понятность — это уже полдела.

Что будет дальше — решать команде: будет ли это при пуше в git, через редактирование статьи в Wiki, через workflow Jira, на совещаниях и т. д. Это важный этап, но чуда не случится, пока все не договорятся внутри. ?

Nemawashi (митинги/летучки) — нужны и важны. Об обмене опытом мы говорили еще в первой части. Пока ЛПР (лица, принимающие решения) не закоммитятся и не возьмут на себя ответственность — система будет буксовать.


Но как ЛПР показать, что процесс важен? Как подсветить работу? Об этом — в следующей части. (またね) Матанэ! (Еще увидимся)

Комментарии (6)


  1. Kenedy1936
    15.05.2025 09:28

    Брал недавно в аренду новую тойтоу короллу для европейского рынка. Удивило насколько низкое качество у этого автомобиля. Движок 1.2 по трассе жрёт 9 литров бензина на 100 км. Ревёт как мускл кар при обгонах, а динамика как у запарожца.
    Так же удивительно уродливый дизайн, вонючий салон, маленький салон, маленький багажник.

    Мне кажется, пора у BYD перенимать опыт, а не у тех кто при царе горохе выпускал хорошие автомобили.


    1. softwaresimian Автор
      15.05.2025 09:28

      Ну так тут вопрос к продукту, а не к производственной системе =)
      Решение о выпуске моделей и cost-reduction принимаются фин.департаментом и маркетологами)
      Самые лучшие Toyota - до 1996 года выпуска. Это танки)

      Кстати, BYD и Toyota сильно дружат
      https://bydeurope.com/article/303
      И это ещё одно доказательство того принципа, что я упоминал в прошлых частях: если не умеешь - сделай генчи генбутсу и научись.


    1. MAXH0
      15.05.2025 09:28

      В конце 2000 в результате реорганизации и глобализации от Toyota остался только бренд. Сейчас это так же как сказать - Брал Nokia и совсем не понимаю, к чему весь этот поток мемов про неубиваемый Nokia... К сожалению.


      1. softwaresimian Автор
        15.05.2025 09:28

        Раньше было лучше - с качеством товаров в целом - и это правда, а не мем)


  1. kenomimi
    15.05.2025 09:28

    Как использовать японские подходы в IT.

    Никак. Забыть и не трогать даже палкой издалека. Иногда посматривать для заимствования мелочей, но, как сапер, с огромной осторожностью.

    Фокус в том, что азиатские подходы завязаны на их традиции, особенности и менталитет, и у большого снежка они вызывают конфликт с местными особенностями. Те же японцы они для нас вообще инопланетяне, кто сталкивался - понимает, о чем я. Мышление совсем другое. И когда наши эффективные совы тащат методолгии без адаптации к местным условиям, по принципу "японское - значит хорошее" - это откровенно диверсионная деятельность, резко снижающая продуктивность бизнеса.


    1. softwaresimian Автор
      15.05.2025 09:28

      Я в первой части про это, собственно и писал - что "просто взять и заставить работать" - не получится.

      Не всё можно адаптировать к нашему менталитету, но многое - можно.
      Завод в СПБ или Турции - тому хорошее подтверждение.