Привет! Меня зовут Вова, я руковожу разработкой журнала. Ищу мидл-бэкендера, который работает на Python, поможет тестировать гипотезы на монетизацию и конверсии в ядро читателей, а на основе удачных тестов будет большие делать проекты.

Тинькофф-журнал — главное русскоязычное издание про деньги. В июле наш сайт читали 16 миллионов человек. Наша миссия — сделать читателей образованными и смелыми в отношении всего, что касается денег. Для этого мы:

Сейчас этим занимаются только маркетологи, а продуктовые подкоманды берут задачи в работу по остаточному принципу. Чтобы работать над направлением системно, мы организуем новую продуктовую подкоманду с собственной разработкой. Туда и ищу бэка, а еще — фронта и продакта.

Что по технологиям

Потенциально вам предстоит дорабатывать любой сервис журнала и разрабатывать с нуля новые. Два главных сервиса — движок журнала и соцплатформа — написаны на Django. Движок перезапускаем на FastAPI. Этот же фреймворк используем в остальных сервисах, на нем же пишем новые.

У нас настроены пайплайны на Gitlab CI, в которых запускаются MyPy, Flake, Black и тесты на PyTest. Сервисы на FastAPI в тех же пайплайнах собираются в Docker и деплоятся с помощью ArgoCD в Google Kubernetes Engine. Django-сервисы деплоим руками.

Базы — Redis и Postgres. Для сервисов на Django Postgres разворачиваем и поддерживаем сами. Под FastAPI развернут Google CloudSQL. Redis хостим сами, но ради эксперимента в паре мест тоже подключили облачный.

Клиенты общаются с сервисами по REST, используем спецификацию OpenAPI, в шаблоне типового проекта подрублен Swagger. Сервисы между собой местами общаются так же, но мы переводим это на асинхронную архитектуру. В качестве брокера используем Google Pub/Sub.

Как там в команде

Разработчики в журнале совмещают работу в продуктовой подкоманде и в технической команде.

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

В технической команде — кросс-ревью до двух лайков. Сами реквесты равномерно разбрасываем между всеми бэкендерами независимо от продуктовой команды. Раз в пару недель мы созваниваемся на час, чтобы обсудить чисто бэкендерские штуки: большие изменения в архитектуре, какие у кого новости или открытия, как улучшить процессы или инструменты. Раз в день-два пишем стендапы, чтобы быть в контексте разных направлений и вовремя прийти на помощь. Всего в команде 10 бэкендеров, 15 фронтендеров/JS-фулстеков, 4 мобильщика — RN-фулстеки, 3 тестировщика, пара менеджеров и DevOps/SRE-инженер.

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

С чего начнем

Ближайшие задачи, которые предложу:

  1. Провести аудит реализованных маркетинговых механик. В движке есть уже реализованные механики — стоит посмотреть, сломаны они или работают, что имеет смысл вытащить в отдельный сервис персонализации и развивать, а что можно удалить из кодовой базы и не пытаться поддерживать дальше.
  2. Оживить сценарии показов баннеров. Оживить, потому что, это скорее всего в каком-то виде уже реализовано в старом движке. Но сейчас этим не пользуются: баннеры ставят в материалы вручную, в подвале с рекомендациями в конце статьи он тоже всегда один и тот же. Это бесит пользователей, а мы недосчитываемся целевых действий.
  3. Улучшить почтовые коммуникации: сделать управление подписками на странице всех рассылок, улучшить синхронизацию пользователей журнала со служебными пользователями майндбокса, попробовать реализовать amp-механики вроде «сохранять статью в закладки не выходя из письма».

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

Чего ожидаю от кандидата

Из хардов будет тяжеловато без:

  1. Владения Python и современным фреймворком веб-разработки на его основе.
  2. Опыта разработки REST API, использования спецификации OpenAPI.
  3. Опыта работы с Postgres и Redis.
  4. Опыта написания unit-тестов.
  5. Знания основ веб-архитектуры: клиент-серверного взаимодействия, особенностей синхронной и асинхронной работы и далее по списку.
  6. Умения спроектировать MVP сервиса на знакомых технологиях по требованиям бизнеса и спланировать его масштабирование в случае наплыва пользователей.

Будет плюсом, если знаете паттерны проектирования: синглтон, адаптер и другие. Будет большим плюсом, если ковыряли Kubernetes.

Из софтов главное — самостоятельность. Чтобы получил от бизнеса задачу, уточнил непонятное, декомпозировал и расписал, обсудил с коллегами, если нужно, написал код, сдал в тестирование, выкатил на прод, пришел к бизнесу за следующей. Высший пилотаж, если по дороге ни с кем не поссорился, а в итоге еще что-то отрефлексировал.

Вакансия для опытных специалистов

Если вы только что окончили «Эльбрус-буткемп», «Яндекс-практикум» или другую образовательную программу, предлагаю подать заявку на стажировку в Тинькофф.

Что предлагаю взамен

Можно рассчитывать на:

  1. На белую зарплату раз в месяц по договору. По возможности переведем в штат с соцпакетом.
  2. Гибкий график. Главное — побольше времени пересекаться с остальной командой.
  3. Удаленную работа. По желанию можно приезжать в наш офис в семи минутах от «Динамо» или в другие офисы Тинькофф.
  4. Модную лимитированную худи с логотипом Т⁠—⁠Ж с очередного тиража.
  5. Добровольное участие в материалах о сотрудниках журнала.

Как помогаем расти

При желании у нас можно научиться:

  1. Выращивать стажеров и делегировать им задачи. Несколько раз в год набираем студентов Физтеха, Вышки, Бауманки, МГУ и других вузов с неплохими техническими программами.
  2. Смежным с работой софт- и хард-скиллам. В Тинькофф развитая система внутренних тренингов — от безопасности веб-приложений до поиска баланса между работой и личной жизнью.
  3. Писать статьи на «Хабр» и «Медиум», выступать с докладами на митапах и конференциях. Наши редакторы, HR и DevRel помогут подобрать тему, собрать материал, подготовиться и опубликоваться или выступить.
  4. Другим навыкам, которых вам будет недоставать для работы. Есть возможность поучиться на курсах или послушать конференции за счет компании.

Как откликнуться

Чтобы обсудить вакансию, пишите мне в Телеграм. Буду рад, если начнете с короткого рассказа о себе. Хорошо, если поделитесь ссылкой на ваш GitHub или любые другие примеры вашего кода.