Байки для оруженосца

Сергей Мартыненко, 2022

Это производственный роман о разработке программного обеспечения. Во многом вдохновение я черпал из цикла «Бета-тестеры», много лет печатавшийся в журнале «Лучшие компьютерные игры».Главы относительно слабо связаны и, в принципе, читать можно с любой.В книге довольно много отсылок к «Глубинным знаниям» по Демингу. Психология, теория вариаций, методы познания мира.Главы достаточно обильно разбавлены юмором. Но это же байки. Если вам не нравится такой стиль изложения, просто не читайте.Примеров кода практически нет. Я не хотел повторять другие книги.Целевая аудитория – IT-шники. Остальным вряд ли интересно.В книге отсутствуют сцены насилия, курения, секса, употребления алкоголя.

Оглавление

Байка для оруженосца 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» общий буфер для программистов, и именно общий — для снижения вариаций. Именно поэтому программист назначает на себя задачу сам. — Оруженосец по памяти перерисовывал ЖЦ команды на листок, делая пометки. — А почему для тестировщиков так не сделать? Тоже общий буфер.

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

Конец ознакомительного фрагмента.

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я