Байка для оруженосца 8. Жизненный цикл задачи на изменение кода

Сегодня в кухоньке были все свои. Чеширский, Заяц с Шляпником, Соня и, конечно, Королева. Небольшой «чай-брейк» после релиза. Команда всегда делала небольшие паузы между большими блоками задач. Только Армигера не было. Его послали в небольшую командировку. Порулить в несложном проекте с чужой командой.

Соня, как всегда, дремала, лениво перелистывая очередную статью по тестированию, Шляпник с Зайцем азартно вели один из вечных споров типа «Пробелы-Табуляции», иногда скатываясь к проблемам генерации идентификаторов, а Королева с Чеширским просто пили чай. 15 минут это немного. Но и не мало.

– Я не опоздал? – с порога спросил Армигер.

– Заходи, заходи. Пока чай льдом не покрылся. Сегодня мы пьем какой-то редкий сорт, который Чеширский привез из Китая. – И Шляпник наклонил чайник над кружкой с эмблемой какой-то конференции.

– Позавчера сам собирал. На плантации старого приятеля. Цените. – Поистине, связям Чеширского Кота оставалось только позавидовать.

Армигер порывался что-то сказать, но на него цыкнули. Все синхронно подняли чашки, сделали по глотку, и на лицах отразилась гамма чувств.

– Ладно, давай, выкладывай, а то тебя разорвет.

Армигер вытащил листочки с распечатанными жизненными циклами задач (воркфлоу).

– Вот. Глядите, как можно все тщательно настроить в Jira, – начал Армигер. – Вот по этой схеме мы всегда знаем, в каком состоянии находится доработка.

Шляпник взял в руки листок с безумной паутиной статусов и переходов. Покачал головой и показал листок Зайцу. Зайца перекосило. Он в сердцах помянул 21-е прерывание и барабанный принтер со снятым кожухом.

– Около двух дюжин статусов. Про переходы просто молчу, – пробормотал Шляпник – Вот что я тебе скажу. Выкинь бяку. Шизофрения, маниакально-депрессивный психоз, паранойя – это по моей части. Не надо тебе этого. Надеюсь, это не в твоем проекте.

– Нет, но мы собираемся так настроить. Парень новенький принес.

– Соня! – гаркнул Заяц.

Соня вышла из медитации и начала говорить речитативом:

– Давние, давние, давние исследования юзабилити показали, что добавление лишнего статуса воркфлоу приводит к ухудшению понимания не на какое-то значение, а в разы. Умножение там происходит. Непонимания.

– Насколько? – голос Шляпника походил на голос ласкового дознавателя в подвалах Веселой башни.

– Не помню. Гуглить надо. 1.2-1.3 раза. Плюс примерно квадратично растет число переходов. А это тот же коэффициент.

– Грубо возьмем, что добавление трех статусов приводит к проблемам с пониманием в два раза. Увеличивая число статусов задачи с пяти до двадцати трех, мы увеличиваем проблемы с восприятием в 60 раз. 60 раз, Карл!


– Иначе говоря, когда ты добавляешь хотя бы один статус к жизненному циклу задачи, ты крадешь у фирмы тысячу долларов в год, – прокомментировал Заяц.

– Ну, не надо так резко, – вмешался Кот.

– Так много? – удивился Армигер.

– С учетом прогрессии, озвученной Соней, сумма еще больше, – вздохнул Кот, – Гораздо, гораздо больше. Просто 1000 долларов ты еще можешь себе представить, а истинные суммы потерь – нет. И дело даже не в том, что на перевод из статуса в статус тратится время. Переключение из контекста в контекст – это гораздо большие потери.

– А потери на управляемости так вообще зашкаливают, – добавила Королева. – Чем меньше статусов у задачи, тем быстрее идет проект. Но всегда есть «но».

– Наименьшее число статусов задачи… – Соня сделала паузу.

– Два. Естественно, два, – синхронно ответили Заяц с Шляпником.

– Но! Но! – Соня проснулась и была в ударе. – Это отлично работает для волка-одиночки. А скажи мне, родной, как мне проверить выполнение какой-то задачи? Как я узнаю об этом? Я тестировщик! Кстати, меня за это уважают… Как я узнаю, что какую-то из решенных задач… – Соня провела глазами по комнате, и Заяц с Шляпником прижали уши.

– Не стесняйся. Мы знаем, что делаем ошибки. Ты ищешь их быстрее, чем мы. Нам нравится работать с тобой в паре. – Было непонятно, кто это сказал, но все всё поняли.

– Так вот. Какую из задач мне тестировать? Нужен новый статус, – продолжила Соня. – И этот статус мне нужен! Нужен мне!

– Очевидно, – резюмировал Шляпник.

– Без вариантов, – отрезал Заяц.

– Ладно. Три минимально. Хорошо, я понял, что много – это много. У нас именно эти пять. Почему? – спросил Оруженосец.

– Есть давление снизу и сверху, – Кот сделал глоток чая, – мы должны использовать минимально необходимое. Н-да… Коллеги, расскажите, что вы об этом думаете.

Королева взяла слово:

– Каждый лишний статус – это потери. Большие потери. И нужно понимать, почему вы на эти потери идете. Мы идем. Со статусами «New» и «Closed» – все понятно. Они просто нужны. Соне нужен статус «Resolved» как информация о необходимости тестирования. Кстати, мне этот статус тоже совершенно необходим, для отслеживания загрузки рабочих центров. Если в среднем в этом статусе больше 20 задач на пять тестировщиков – очень вероятно, что у нас проблемы с тестированием. Очень серьезные. И с проектом в целом тоже. Показатель числа задач в этом статусе – это как температура. Если на градуснике 38,5, то что-то надо делать. Например, сменить градусник. Теперь «Assigned». Этот статус показывает, что задача назначена в релиз. Можно еще указывать конкретного исполнителя, но в этом смысла нет. Сами разберутся. В конце концов, у нас работают взрослые люди. Это позволяет делать легкую фильтрацию задач, на которые менеджеру продукта уже не надо обращать внимание. Менеджер работает со статусом «New». Это его зона ответственности. Не разработчика.

– А «Open» (примечание: иногда называют «In work»)?

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

Это была правда. Кроме чисто менеджерской нагрузки Королева еще ухитрялась писать спецификацию требований для десятка программистов. К счастью, в последнее время ей начала помогать Соня. Да и Шляпник с Зайцем иногда писали постановки.

– Перед тем как уйти в бранч, программист обязан перевести задачу в «Open». Это сигнал всем остальным программистам – не трогай, работаю! Или по-другому: этому больному лекарство уже дали. Не надо второй дозы.

– А если не переведет статус – бить. Больно. Ногами, – добавил Заяц.

– Угу, – сказал Шляпник, – меня как-то пригласили помочь с кодом в один из проектов. У них одну и туже фичу реализовали три разных программиста. Тремя разными способами. И спокойно залили это в транк. Потом туда заливали еще три недели. Тестирование у них было ограничением системы, и эту фичу протестировать не успели. И в один замечательный солнечный день промышленный сервер сплясал джигу-дрыгу. Да так качественно сплясал, что заказчика валерьянкой отпаивали. А программистов спасло только то, что пока заказчик ходил за «Сайгой» на стоянку, программистов успели спрятать в серверной за железной дверью. Лихие 90-е, что ж вы хотите.

– И этих статусов вполне достаточно, – закончила Королева.

– Ага. «Assigned» общий буфер для программистов, и именно общий – для снижения вариаций. Именно поэтому программист назначает на себя задачу сам. – Оруженосец по памяти перерисовывал ЖЦ команды на листок, делая пометки. – А почему для тестировщиков так не сделать? Тоже общий буфер.

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

Загрузка...