Автоматизация бардака

Так же, как и регламенты, я люблю скрипты. Люблю, знаете ли, запах автоматизации по утрам.

Но в какой-то момент я понял: если бардак обмазать скриптами, ботами, пайплайнами и дашбордами, он не перестаёт быть бардаком. Он просто начинает работать быстрее. И ломаться тоже.

Автоматизация вообще очень легко создаёт иллюзию зрелости. Раз что-то едет через workflow, значит уже процесс. Раз есть кнопка, лог и статус в системе, значит уже порядок. Раз вместо человека теперь ходит скрипт, значит мы молодцы, цифровизировались.

Нет.

Автоматизация не делает хаос управляемым. Не делает роли ясными. Не убирает дыры между зонами ответственности. Не отвечает на вопрос, кто принимает решение, кто несёт риск и что делать, если всё пошло не туда.

Она просто начинает быстрее исполнять всё то же самое, что у вас и раньше было устроено криво.

Было у меня однажды так. Автоматизировали развёртывание сертификатов для заказчика. Сотни узлов, разные домены, валидация через DNS. Ansible, CI/CD, откаты, проверки. Три дня работы, красота.

Прихожу через неделю, а у заказчика процесс поменялся. Теперь сертификаты вообще идут через централизованный PKI. Классно...работа на свалку. Руками сделали бы за двадцать минут.

И вот это очень важный момент. Иногда проблема даже не в том, что автоматизация плохая. Проблема в том, что вы автоматизируете то, что ещё не стабилизировалось. То, что ещё живёт в режиме “сегодня так, завтра иначе”.

Вот поэтому автоматизация - это ксерокс. Если вы кладёте в него бардак, на выходе будет аккуратная стопка бардака. Быстро. Ровно. Системно.

И чем больше у вас такой “автоматизации”, тем больше технического долга, мёртвого кода и ложного ощущения порядка вы тащите за собой. А техдолг, если что, это не абстрактная инженерная грусть. Это вполне денежная яма. И автоматизация бардака - это один из самых изящных способов вложиться в эту яму своими руками.

При этом я не против автоматизации. Я как раз очень за. Но только после одной скучной и неприятной процедуры: сначала надо понять, что именно вы автоматизируете.

Где границы процесса? Что запускает его начало? Что считается нормальным ходом? Где исключение? Кто может остановить исполнение? Кто разбирает ошибку? И вообще: это уже процесс или пока просто привычка людей как-то договориться между собой?

И тут, кстати, полезно помнить старое правило про две зоны. В зоне выживания автоматизация должна быть бетонной. Там ручной героизм слишком дорог. А вот в зоне гипотез, тестов и пресейла ранняя автоматизация очень легко становится бюрократией.

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

А ещё это становится отдельным весельем. Скрипт вроде бы должен был снять зависимость, а в итоге сам становится новой магией. Никто, кроме автора, не понимает, как это устроено, где это чинить и почему оно вообще работает именно так. Поздравляю, вы умудрились упаковать зависимость в код.

Потому что автоматизация хорошего процесса убирает ручной труд. Автоматизация плохого процесса убирает только остатки здравого смысла. А иногда ещё и ускоряет ущерб.

Так что когда в следующий раз услышите бодрое «мы это автоматизировали», я бы советовал задать один уточняющий вопрос: вы автоматизировали процесс или просто сделали бардак быстрее, дороже и менее заметным?

А у вас есть свой музей мёртвого кода, который когда-то писали ради эффективности, а теперь он просто красиво пылится в углу?