Владислав Бойко – Притчи для падаванов (страница 1)
Владислав Бойко
Притчи для падаванов
Вступление
Я довольно много лет обучаю людей. В компаниях – когда работаю с командами. Вне компаний – когда консультирую, менторю, помогаю ребятам расти. И в какой-то момент заметил одну штуку.
Можно час объяснять человеку, почему нельзя переписывать проект с нуля. Рассказывать про риски, про потерю бизнес-логики, про то, как команды раз за разом наступают на одни и те же грабли. Он послушает, покивает – и через месяц придёт с предложением переписать проект с нуля.
А можно рассказать анекдот про три конверта. И он запомнит. Навсегда. Потому что в следующий раз, когда кто-то скажет «давайте всё выкинем и сделаем заново», у него в голове щёлкнет: «А, это первый конверт».
Метафоры, притчи, байки – они работают. Не потому что люди глупые и не понимают серьёзных объяснений. А потому что хорошая история цепляется за память совсем по-другому. Она не ложится в папку «полезная информация, которую я когда-нибудь применю». Она садится где-то на подкорке и всплывает в нужный момент сама.
На одной из моих работ в команде были в основном ребята уровня джун-плюс. И там это работало вообще идеально. Рассказываешь анекдот – всем смешно, всем весело. А через неделю слышишь на стендапе: «Слушай, мне кажется, мы сейчас как тот мужик с Чебурашкой – делаем что-то, лишь бы делать». И все сразу понимают, о чём речь. Без длинных объяснений, без презентаций на двадцать слайдов. Один анекдот заменяет час разговоров.
В какой-то момент ребята начали спрашивать: «Откуда ты столько анекдотов знаешь?» Для них все эти истории были новыми. А для меня – просто частью жизни. Я их собирал годами, не специально – просто запоминал то, что цепляло. И каждый раз, когда на работе возникала ситуация, в голове всплывала подходящая байка.
И я подумал: а было бы прикольно собрать это в одном месте. Не учебник по менеджменту. Не «10 советов для успешного разработчика». А просто – книжку с анекдотами. Только каждый анекдот привязан к реальной ситуации из IT. С историями из моего опыта, с примерами, которые я видел своими глазами.
Эта книга – для джунов и мидлов в первую очередь. Для тех, кто только начинает свой путь или уже идёт по нему, но ещё не успел собрать свою коллекцию шишек. Может, какие-то истории помогут обойти грабли. А может – просто дадут название тому, что ты уже чувствовал, но не мог сформулировать.
Сеньорам тоже может быть интересно – но скорее в режиме «ха-ха, точно, у меня такое было». Ты в эти ситуации уже попадал. Для тебя это возможность вспомнить свои истории, посмеяться и, может, утащить пару анекдотов для своей команды.
Книга разбита на шесть частей. Каждая – про один принцип: думай перед тем как делать, доводи до конца, разберись прежде чем говорить, всему своё время, договаривайся правильно, работай с умом. Внутри каждой части – несколько глав. Каждая глава начинается с анекдота или байки, а дальше – история из реальной жизни и мысли о том, как это связано с нашей работой.
Читать можно в любом порядке. Хочешь с начала – пожалуйста. Хочешь открыть на случайной странице – тоже нормально. Главы связаны между собой, но каждая работает и сама по себе.
Ну что, поехали?
Я тебе скажу кое-что, а ты подумай над этим!
У моей мамы была фраза, которая в детстве доводила меня до белого каления.
«Я тебе скажу кое-что, а ты подумай над этим!»
Как же она меня бесила. Потому что за ней всегда шёл какой-нибудь совет. Не делай так. Попробуй по-другому. Подумай, к чему это приведёт. А я – подросток, я же всё знаю лучше всех. Какие советы? Я сам разберусь.
И я, конечно, не думал. Отмахивался. Закатывал глаза. Ну мааам, ну хватит. Я уже взрослый.
Прошло много лет. И – кто бы мог подумать – мама оказалась права. Причём не в каком-то конкретном совете, хотя и в них тоже. А в самом подходе. В этом «подумай».
Ведь как обычно бывает? Тебе кто-то что-то говорит – особенно близкий человек, особенно из заботы – и первая реакция: иголки. «Да что ты понимаешь». «Я сам знаю». Это даже не злость – скорее рефлекс такой. Подростковый. Который, если честно, у многих никуда не девается и в тридцать, и в сорок.
А человек-то не выделывается. Он просто делится тем, что сам прошёл. Тем, что ему далось непросто – и он не хочет, чтобы ты наступил на те же грабли. Это не нападение. Это забота. Просто она иногда приходит в неудобной упаковке.
Но есть ещё одна штука, поинтереснее.
Я провожу консультации. И довольно часто бывает так: приходит человек с конкретным запросом, я ему раскладываю по шагам – делаем раз, два, три, четыре, пять, вот почему это сработает. И знаете, какой самый частый ответ?
«Да, я это знаю».
Знает. Но не делает.
И это же не только про консультации. Это вообще про всё. Все знают, что чтобы похудеть – надо меньше есть и больше двигаться. Все знают, что надо высыпаться. Что надо откладывать деньги. И что? Ну вот честно – кто всё это делает?
Те, у кого есть результат, в какой-то момент поняли простую вещь: никакой магии нет. Результат – это набор простых действий. Берёшь и делаешь, раз за разом. А те, у кого пока не получается, часто ищут какой-то секрет. Лайфхак. Волшебную таблетку, которая всё изменит без усилий.
И вот тут мамина фраза заиграла для меня совсем по-другому. «Подумай над этим» – это ведь не про то, что ты чего-то не знаешь. Это такое мягкое приглашение остановиться и честно посмотреть на какую-то часть своей жизни. Может, тут что-то не так? Может, ты знаешь, что делать, но почему-то не делаешь? И может, стоит задуматься – а почему?
Родители-то нас любят! Они видят то, что мы сами замечать не хотим. И когда мама говорит «подумай над этим» – она не даёт готовый ответ. Она говорит: остановись. Посмотри. Может, стоит что-то с этим сделать.
Так что если по ходу чтения захочется сказать «да я это знаю» – попробуй остановиться на секунду. Может, и знаешь. А может, стоит подумать ещё раз.
Часть 1. Думай, потом делай
Ну что-то же нужно делать!
Гена с Чебурашкой опаздывают на поезд. Поезд уже отошёл, набирает скорость. Они что есть сил бегут за ним с чемоданами по перрону, кричат. Уже понятно, что не успеют.
И тут Гена бросает чемоданы и с размаху бьёт Чебурашке в бубен.
– Гена, за что?!
– Но ведь надо же что-то делать!!!
У меня был разработчик – назовём его Костя – который в спокойной обстановке работал нормально. Но стоило появиться давлению – сроки горят, все ждут результат, руководство нервничает – он начинал делать то, что я называл «биться головой о клавиатуру».
Появился баг – сервер в какой-то момент начинал жёстко грузить. Улетал по памяти, каскадная нагрузка, всё ложилось. Раньше не грузило, теперь грузит – фиг знает почему.
И вот что делает Костя. Смотрит на код, находит метод, который кажется ему подозрительным, переписывает и запускает нагрузочное тестирование. Тест идёт полтора-два часа. Результат – не помогло. Берёт другой метод. Переписывает. Два часа. Не помогло. Подключает коллегу – теперь они вдвоём сидят и переписывают всё, что кажется большим или подозрительным. Без гипотез, без логики – просто «ну вот это выглядит стрёмно, давай перепишем».
Четыре дня. Два человека. Я это называю monkey development – как monkey testing, только вместо тыканья в интерфейс ты тыкаешь в код наугад.
Сел с ними, говорю: окей, давайте попробуем по-другому. Раньше не грузило – теперь грузит. Значит что-то изменилось, правильно?
Откатились по коммитам до момента, где всё работало. Проверили – работает. Дальше даже думать не надо – тупое половинное деление. Коммит посередине – работает или нет? Нет – первая половина. Да – вторая. Ещё раз пополам. Ещё раз.
Минут через сорок нашли конкретный коммит, конкретный метод, который всё положил.
Сорок минут. Против четырёх дней двух человек.
И я понимаю, почему так получилось. Баг есть, прод страдает, все нервничают. Сидеть и думать – это как будто ничего не делаешь. А переписать метод и запустить тест – это действие, это прогресс, это можно на дейли сказать «мы работаем, проверяем гипотезы». Только это не гипотезы. Это Гена бьёт Чебурашку. Поезд-то уже ушёл, но надо же что-то делать.
Всё стадо
Стоят на холме два быка – старый и молодой. Внизу проходит стадо коров. Молодой пихает старого под бок:
– Ну давай, ну давай быстренько сбежим с холма! Вон ту, молоденькую, видишь? Или вон ту, стройненькую! Ну давай, быстренько!
Старый бык долго слушает, качает головой и говорит:
– Нет. Мы медленно спустимся с холма и медленно покроем всё стадо.
У нас был сервис с чатами. Личные сообщения, групповые чаты – всё стандартное. И в какой-то момент посыпались баги, связанные с прочитанностью сообщений. Сообщение показывается непрочитанным, хотя ты его открывал. Или наоборот – прочиталось, а потом снова стало непрочитанным. Или в группе показывает три непрочитанных, открываешь – а там пусто.
И каждый раз ребята реагировали как молодой бык. Прибежал баг – побежали чинить. Пофиксили. Через неделю новый баг – опять побежали. Потом ещё один. И ещё. Каждый раз – реактивно, каждый раз – точечный фикс конкретной проблемы.
А проблемы не кончались. Потому что каждый фикс – это ещё одна заплатка на франкенштейне.
Система сообщений когда-то писалась наспех. Просто чтобы работало. И для простых чатов – работало нормально. Но потом появились групповые чаты. Потом каналы. Потом треды. Потом супер-чаты с топиками. Каждую новую фичу прикручивали к старому фундаменту, который на неё не был рассчитан. И фундамент начал трещать.