Cпираль смерти от рутины
Как обычно не принимается решение поделать какой-то рефакторинг, оптимизацию или автоматизацию? “У нас эта проблема случается раз в квартал, автоматизация решения займет пару дней, окупится это вложение не скоро, так что ну его нафиг”. Казалось бы логично и рационально, НО…
Что происходит, когда мы откладываем это решение? При условии, что проблему нельзя просто игнорировать, то в этот момент мы автоматически снижаем годовую capacity команды на общую стоимость обхода этой проблемы за год =
<среднее число срабатываний проблемы в год> x <стоимость решения>
Поскольку такие проблемы будут продолжать регулярно поступать, то со временем команда будет 100% своего времени тратить на обход проблем и … 0% времени на развитие.
Ой.
Что это нам напоминает? Слово “технический долг” не просто так возникло. Если мы не решаем проблему, это эквивалентно выплате процентов по кредиту без отдачи основного долга. Я знал людей, у которых весь доход в какой-то момент уходил на выплату процентов и выхода из этой ситуации не было, потому что процентов меньше не станет никогда, потому что никогда не появятся деньги на снижение основного долга.
Само понятие технического долга в оборот ввел Говард Каннигхем в 1992. Тот самый, который в 1994м придумал wiki. Каннигхем вводил это понятие для “быстрых и грязных решений” (аналог взять в долг), НО нюанс в том, что любые технические решения окажутся “грязными” по мере изменения обстановки. Любой самый продуманный дизайн рано или поздно окажется не адекватен задаче и превратится в проблему сам по себе. Проблема гораздо шире “грязного и быстрого кода”. Более того, тщательно продуманный и аккуратно написанный легаси продукт поддержен ей куда более, чем быстро слепленный MVP. Время превращает почти всю массу кода в один сплошной долг.
Чему это нас учит? Что основной долг надо сокращать любой ценой, пока есть хоть какие-то свободные средства. Сокращать частоту повторов проблемы, снижать стоимость каждого случая ее решения.
Это касается не только разработки, но и менеджмента людей, продуктов, домашнего быта и чего угодно, где есть поток повторяющихся задач. В какой-то момент сумма затрат на повторения съест все наличное время.
PS
Почему “спираль смерти”? В английском death spiral часто применяется к катастрофической ситуации с финансами компании, когда займы в попытке получить средства для жизни компании обваливают ее стоимость на рынке (и она теряет средства). Фактически подразумевался авиационный “штопор”. На русском термин скалькировали и применили к эффекту зацикливания муравьев в круг, когда они ходят толпой по кругу, пока не умрут (death mill = смертельное кружение). Роднит все эти явления то, что возникает неправильная обратная связь - ответом на неправильную ситуацию становится ее еще большее ухудшение.
Чем больше рутины, ты меньше времени на улучшения. Тем скорее коллапс.
Ваш К.О.
Post #75
672