понедельник, 3 марта 2014 г.

"Может быть, все-таки вызвать подкрепление?"

— Может быть, вызвать подкрепление?
— Ещё рано!..
— Может быть, все-таки вызвать подкрепление?
— Уже поздно.

Как же не пропустить этот важный момент между "рано" и "поздно"?

Вот например организована работа, с парным программированием и планированием фич, с отслеживанием изменений в базе исходников, с каждодневными билдами и с юниттестами на каждый чих, с нексилыми выделенными техническими ресурсами на весь этот цирк: чихнул в исходниках, а через 15 минут 20 тестовых задач сказали "лечиться вам надо, батенька".

И вот в этом сферическом коне в вакууме идеальном процессе происходит выявление ошибки в одной из тестовых задач (ну там внутри около 1000 тестов, один упал, вся задача стала красная и вопит диким голосом "лечите меня!", особенно громко вопит тем, чьи изменения пришли). Вообще-то это - рабочая ситуация. Тесты на каждый чих для того и нужны, что бы сразу и очень быстро все проверки провести и результаты выдать. Но наш конь быстро перестает быть идеальным и падает из вакуума на поверхность земли со словами "да, знаем. там бага, неделю назад тест упал, скоро починим. у нас там волонтер стоит". Падает конь и превращается в тыкву, которая быстро протухает, потому что "где один, там и два" и вот уже полдюжины задач висят красные, висят неделями, с волонтерами и "не обращайте внимания, занимаемся". Какое же это "занимаемся", если уже неделями эффекта нет? Скорее уж более адекватна ситуации характеристика "никто и ничего не делает по этому поводу. и уже давно."

Если у вас такая ситуация, то определенно "уже поздно". Технический долг растет, во время роста в спешке делаются новые источники технического долга. Замкнутый круг.

Секрет баланса очень простой: надо балансировать нагрузку на сотрудников. Накосячил один сотрудник своим чихом, потужился с исправлениями полдня, да и откатил. Все, нет проблемы. Бывает так, что откатить нельзя. Тогда надо подключать более сведущего специалиста, который должен сразу отложить все свое "важное и срочное" и заняться исправлением ситуации. Не смог он за пару часов - еще более сведущего. Не смог и он (день уже прошел, а толку?) - стоит еще раз подумать "а так ли уж прям и нельзя откатить-то?" Неделя, две или больше на исправление ошибки означают, что баланса нет: "важное и срочное" оказывается важнее и срочнее, спецы занимаются им, а технический долг по старым задачам в это время растет. И пока он растет, спецы ему в подмогу готовят новый код, из которого по уже накатанной дорожке вырастут новые технические долги. Замкнутый круг. Или не круг а что-то вроде такого:


В этот момент баланс должен быть выправлен за счет "обратной связи": сначала отложи все, чем бы ты ни занимался, разберись со своим техническим долгом по старому коду, сделай его поддержку легче и дешевле, за счет этого "легче и дешевле" сделай себе время на новую задачу, потом занимайся этой новой задачей (читай "готовь источник нового трафика работы, который займет все, что осталось сейчас от твоего рабочего дня").

По моему опыту, этот баланс нельзя держать перекошенным за счет количества людей, когда спецы все таки рубают новые решения, а на поддержку просто привлекается новый народ. На некоторое время это поможет: народ потянет часть трафика. Кому-то может интересно будет. Кому-то быстро разонравится "сидеть на поддержке". Но это ни разу не будет уровень спецов, авторов, творцов, дизайнеров и архитекторов. В основном, в результате будут костылики и еще раз костылики. Изредка системные изменения. А в дополнение к этому на другой стороне, у спецов, тоже происходит обрыв обратной связи: они не видят системные проблемы с эффектом срабатывания через 2-3 года. Они рубают так же как рубали раньше, опыт-то ведь положительный...

Так может стоит вызвать подкрепление сразу же как только тесты выявили проблему? По моему опыту - да, стоит. Особенно, если чихнувший откатывать не планирует, или "нельзя откатить". Так или иначе, эти проблемы все равно дойдут до "старшего", только уже возмужавшие, а то и заматеревшие. Останется только материться да руками разводить на вопрос "как же ты это допустил?"... да мечтать про