Вадим Скворцов
7 386

Передать должность технического директора «Медузы» и не нарушить рабочий процесс

Технический директор игрового стартапа RAWG и автор Telegram-канала «Запуск завтра» Самат Галимов — о том, как во время ухода из «Медузы» он передавал обязанности заместителю.

Поделиться

В избранное

В избранном

Важное замечание: я передавал дела Боре Горячеву — своему заместителю. Боря разбирается в некоторых технических аспектах «Медузы» лучше меня и хорошо знаком с командой. В случае нового человека акценты были бы расставлены по-другому.

Передачу дел я рассматривал как ещё один проект, пусть и немного необычный. Участники: я, мой заместитель (новый техдир), отдел разработки, руководство, редакция. Цель: перенести все «секретные знания» из моей головы в головы коллег или во внешние системы хранения; не нарушить никаких критичных рабочих процессов, особенно затрагивающих внешние обязательства.

Мой план

  1. Перечислить, какие зоны ответственности у меня были и что входит в каждую из них.
  2. Совместно с Борей решить, кому и как мы передаем каждый пункт из списка.
  3. Передача (profit).

Зоны ответственности

  1. Техническая команда — отношения с каждым разработчиком, их мотивации, проблемы, ожидания и обещания. То, что обычно происходит между руководителем и подчиненным и часто не откладывается в долгий ящик.
  2. Информационная безопасность: стратегия, архитектура, бэкапы, подрядчики, потенциальные атаки и слабые места, требующие внимания.
  3. Архитектура: этот пункт у нас занял меньше всего времени — Боря и так придумал большую её часть.
  4. Текущие задачи: проекты, не стоящие в общей повестке дня, идеи проектов, переговоры или внешние дедлайны, которые не стоит пропускать.
  5. Цифровой актив и бюджет: чем владеет компания. Доменные имена, серверы-хостинги, сервисы и данные в этих сервисах.
  6. Контрагенты: этим корявым словом я обозначаю наших любимых партнёров и их точки соприкосновения с «Медузой». Это люди, к которым мы обращаемся, если вдруг что-то идёт не так в этом переплетённом мире.

Одна из важных задач технического директора — повышение bus factor. Так называют число членов команды, которых одновременно может сбить автобус без катастрофических последствий для бизнеса. Чем число выше — тем в большей безопасности компания. Если уход технического директора разрушает все процессы надолго — что-то в работе технического отдела было устроено не так.

Довольно теории, давайте смотреть скриншоты, как это было.

1. Техническая команда

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

Внутреннее письмо технической команде не отличалось принципиально от публичного объявления. Чуть больше эмоций и мыслей про внутреннюю кухню.

Административное: зарплата и логи её обсуждений хранятся в папочке на компьютере техдира, отпуска отмечены в Teamweek серым цветом (вот это не особо удобно).

2. Информационная безопасность

Я не знаю, как у других технических директоров, у меня в голове всегда есть «катастрофический сценарий».

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

Нужна идеальная безопасность — ложись в цинковый гроб и езжай в Fort Nox. Редко кто так делает. Тем не менее, в наших силах сделать атаку достаточно дорогой, чтобы не нашлось желающих тратить серьёзные средства.

Я знаю слабые звенья в защите и постоянно думаю, как бы их улучшить. В этом пункте я попытался передать свои знания Борису.

3. Архитектура

Некоторое время назад мы с Борей составили вот такую схему.

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

Наверху — список основных платформ и того, от каких систем «Медузы» они зависят.

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

Вообще, внутри этого пункта хотелось бы дать ссылку на свежую статью, описывающую всю внутренную архитектуру. Сейчас есть только вот этот материал трёхлетней давности.

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

4. Текущие задачи

Я вёл свои текущие задачи в Trello, в скрытой доске «Техдир». Тут были и срочные штуки и долгосрочные обязательства, так что я просто расшарил её на Борю.

Конечно же, пришлось привести доску в порядок и пометить всё меточками, рассортировать по столбцам.

После этой подготовки мы с Борей сели и прошлись по каждой карточке. Я рассказал, что имел в виду в каждой из них, Боря задавал вопросы. Это всё заняло около пяти часов (два дня с перерывами).

5. Digital assets

Тут меня сильно выручил любимый Airtable. Таблица «Сервисы» содержит все сервисы, к которым у нас есть логин и пароль. Начиная от банального суперадминского доступа к gSuite (почта и календари) и заканчивая богом забытыми Telegram-ботами.

На скриншоте не видно, но там 91 строка

В столбце Critical, отмечены критичные для работы «Медузы» сервисы. Есть столбец «Категория» для того, чтобы можно было составить в голове ментальную модель. Примеры категорий: хостинг, backoffice, социальные сети, подкасты, статистика-аналитика, магазины приложений и почтовые рассылки.

Исходные коды у нас все в Github и Bitbucket, так что их передача равнозначна суперадминскому доступу к нашим организациям в соответсвующих сервисах.

Бюджет. Технический бюджет верстается в документе Google Spreadsheet. Внутри документа есть восемь вкладок, разберём их отдельно.

Почтовые рассылки — самый ад. Отдельно считаем «Вечернюю "Медузу"» по количеству подписчиков, отдельно — продуктовую рассылку (оплата за факт отправки письма), у Mailchimp хитрая система расчёта стоимости, получается большая таблица
Хостинг — самая большая строка расходов, отдельно считаются серверы для бэкендов и edge для CDN
Лицензии. Мы все любим лицензии на Sketch и Adobe CC
Всё это сводится к семи сухим строчкам и сумме денег

6. Контрагенты

В таблице «Сервисы» есть столбец «Контактное лицо», связанный с отдельной таблицей контрагентов. Получается аккуратная табличка из людей, контактных сведений и того, чем они могут быть полезны. В этой таблице добавился столбец «передал». Там ставится галочка, если я сделал intro Бориса. Много типовых писем и несколько сообщений во «ВКонтакте».

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

#инструменты

{ "author_name": "Вадим Скворцов", "author_type": "self", "tags": ["\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b"], "comments": 5, "likes": 30, "favorites": 29, "is_advertisement": false, "section_name": "default", "id": "36495", "is_wide": "1" }
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } } ]