Владислав Бойко – Притчи для падаванов (страница 2)
В какой-то момент я понял: мы молодые быки. Бегаем с холма за каждой коровой, а стадо уходит.
И мы остановились. Сели. Разобрались, как вообще должна работать механика прочитанности – в личных чатах, в группах, в каналах, в тредах. Не как она работает у нас, а как она должна работать в принципе. Посмотрели, как это устроено архитектурно. Продумали data-модель. Нарисовали, как это должно выглядеть на концептуальном уровне.
А потом сравнили с тем, что у нас есть.
И стало понятно, что проблема – не в багах. Баги – это симптомы. Проблема в том, что архитектурно всё было сделано неправильно с самого начала. Из говна и палок, как водится. И никакое количество точечных фиксов это не спасёт.
Полностью переписали всю архитектуру работы с сообщениями. С нуля. Один раз – но правильно. После этого целый класс багов просто исчез. Не потому что мы их пофиксили – а потому что в новой архитектуре им негде было жить.
Самое сложное было – не дёргаться. Баги сыпятся, все нервничают, а ты сидишь и рисуешь data-модель. Но старый бык на то и старый, что умеет не дёргаться.
Шлюх менять, а не кровати
Утро в офисе. Сотрудники двигают мебель – расставляют по местам, выравнивают по линеечке. Посреди этого хаоса стоит бабушка-уборщица со шваброй и наблюдает.
– Сынки, а чего это вы делаете? Переезжаете?
– Не, бабуль, мебель расставляем по фэншую. Когда всё правильно расставим – сразу выручка вырастет!
Бабушка качает головой:
– Сынки, я тут давно работаю. Ещё до революции это здание убирала. А был тут раньше публичный дом. И когда у них падала прибыль – они кровати не переставляли. Они сразу девочек меняли.
Пришёл я как-то на проект, а там весь код – один большой клубок. Тронул в одном месте – посыпалось в пяти других. Каждая фича стоила безумных усилий, всё шло медленно и больно.
Ну и что делать? Можно писать регламенты, договариваться о правилах, внимательнее ревьюить. Короче, двигать кровати.
Посмотрел я на это и думаю: не, так не пойдёт. Проблема же не в том, как мы работаем. Проблема в самом коде.
Взяли и сделали большой рефакторинг – перевели приложение на реактивный подход, на RxJava. Это когда события в одном месте вызывают реакции в других, но без жёсткой связки. Каждый кусок сам по себе, хочешь данные – просто подписываешься.
Причём делали не так, что сели на полгода и заморозили всё. Нет, каждый спринт брали один модуль, переводили его, оставляли интерфейс для связи со старым кодом. Потихоньку, кусок за куском, всё и поменяли.
Людей, конечно, пришлось переучивать думать по-другому. Но зато потом – красота. Комбинируешь данные откуда хочешь, ничего не сыпется.
С командами, кстати, бывает похоже.
Сидит команда, костяк не хочет работать. Ну вот так сложилось – не мотивированы, делают спустя рукава. Можно с ними разговаривать, пытаться раскачать, тимбилдинги устраивать.
А можно по-другому. Собрать рядом вторую команду – небольшую, замотивированную. Начать потихоньку передавать ей задачи. Она показывает результат, забирает всё больше. А первая либо подтягивается, глядя на это, либо сама расходится.
Жёстко? Ну да. Но иногда проблема не в процессах, а в том, кто работает. И тут уж сколько мебель ни двигай – не поможет.
Я не тактик, я стратег
Жили-были мыши. Все их обижали. Однажды пришли мыши к сове:
– Мудрая сова, помоги! Все нас едят. Скоро нас совсем не останется. Что делать?
Подумала сова и говорит:
– Мыши! Станьте ежами. Будете колючими – и для охотников недоступны.
Побежали мыши радостно: станем ежами! станем ежами! Вдруг одна остановилась:
– А кто-нибудь знает, как стать ежами?
Никто не знает. Побежали обратно к сове:
– Сова! А как нам стать ежами?
– Мыши, идите на хер. Я не тактик, я стратег.
Сидим на совещании. Мы, представители другого департамента, и наш руководитель. Обсуждаем критически важную штуку – от неё зависит следующий квартал, а может и два.
Проблема простая: нам нужно что-то от второго департамента. Мы от них зависим, а они от нас – нет. Мы для них просто одна из нагрузок.
И вот мы сидим, приводим аргументы. Логичные, разумные – руководитель их до этого полностью разделял, на всех прошлых встречах кивал, говорил «всё правильно, давайте так». А ребята из второго департамента включают режим «ничего не слышу, ничего делать не буду». Без аргументов, без объяснений, просто – нет и всё.
Их руководителя на встрече нет. Наш – есть. Он всё слышит, видит что вторая сторона вообще не готова разговаривать. И в какой-то момент встаёт и говорит:
– Ну ладно, мне пора. Разбирайтесь, это ваша проблема. Потом расскажете, как решили.
И уходит.
А у нас нет никаких механизмов влияния на второй департамент. Вообще никаких. Единственный способ – эскалировать на уровень руководителей. Для этого и нужен был наш руководитель на этой встрече. А он встал и ушёл.
Мыши, станьте ежами.
Как итог – проблему не решили, выхватили последствия мы. Второй департамент не выхватил ничего. А руководитель потом спрашивал, почему мы не разобрались.
Ну вот так. Стратегия была – «вы должны договориться». А как договориться, когда у тебя нет ни полномочий, ни ресурсов, ни доступа к тем, кто может решить вопрос – это уже тактика. А он не тактик.
Я потом думал, а что вообще можно было сделать. Ну смотри: если люди просто саботируют процесс без аргументов – это же история про «менять шлюх, а не кровати». Рыба гниёт с головы, значит проблема в руководителе того департамента.
Но как его поменять? Надо выходить на уровень выше своего руководителя. А это уже прыжок через голову, корпоративные игры. Можно, конечно, в кулуарах аккуратно напроситься на разговор с кем-то из директоров… Но это уже такое.
Второй вариант – менять своего руководителя. Потому что если он в такой ситуации умывает руки, то он и дальше будет умывать.
Оба пути ведут к тому, что надо лезть через голову. А я не очень люблю такие игры.
Если честно, хорошей стратегии у меня нет. Так что если кто знает – расскажите.
Часть 2. Доводи до конца
Яма с крокодилами
Ты хочешь познакомиться с девушкой. Она стоит в десяти метрах от тебя. Между вами – яма с крокодилами.
Если ты прыгнешь на два метра – тебя съедят. На пять – съедят. На девять восемьдесят – тоже съедят. Крокодилам плевать, как близко ты был. Не долетел – значит не долетел.
Но и прыгать на сто метров тоже не надо. С той стороны хорошая лужайка, стоит скамейка, сидит девушка. Десять метров – ровно столько, сколько нужно.
В 2006 году Yahoo договорилась купить Facebook за миллиард долларов. Цукерберг согласился. Оставалось подписать. И прямо на подписании CEO Yahoo сказал: «Нам придётся заключить сделку за 850 миллионов, а не за миллиард».
Сэкономили 150 миллионов. Цукерберг промолчал и ушёл. Сделка не состоялась.
Через несколько лет Facebook стоил сотни миллиардов. Yahoo в итоге продали по запчастям. Прыжок на 9.80. Крокодилы не оценили.
И это был не единственный раз. Yahoo присматривалась к LinkedIn, Twitter, YouTube – и каждый раз не допрыгивала. Не важно, сколько попыток ты сделал и сколько денег сэкономил по дороге. Важен только результат: ты на той стороне или нет.
Но есть и другая сторона этой истории. Прыжок на сто метров.
Мы с ребятами когда-то делали стартап. Мне нужно было написать бэкенд, и я выбрал Elixir. Мощный язык, построен на Erlang VM, держит безумные нагрузки. Я сделал бэкенд, который мог бы обслуживать тысячи одновременных пользователей. Архитектура – космос.
А потом мы пошли продавать. И оказалось, что это нахер никому не нужно.
Ноль пользователей. Бэкенд, который держит бесконечную нагрузку, при нагрузке ноль. Красивый, мощный – и абсолютно бесполезный.
Правильнее было сделать лендинг. Просто лендинг. Проверить, готов ли вообще кто-то за это платить. И только когда убедились – писать бэкенд. Это были бы те самые десять метров. А я прыгнул на сто – приземлился далеко за лужайкой, в чистом поле, где никого нет.
И вот тут важная мысль, которая часто теряется за яркостью метафоры: не обязательно прыгать вообще. Можно пройти сто метров вправо и обойти яму. Можно попросить друга с вертолётом. Можно найти мост.
В IT это работает буквально. Сидишь, куришь мануалы, пытаешься разобраться сам – это прыжок через яму. А можно пойти к тому, кто в теме, и спросить. «Бери вот это решение, а вот это не бери». Пять минут разговора – и ты на той стороне без прыжка.
Есть психологический тест – «пустыня». Ты идёшь по пустыне, перед тобой стена, за ней оазис. Опиши стену. И большинство людей описывают что-то непреодолимое – бетон до неба, колючая проволока, бесконечная в обе стороны.
Но это же стена в твоей голове. Не обязательно её перелезать. Можно сломать. Обойти. Сделать подкоп.