18+
реклама
18+
Бургер менюБургер меню

Владислав Бойко – Притчи для падаванов (страница 3)

18

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

Вот сила воли!

Решил мужик бросить пить. Идёт по улице, видит любимый магазин – и думает: а усложню-ка я себе задание. Зайду в магазин, но покупать ничего не буду.

Зашёл. Видит свою любимую водку. Думает: усложняю задание – покупаю, но домой принесу и наливать не буду.

Купил. Принёс. Поставил на стол. Думает: а налью-ка я, но пить не буду.

Налил. Смотрит. Думает: в рот возьму, но не проглочу.

Отпил глоток… сглотнул.

– Во сила воли! Не хотел же – а выпил!

Фокус этого анекдота в том, что каждая следующая уступка кажется крошечной по сравнению с предыдущей. Ты уже купил водку и принёс домой – ну что такого, если налить? Масштаб отступления уменьшается, а ты не замечаешь, что давно прошёл точку невозврата.

У меня есть история ровно про это. Я уехал в отпуск, а у нас был регламент обновления прода. Простой, понятный, написанный кровью предыдущих факапов. Три правила:

Код-ревью – асинхронно. Ревьюер не имеет права сесть рядом с автором и спросить «а чё тут?». Вся коммуникация через комментарии к коду. Потому что когда тебе объясняют голосом – ты киваешь. А когда читаешь молча – вынужден реально вникать.

Перед продом – обязательно обновляем тестовый стенд и проверяем.

Прод обновляем в нерабочее время, желательно под выходные.

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

Ревьюер сел рядом с автором. Ну а что такого? Так же быстрее. Покивал, апрувнул.

Тестовый стенд не завёлся. «Ну он же неполный, на проде-то точно заведётся». Мы ведь уже код отревьюили – чего время тратить.

Обновили прод в понедельник. Днём. В пик.

Сглотнул.

Прод лёг полностью. Пока откатились, пока разобрались – три-четыре рабочих дня недоступности. Катастрофа.

Выхватил за это я. Моя зона ответственности. Неважно, что был в отпуске, неважно, что лично ничего не деплоил. Регламент мой, команда моя – значит и факап мой.

И ребята – не раздолбаи. Они не проснулись с мыслью «забьём на правила». На них давили, сроки горели, а человек, который установил регламент, – где-то на Алтае. Нужна серьёзная стойкость, чтобы в такой момент выбрать регламент, а не начальство.

Но вот в чём штука: они проиграли не когда обновили прод в понедельник. Они проиграли, когда сели рядышком на код-ревью. Это была дверь магазина. Дальше – просто инерция.

Регламент – это по сути договорённость с самим собой не заходить в магазин. Пока ты на улице – всё просто: не хочу, не буду. Но когда давление, когда сроки, когда начальство орёт – ты уже внутри. И единственное, что тебя спасёт – привычка проходить мимо, не думая.

Поймал лоха, бей до смерти

Фраза так себе, конечно. Зато запоминается.

Услышал её у Дмитрия Гоблина Пучкова и решил попробовать. Можно было бы говорить «конец – делу венец» или «цыплят по осени считают». Но от классики почему-то в одно ухо влетает, в другое вылетает. А вот эту фразу ребята запомнили сразу. Ну и ладно, работает – и хорошо.

Была у меня команда, и там как-то само собой сложилось. Один разработчик – назовём его Петя – берёт задачу, копается в ней пару недель. Разбирается в требованиях, смотрит код, пишет что-то. Уже вник, уже контекст в голове.

И тут его дёргают на что-то срочное. Петя передаёт задачу коллеге – назовём его Вася – типа, там немного осталось, доделай.

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

Потом начинает писать. Но он-то пишет по-своему. Смотрит на то, что было, но делает иначе. Задача, которая должна была занять недели три – растягивается на пять-шесть.

А один раз у нас задача перешла от человека к человеку три раза. Там отгул, тут срочное, здесь ещё что-то. Три передачи. Это было что-то с чем-то.

Понятно, что по-хорошему задачи должны быть маленькие. Взял – сделал – закрыл. Но ребята тогда только учились их нарезать, и получалось не очень.

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

Как-то прижилось. Ребята стали доводить задачи до конца. Может, фраза яркая, может, просто надоело по три раза вникать в одно и то же – не знаю. Но работает.

Отложенная игра

«Отложенная игра в конечном итоге становится хорошей, а поспешно выпущенная игра навсегда остаётся плохой.»

Это сказал Сигэру Миямото – человек, который придумал Mario и Zelda. Уж он-то знает, о чём говорит.

В играх это особенно больно видно. Вот Cyberpunk 2077 – ждали годами, хайп был невероятный. Выпустили сырым. На старых консолях вообще не работало, баги повсюду. Потом несколько лет патчили, вытягивали, переделывали. Сейчас игра уже нормальная. Но ярлык «кривой релиз» приклеился намертво.

No Man’s Sky – та же история. На релизе – разочарование. Обещали одно, получили другое. Команда потом героически вытаскивала игру несколько лет, добавляла контент, чинила. Сейчас хвалят. Но сколько людей так и не вернулись, потому что первое впечатление было – обман?

С играми особенно жёстко, потому что релиз часто одноразовый. Это не мобильное приложение, где можно тихо выкатить апдейт. Люди покупают, играют, составляют мнение. И если первое впечатление – «это сыро», то всё, поезд ушёл.

В обычном IT вроде попроще. Но это только на первый взгляд.

Есть такая штука – релиз-трейны. Это когда ты выпускаешь продукт регулярно, например раз в неделю. Но фишка не в том, чтобы быстро выкатывать и быстро чинить. Фишка в другом.

Когда релиз-трейны сделаны правильно, у тебя есть фича-тоглы. Это такие переключатели: новая фича вроде уже в продукте, но она закрыта. Пользователи её не видят. И ты можешь открывать её постепенно – сначала на 5% пользователей, потом на 20%, потом на всех. Если что-то пошло не так – закрыл обратно, никто не пострадал.

Это и есть управляемый риск. Ты вроде релизишь, но новый функционал не может сломать то, что уже работает.

Только вот для этого нужна серьёзная технологическая обвязка. Фича-тоглы, мониторинг, возможность быстро откатить. Это всё не бесплатно – надо строить, поддерживать, следить. Зрелые компании так и делают. Но большинство – нет. Большинство просто выкатывают что есть и надеются на лучшее.

И вот тут ловушка. Бизнес давит: надо быстрее, надо сейчас, конкуренты не ждут. Возникает соблазн – ладно, выкатим как есть, потом допилим. А «потом» не наступает, потому что уже новые задачи. И продукт так и остаётся кривым. Не критично, но пользователи это чувствуют.

Есть такое понятие – нефункциональные требования. Одно из них звучит просто: продукт должен быть определённого уровня качества. Не ниже, чем приемлемо для пользователя. Потому что если ниже – пользователь уйдёт. Может не сразу, но уйдёт.

И тут важно различать. Есть управляемый фейл – когда ты понимаешь риски и сознательно идёшь на них. Как с плитой: обожжётся, но не смертельно, зато научится. Об этом я рассказывал в главе «Дай обжечься».

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

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.