будни

Исполнение детской мечты: я на встрече IETF в Монреале. IETF — инженерный совет интернета. За длинным столом сидят инженеры Google, Apple, Cloudflare, Fastly и Akamai и работают над протоколом QUIC. Рядом коллеги пишут патч для OpenSSL, занимаются шифрованием. За соседним столом работают над улучшением протоколов сетевого уровня, роутинга.

Мой вклад — внимание к цензуре. 4 года назад, мы играли в кошки-мышки с казахским министерством, пытавшимся заблокировать Медузу. Блокировки — фоновая мысль, с которой я живу до сих пор. Я часто думаю: как бы я решал задачу, если работал на государство и пытался заблокировать неугодный сайт или приложение. Не многие разработчики протоколов думают эту мысль — им не приходилось сталкиваться с цензурой самим.

Мы разрабатываем несколько протоколов которые усложнят цензуру в интернете. Читать и обсуждать стандарт, проигрывать возможные сценарии, вносить правки — интересная инженерная работа. Это немного похоже на разработку законов, только политики существенно меньше. Хотя она есть — обсуждаемые стандарты влияют на многомиллиардные бизнесы и конкуренция порой выходит на первый план, затмевая инженерные соображения. Мне скучно много программировать и вот этот микс между программированием и общением-коллективным продумыванием идей мне очень нравится.

😍🥰

Я почти не писал сюда в последние месяцы.

Сначала я боялся, что никому не нужен как профессионал. Потом пришел ещё больший ужас, когда понял, что предложения приходят нормальные, а порой даже лестные (бизнесы в десятки миллионов долларов, ААА), просто я не хочу становиться техдиром одной компании на очередные 3-5-10 лет, скучно. Что делать дальше?!

Становиться консультантом, который просто пиздит и не несет ответственности — нет. Прогать за деньги я не люблю. Делать аутсорс-компанию — точно нет: покупаешь программистов по 150 тысяч в месяц и продаешь по 2000 рублей в час, прибыль 50 тысяч рублей в месяц за человека. Больше тел — больше денег.

Особых накоплений у меня нет, а трое детей и жена — есть. Чем заниматься и как зарабатывать на жизнь?!

Я нашел не только ответ, но и партнера, с которым мы начинаем общее дело.

Мы с Федей Борщевым предлагаем услуги технического директора плюс. Мы помогаем разобраться в технической стороне вопроса и выстроить крутую внутреннюю разработку. С нами багов, проебанных дедлайнов и падений в продакшене станет меньше, а новые фичи и польза бизнесу будут появляться чаще и ритмичнее. Помощь с наймом программистов (а при необходимости — и техдира), которые будут развивать настроенную нами систему — в комплекте. Главное — всё это будет работать и после нашего ухода.

Можем найти крутых программистов и быстро запустить MVP. Порой мы отвечаем «да не нужно тут ничего прогать, давай лучше X сделаем» — у нас нет потребности продать вам побольше часов программистов.

Федя — очень крутой техдир, причем мои слабые стороны — его сильные (и наоборот). Я люблю общаться с людьми, а Федя — прогать.

——

Первый клиент, о котором мы расскажем публично — iGooods. Это сервис доставки продуктов из гипермаркетов, родом из Питера. 4000 заказов в день, 250 миллионов рублей оборота в месяц, оценка в 3 миллиарда рублей.

У iGooods 28 программистов, они каждую неделю выпускают новые фичи, бизнес-показатели растут. Нас позвали, потому что: 1) CPO Андрей отвечает не только за продукт, но и за разработку и зашивается; 2) скорость разработки падает, несколько важных проектов тянутся месяцами, даты запуска переносятся; 3) тяжело найти хороших программистов; 4) технический долг копится, команда недовольна.

Я вижу эти сложности почти у каждого IT-проекта. В ближайшие месяцы мы с Федей будем делиться с вами тем, как мы их решаем на примере классной компании. Ура!

Опубликовал поздравление с 8 марта в бейзкемпе (это наш внутренний рабочий форум) и пожалуй продублирую его сюда.

Я вижу, что многие пытаются совсем закенселить этот праздник, потому что мы выросли, слыша стыдные поздравления о «прекрасных дамах, которые украшают наш коллектив».

Мне очень повезло — всю карьеру меня окружают крутые женщины-профессионалы и мне есть что вам сказать.

Поздравляю вас с международным женским днем! Это день посвящен женщинам, вашим правам, достижениям и борьбе за равенство. 

Каждая из вас здесь не потому, что она женщина. Вы здесь, потому что вы круче всех, кто претендовал на открытую вакансию. При том, что желающих попасть в нашу команду — много.

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

Как отец двух дочек, я смотрю на вас с надеждой. Я надеюсь, что и мои девочки тоже смогут вырасти и заниматься тем, что любят, стать профессионалами в своём деле. Вы для меня — пример и я вами горжусь.

Ещё я горжусь тем, что в нашей компании ценят результат, а не пол. Если вдруг вы заметите, что в чем-то это не так, — пожалуйста, дайте знать.

С праздником!

Мы в Медузе уверенно программируем (и управляем разработкой), когда есть четкая постановка задачи — понимание, описание, макеты, тестовые данные и прочее.

Создаешь трелло доску со столбцами «описание», «разработка», «тестирование», «готово». Заводишь в неё все задачи. Даёшь внутри ссылки на .sketch-файлы. Созваниваешься перед началом проекта, обсуждаешь его голосом. Дальше постоянно контролируешь результат. Главное не забыть, что хотел получить в конечном счете.

Меня беспокоит этап, когда разработка формально ещё не началась. Собрать требования, разобраться в документации, разбить проблему на меньшие части, понять, что мы можем себе позволить, а что нет — всё это большая работа. В ней участвует не только разработка, но и дизайнеры и редакция. Сейчас эта работа делается ad-hoc, без «единого источника правды». Из-за этого возникает несколько связанных между собой проблем: 1. сложно оценить объем работы (сколько было/сколько сделано/сколько осталось) 2. сложно её делегировать (делать вместе) и делиться результатом 3. задачи теряются и забываются.

В такой формулировке, решение очевидно — использовать на этом шаге разработки те же инструменты, что и для основного программирования/тестирования. Уложить всё в трелло, разбить на задачи, назначить ответственных, вести переписку внутри.

Попробуем сделать это с несколькими следующими проектами. Расскажу потом, что получилось.

Спасибо большое Боре Горячеву, что заметил проблему и указал на решение.

«Meta-доска» в трелло. Каждая карточка в ней представляет большой проект и содержит в себе ссылку на доску этого проекта. «Взгляд с высоты птичьего полета». Извините, что много блюра — секреты!

Мы с Федей наняли первого программиста к себе в штат.

На двоих, мы за свои карьеры взяли на работу больше сотни программистов, но это первый раз, когда мы платим зарплату из своих собственных денег и берем человека не в штат к своему работодателю или к клиенту, а к себе в команду. Очень необычное ощущение, чувствую бо́льшую ответственность и даже гордость.

Наш первый наемный сотрудник — Всеволод Скрипник. Всеволод молод, офигенно прогает на питоне и умеет доводить задачи до конца. Это — очень ценное умение, которого не хватает многим. А ещё Всеволод, как и Федя, предпочитает по работе общаться через электронную почту 🎩.

Первым проектом Всеволода будет запустить разработку бэкенда Сноба. Потом мы передадим развитие этого кода собственным программистам Сноба, но первый код мы всегда пишем сами. В начале закладываются архитектура и принципы разработки и тут важно не ошибиться. Раньше это всё делал один Федя, а теперь Федя сделает только фронт, а бэк запрогает Всеволод.

Кстати, у Всеволода есть свой канал в телеге!

Чувак делает бота для сабреддита, где рекомендуют игры. Главред в рамках партизанского маркетинга постучался к нему в личку и предложил использовать данные rawg.io (у нас самая большая в мире база метаданных игр).

Я рассказал, как работает наше API, он указал на пару багов в поиске (нет поиска без багов и гугл-пророк его), мы в очередной раз подкрутили настройки Elasticа, он заопенсорсил питон-обертку для API. В общем, обычная рабочая ситуация: у любого нужного людям проекта рано или поздно появляются неофициальные API-клиенты, написанные энтузиастами.

И тут он пишет в дискорде:

> good news from my end, i asked my IT teacher if it was okay to further develop RAWG python wrapper as a graded project
> that means i don't have another project and i can focus on rawgpy

Всё это время я не знал, что он школьник! Интернет-переписка уравнивает детей и подростков в правах со «взрослыми» и это прекрасно.

Вспомнил Севу — школьника из Москвы, с которым мы делали ботов для Медузы. После 9го класса он бросил школу, переехал в Питер и теперь руководит командой разработки экспериментальных продуктов в Вконтакте (ребята, которые запустили Клевер).

Дети сегодня не могут шататься по улицам со сверстниками и взрывать карбидные бомбы (тут более безумная версия) на заброшенных стройках, как делали мы. В обмен, у них есть возможность быть со взрослыми на равных в сети, которой не было у нашего поколения. И пусть детство моих детей будет лучше, чем моё, аминь.

И не забивайте на предложения незнакомцев поучаствовать в вашем проекте на добровольных началах, даже если это не увеличивает ЕБИТДу сегодня. Когда-нибудь, на другом конце провода могут оказаться ваши дети.

Самое интересное в последнее время — стыдное.

— Обнаружил, что у нас была плохо подключена гугл-аналитика и терялись «залетные просмотры», когда человек проводил мало времени на странице. Стоило выгрузить в табличку по-дневные показатели яндекс-метрики и гугл-аналитики, построить график-сравнение и всё стало очевидно.

— Фронтенд не прокидывал сессию в события, отсылаемые в гугл-аналитику с бэкенда. Достаточно было открыть распределение событий по источникам трафика, чтобы заметить отклонения.

— Прилетела тонна трафика на главную с видео-роликами, а стандартная конфигурация Cloudflare, оказывается, не кеширует видео — попали на деньги в Amazon S3. Переписываюсь теперь с ними, надеюсь, скостят часть счета. Стоимость казалась константой, пока не произошел резкий всплеск трафика.

Кажется, что с опытом, я теряю право наступать на эти грабли. Ну и пусть, кончаю стесняться, буду рассказывать о таких вот глупых ошибках.

Спасибо Гаджи, что подсказал, что нечего стыдиться. И спасибо Британскому музею, который не постеснялся признаться, что шумерская ваза из третьего тысячелетия до нашей эры, на самом деле — наконечник боевой булавы, который они все эти годы держали перевернутым вниз головой.

Мы креативно использовали API инстаграма для замера индекса фото-популярности разных точек на карте. Самое хитрое — найти этот доступ к API инстаграма. У них совершенно драконовские правила и издевательская форма регистрации API-клиента: можно выбрать 10 вариантов, для чего тебе нужно API и в 9 вариантах из 10 показывается текст «для этого юзкейса API применять нельзя». Хитрость заключается в том, что сервис https://www.picodash.com не проксирует запросы в инстаграм, а выполняет их со своим токеном прямо из браузера 🙆
Классный тест получился https://meduza.io/games/statuya-svobody-ili-eyfeleva-bashnya

Давно я ничего не публиковал.

Раньше я писал посты сюда как сообщения другу в чате. Другу, который находился в одном информационном поле со мной. Не объяснял шутки, не расшифровывал термины.

В какой-то момент, я стал готовить посты как эпизоды подкаста. Там мы стараемся объяснять все самыми простыми словами.

Писать такие «образовательные» тексты — большая работа. А некоторые шутки вообще теряют смысл, когда пытаешься их объяснить человеку не в теме.

Например, пару месяцев назад я сел писать посты про шум вокруг технических проблем после покупки твиттера и про изменения стоимости Reddit API (интересные и показательные истории на грани между технологиями, сообществами и бизнесом), но сдался и не стал их публиковать, когда объем «в предыдущий сериях» перевалил за несколько тысяч слов.

Думаю вернуться «назад к истокам». Извините великодушно, если не все будет понятно.