Заяц и Шляпник переглянулись.
– Я сделаю сенчу. – Шляпник отправился к шкафам, а Заяц подсел за стол оруженосца.
– Сейчас я тебе объясню одну из ключевых концепций современной теории управления. Для начала разберем совершенно тривиальную производственную цепочку из одного рабочего центра. Проще уже некуда.
– Разработчики работают по списку задач. И этот список может быть одного из двух типов. С недостатком задач или с избытком. Для первой линии техподдержки, админов и т.д. предпочтительным является список с недостачей. Для программистов, как правило, предпочтительным является список с избытком, но иногда применяют и список с недостачей. Например, если программист дежурит на техподдержке. Применение списка с недостачей означает, что разработчики обязаны часть времени простаивать. Обязаны! Если не простаивают – надо вызывать на ковер менеджера. Список с избытком означает, что часть задач обязана быть не сделана. Если делаются все задачи, опять же, нужно разбираться в проблемах управления. Представь, что мощность отдела программистов 100 единиц продукции в неделю. Для списка с недостачей рекомендуется, чтобы входящий поток заказов был в 70-80 единиц. Т.е. разработчики должны простаивать порядка 25% времени. Если используется список с избытком, то входящий поток должен быть отрегулирован на 130 – 200 единиц. Примерно вот так:
Светлые зоны – это хорошо настроенный поток. А темная – плохо.
– А если все-таки сделать сбалансированный поток?
– Если его попробовать сделать, то будет как у Квази. К счастью, сбалансированные цепочки встречаются редко.
– Сложно настроить?
– Нет, – подключился Кот, – настоящая причина того, что сбалансированные цепочки встречаются редко, намного более фундаментальна. Дело в том, что чем ближе ты к состоянию идеального баланса, тем ближе ты к банкротству.
– Хорошо, предположим. В дальнейшем я хотел бы увидеть модель, но сейчас я поверю опыту Чеширского Кота. – согласился Оруженосец. – И как настроено у нас?
– У нас список с избытком. Ты ведь знаешь, что часть задач закрывается триггером по истечении срока давности.
– Да, согласен. Но почему мы с Соней сегодня простаиваем?
– Потому что в производственной цепочке должно быть не более одного рабочего центра с избыточным списком задач. Этот рабочий центр называют ограничением системы. В нашей команде ограничением системы является группа программирования. И это правильно. Все остальные рабочие центры, такие как: менеджмент, тестирование, продажи, анализ – обязаны простаивать. Обязаны! Данный факт не согласуется с нашим представлением о мире и приводит к психологическому дискомфорту. Любой хороший список задач, что с недостачей, что с избытком, приводит к психологическому дискомфорту.
– Ага, – Шляпник поставил чайник с сенчей на стол, – среднестатистический менеджер приходит в истерику, услышав о современных методах управления. У него пропадает аппетит, начинается изжога, и в общении он становится крайне неприятен.
– Все верно, коллеги. – К их столу подошел Чеширский Кот. – А тебе, юноша, необходимо как можно быстрее ознакомиться с современными методами управления и перестать комплексовать по поводу своих простоев. А то так и до нервного срыва недалеко.
– Ладно, камрады, по коням. К вечеру сделаем финальный мердж и отдадим билд на тестирование. А ты пока кроссворд закончи.
– А с таймшитами то что?
– А про них в следующий раз.
– А матмодель?
– А матмодель сбалансированной цепочки посмотри в блоге Макса Крамаренко.
Байка для оруженосца 8. Жизненный цикл задачи на изменение кода
Сегодня в кухоньке были все свои. Чеширский, Заяц с Шляпником, Соня и, конечно, Королева. Небольшой «чай-брейк» после релиза. Команда всегда делала небольшие паузы между большими блоками задач. Только Армигера не было. Его послали в небольшую командировку. Порулить в несложном проекте с чужой командой.
Соня, как всегда, дремала, лениво перелистывая очередную статью по тестированию, Шляпник с Зайцем азартно вели один из вечных споров типа «Пробелы-Табуляции», иногда скатываясь к проблемам генерации идентификаторов, а Королева с Чеширским просто пили чай. 15 минут это немного. Но и не мало.
– Я не опоздал? – с порога спросил Армигер.
– Заходи, заходи. Пока чай льдом не покрылся. Сегодня мы пьем какой-то редкий сорт, который Чеширский привез из Китая. – И Шляпник наклонил чайник над кружкой с эмблемой какой-то конференции.
– Позавчера сам собирал. На плантации старого приятеля. Цените. – Поистине, связям Чеширского Кота оставалось только позавидовать.
Армигер порывался что-то сказать, но на него цыкнули. Все синхронно подняли чашки, сделали по глотку, и на лицах отразилась гамма чувств.
– Ладно, давай, выкладывай, а то тебя разорвет.
Армигер вытащил листочки с распечатанными жизненными циклами задач (воркфлоу).
– Вот. Глядите, как можно все тщательно настроить в Jira, – начал Армигер. – Вот по этой схеме мы всегда знаем, в каком состоянии находится доработка.
Шляпник взял в руки листок с безумной паутиной статусов и переходов. Покачал головой и показал листок Зайцу. Зайца перекосило. Он в сердцах помянул 21-е прерывание и барабанный принтер со снятым кожухом.
– Около двух дюжин статусов. Про переходы просто молчу, – пробормотал Шляпник – Вот что я тебе скажу. Выкинь бяку. Шизофрения, маниакально-депрессивный психоз, паранойя – это по моей части. Не надо тебе этого. Надеюсь, это не в твоем проекте.
– Нет, но мы собираемся так настроить. Парень новенький принес.
– Соня! – гаркнул Заяц.
Соня вышла из медитации и начала говорить речитативом:
– Давние, давние, давние исследования юзабилити показали, что добавление лишнего статуса воркфлоу приводит к ухудшению понимания не на какое-то значение, а в разы. Умножение там происходит. Непонимания.
– Насколько? – голос Шляпника походил на голос ласкового дознавателя в подвалах Веселой башни.
– Не помню. Гуглить надо. 1.2-1.3 раза. Плюс примерно квадратично растет число переходов. А это тот же коэффициент.
– Грубо возьмем, что добавление трех статусов приводит к проблемам с пониманием в два раза. Увеличивая число статусов задачи с пяти до двадцати трех, мы увеличиваем проблемы с восприятием в 60 раз. 60 раз, Карл!
– Иначе говоря, когда ты добавляешь хотя бы один статус к жизненному циклу задачи, ты крадешь у фирмы тысячу долларов в год, – прокомментировал Заяц.
– Ну, не надо так резко, – вмешался Кот.
– Так много? – удивился Армигер.
– С учетом прогрессии, озвученной Соней, сумма еще больше, – вздохнул Кот, – Гораздо, гораздо больше. Просто 1000 долларов ты еще можешь себе представить, а истинные суммы потерь – нет. И дело даже не в том, что на перевод из статуса в статус тратится время. Переключение из контекста в контекст – это гораздо большие потери.
– А потери на управляемости так вообще зашкаливают, – добавила Королева. – Чем меньше статусов у задачи, тем быстрее идет проект. Но всегда есть «но».
– Наименьшее число статусов задачи… – Соня сделала паузу.
– Два. Естественно, два, – синхронно ответили Заяц с Шляпником.
– Но! Но! – Соня проснулась и была в ударе. – Это отлично работает для волка-одиночки. А скажи мне, родной, как мне проверить выполнение какой-то задачи? Как я узнаю об этом? Я тестировщик! Кстати, меня за это уважают… Как я узнаю, что какую-то из решенных задач… – Соня провела глазами по комнате, и Заяц с Шляпником прижали уши.
– Не стесняйся. Мы знаем, что делаем ошибки. Ты ищешь их быстрее, чем мы. Нам нравится работать с тобой в паре. – Было непонятно, кто это сказал, но все всё поняли.