Un-FuckUp-able Development Protocol (UDP)
Недавно после очередного Team Building’a получил от одного Коллеги-Графомана письмо-притчу про большую кнопку «сделать всё хорошо». Он и раньше баловался изобретением велосипедов, но, в этот раз конструкция показалась мне очень удачной. Кому интересно — прошу-приглашаю под кат. С его разрешения дословно:
В эту сиесту на веранде практически никто не курил, потому, что все ушли на очередной двухдневный SCRUM тренинг. Джонни устало окинул взглядом присутствующих: Дёму и Варю. Они тоже не были в восторге от происходящего, было слишком жарко и душно, лето в Долине было в самом разгаре, и казалось, что на улице даже жарче чем в Task Tracker’е.
Дела были не ахти, все трое это знали. Они все в решении своих задач зависели от людей, которые ушли учиться как надо организовывать процесс разработки. Реальная работа, которую надо было сделать ещё вчера, сегодня переносилась на тот незримый момент в будущем, когда остальные “бойцы” вернутся с фронта борьбы за ликвидацию безграмотности.
— А хотите, ребята, я Вам сказкочку расскажу, про программистский Рай? — спросил Джонни, стряхивая пепел после очередной затяжки.
Варя и Дёма уныло кивнули, но постарались улыбнуться. Тогда Джонни достал из кармана трубку, и, пояснив, что это будет Long Run Story, стал неторопливо погружаться в клубы Balkan Delight (сорт табака).
Конечно, ни одна хорошая сказка не может обойтись без предыстории. К любому стоящему фильму когда-нибудь снимут приквел. И, конечно, Джонни как и любой хороший рассказчик, не мог начать рассказ без вводного слова.
Инициализация BIOS выдала слушателям сведения об оборудовании:
- CPU: 8 Senior Developer (COREs) + Tech Lead (BUS) и System Architect (ALU)
+ Other Development Teams Stuff (Co-Processing) - Memory: 3 System Analysts, 2 Tech Writer + Management Team
- HDD: Jira + Confluence + Google Doc == BackLog
Ну и прочий IO и периферия, типа “сторонних” тестировщиков, верстальщиков и дизайнеров, с которой все были согласны. Все так же согласились, что дисплей это SCRUM доска, а операционная система это Linux, то есть движение Open Source конкретно и прорывные инновации IT сферы в частности.
Менеджмент, безусловно, отнесли к прикладному софту — Task Tracker’у и Cron. Электроснабжение, по понятным причинам, заменили на понятие Cash Flow от Заказчиков и Клиентов. Ведь компьютеру не важно откуда придёт энергия, важно просто делать расчёты, поэтому данность наличия энергии и источник её возникновения тоже никем не оспаривался. Корпус, в их случае, конечно же был кастомный, с водяным охлаждением (бассейн и сауна), разлоченным генератором тактовой частоты (любые ништяки, от кальяна и пива на веранде, куда не запрещалось брать ноутбук, до спортзала в подвале их особняка). ИБП в виде угарнейших корпоративных вечеринок и прочих значительных поблажек в presence time schedule так же, конечно, обозначился как неотъемлемый и очень нужный девайс.
Пропустив остальные несущественные моменты описания Джонни подвёл итог:
— Итак, мы имеем 50+ человек, которые уже пару лет дышат той или иной методологией разработки, но при этом всё равно у нас регулярно происходит какой-нибудь FuckUp. Мы начали с самоорганизованного хаоса, тогда нас было 10. Потом нас стало 20, и 30, и 40 и у нас был “Водопад” (модель разработки). И, когда всё завертелось не так, как мы привыкли, мы стали делать SCRUM. И, вроде бы, всё у нас отлично, стабильная ЗП, отличный менеджмент, довольные пользователи регулярно заносят копеечку, но все же видят проблемы? — подитожил Джонни.
Проблем действительно было много. Начиная с банального переключения контекста, несмотря на все предостерегающие ограничения всех упомянутых методологий, и заканчивая, тупо, отсутствием общей коммуникационной согласованности.
Все знали, что каждый из разработчиков регулярно получает не только премии, но и “по шапке” за факапы. Что тестировщики “не тестируют”, а джуны не джунят. Верстальщикам то не хватало “еды”, так как дизайнеры были перегружены микроменеджментом, то их заваливало так, что уже разработчики были вынуждены их ждать. Про саппорт — этих бравых ребят — могучих викингов во главе с самим Тором можно было с удовольствием писать лишь панигирики да некрологи. А первой ассоциацией к менеджменту у всех единогласно был утренний будильник, всегда звенящий не вовремя. Пожалуй, не будем продолжать, Вы и сами все всё про всё это знаете, оно везде так, не только в IT.
— Все же понимают, что вне зависимости от методологии процесса разработки наши задачи никуда не денутся? Их количество и качество останутся неизменными?
Все так же понимали, что ни Скрам, ни Водопад, и ничто в этой вселенной не отменит здравый смысл. Что если происходит пожар на продакшене — его надо тушить. Что если что-то упустили и надо срочно — то будет прерывание и выпадение из контекста, это естественно. Что нельзя отказаться от необоснованного общения с менеджментом, и никакой SCRUM не спасёт от внезапно возникшей “чудо-идеи”. Что технический долг никуда не денется, и задач сопровождения будет всё больше и больше, до тех пор пока число пользователей будет расти. А именно обеспечение этого роста и есть ключевая задача, не менее важная чем разработка новых продуктовых фич. И что ни скрам, ни канбан, ничто не спасёт от всего этого бардака, так как система не может быть замкнутой, она дышит, она — живой организм.
— Таким образом, мы все хотим расти, развиваться, писать код, но, чтобы всё это было так же интересно как и сейчас, нам нужен какой-нибудь новый “paradise”?
Все кивнули. Джонни снова раскурил уже давно погасшую трубку.
“Мы владеем коммандой, которую нужно Ре-Инжинирить!”
Утвердив этот ничего не значащий тезис Джонни свысока посмотрел на окружающих, их стало больше, присоединились, как обычно объевшийся на обеде Денис, и Василий (никто, конечно, не помнил как его на самом деле величать, гений с востока, помесь индуса и китайца, с криповой шевелюрой — что ещё тут скажешь — Вася, он, конечно, не обижался).
— Все же помнят разницу между TCP и UDP? — Джонни пояснил, что это метафорично в контексте сказки, и все согласились, что UDP лучше подходит для стриминга, но не гарантирует доставку.
Потом всем стало ясно, что менеджмент хочет, чтобы мы совместили в себе и UDP и TCP, то есть гарантировали доставку для высокой скорости поставки новых фич.
— У нас есть коллектив разработчиков, который, так уж сложилось, поделился на комманды. Во главе каждой комманды стоит Team Lead, и почти всегда это кто-то из наших Senior Developer’ов. Над нами есть CEO и CTO. Так же у нас здесь все остальные непонятные люди, которые постоянно прерывают процесс и вносят свои коррективы. И, вот, вроде бы все разработчики вроде бы постоянно заняты разработкой, но кто-то всё время простаивает или перегружен и/или попутно занят решением какого-нибудь из типов прерываний: от руководства, от саппорта, от технического долга. То есть, мы постоянно имеем дело с каким нибудь FuckUp, кторый происходит потому, что просто всё так сложилось. У нас вроде бы есть процесс, но он не решает проблему того, что когда Ты хочешь писать код — ты не можешь, а когда можешь, то уже не хочешь, так как устал, пока не мог, и вообще решал другие “важные” задачи. Кто на митинг пошёл, кто за чаем, и вот так вот плов всё никак не сварится до нужной кондиции.
— Ну, и что Ты предлагаешь? — наконец-то озвучил давно звенящий в знойном воздухе вопрос самый неопытный и нетерпеливый Василий.
— Я предлагаю объединить комманды по другому. Во главе комманды не может стоять Team Lead. То есть, всё будет как и раньше, только управлять коммандой будет не Senior Developer, а кто-нибудь более-менее грамотный из Middle или даже перспективных Jun’ов.
Это как-это?
А вот так: мы перестраиваем управленческий процесс на другие направления. Смотрите сами, производительность любого сеньёра намного выше чем производительность мидла или джуна. Понятно, что не все сеньоры прям рвутся писать код, но, так или иначе, тогда разговор не о конкретно тех из них, а об общей массе. Нормальный сеньёр, которых у нас, слава богу, хватает — всегда очень хочет выдавать код каждый день. Просто потому, что чем больше он успеет за сегодня, тем больше премии получит завтра. Но практически ни один сеньор не может себе этого позволить, так как минимум половину времени занят всем этим микроменеджментом, от общения с членами комманды, до общения с поставщиками требований.
Например, у нас есть Pool высококвалифицированных и самых компетентных специалистов, давайте так обзозначим Senior Developer’ов. Далее у нас есть менее компетентные, которые очень хотят “расти” и стать более компетентными. Но им постоянно не хватает ни времени “старших” братьев, ни уважения менеджмента, ни, тем более, понимания процессов.
Конечно, здравым смыслом пренебрегать не стоит, Senior — он на то и Senior, что может сам поднять упавший сервер, когда и в каком бы состоянии Ты его не разбуди. Но только руководить разработкой он не должен. Он должен разрабатывать, принимать решения и ответственность за их реализацию. А вот управлять процессом должен Middle или опытный Jun, просто потому, что они смогут:
- — всё увидеть сами
- — захотят задать правильные вопросы
- — осознают, что им ещё расти и расти, но они уже могут что-то сами
- — натаскаются, в конце концов
- — опылятся и т.п. и т.д.
И тогда, через год у нас будет не 8 Сеньоров, а минимум в два раза больше. Мы же уже два года не меняем перспективы. Нанимаем вроде бы отличных сеньоров, а джуны в мидлов почти не растут, да и мидлы почти не растут в сеньоров.
Вспомните! У всех мидлов же глаза горят, когда они к нам приходят, а потом пообвыкнутся немного, и всё стекается в это болото. Уставшие сеньоры вешают на них никому из них не понятные задачи, и что в итоге — процесс еле ползёт.
— Представь, Дёма, что Ты смог бы работать, именно Работать, а не просто сидеть в скайпе ежечасно отрываясь на кодец, не по 20+, а по 30-40+ часов в неделю? Ты же и так работаешь по 60+ часов только из-за того, что постоянно кто-нибудь врзывает Тебе мозг, а работа стоит, а сделать её надо, ты же ответственный!
Конечно, Дёма не мог не согласиться, он уже две недели жену и дочь видел только спящими. Он очень хотел как-нибудь всё же уйти домой вовремя.
— Представь, Вася, что Ты бы был начальником у Дёмы? У Тебя же бы все дела спорились, Может и Анита из аккаунтов, наконец бы Тебя заметила? А там, глядишь, Ты бы увидел код Дёмы из-за спины, и понял бы, что в нём нет никакой “магии”.
Конечно у Васи загорелись глаза. Он и представить себе не мог это в самых радужных снах, руководить отделом! Уж он то знал точно, как всё устроить, если бы у него только были ещё и такие подчинённые как Дёма, он бы давно всё порешал.
— Варя, представь, что Ты смогла бы, наконец, понять, как устроен весь наш техпроцесс, и твои Тестировщики наконец бы получали качественный код, и прибавку к зарплате, потому, что в конце недели не было выпущенных в продакшен Новых багов, а старые, наконец то, смогли бы исправляться?
Варя просияла, так как она поняла, в чём проблема. В основном она работала с Аристархом, тем ещё Хипстером: “коммандиром” FrontEnd комманды. Личность он был весьма импозантная, и код у него был великолепен. Проблема была толкьо в том, что ему некогда было его писать, и большая часть задачь решалась его подчинёнными, и у него даже не всегда было время на Code Review. Так как он был чуть ли не единственный человек, который понимал процесс создания красивостей “в комплексе”, то порой даже и отдел продаж контактировал с ним напрямую, минуя всю технологическую цепочку. Это был единственный человек в комманде, который мог понять дизайнера сразу, не переспрашивая, и не уточная. Конечно, вся его комманда на него молилась, но Варя страдала. Она понимала, что половина его подчинённых ждут когда же он обратит внимание на ею, Варей, найденные баги.
Конечно же, этой ночью никто из-них уже не мог сомкнуть глаз, несмотря на усталость.
Утром они встретились на веранде и определили желаемые новые субординации и составы команд.
К вечеру был готов “меморандум”, который они тайком приклеили на SCRUM доску.
В меморандуме было лишь следующее:
UnFuckUpAble Development Protocol (UDP)
- Team Lead !== Team Manager
- Team Manager == Middle Developer
- Senior Developer == Code Leader (GOD of Code)
И QR код на “по-быстрому” подготовленный документ, излагающий основные принципы вчерашней PR компании идей Джона.
***
Do You like my Story, man?
Конечно, у них было всё, и метрики производительности, и Grade’ы, и SMART и всё такое остальное важное-преважное, что мы все так сильно любим. Но все же мы понимаем, что хотим, не так ли?
Sincerely Yours John…
Автор: