Как я работаю: Павел Антоненко, Technical Program Manager в Snap
[В рубрике «Как я работаю» мы приглашаем гостя рассказать о своей работе, организации воркспейса, полезных инструментах и лайфхаках]
Павел Антоненко — Technical Program Manager в американской продуктовой компании Snap, которая разрабатывает мессенджер Snapchat, умные очки Spectacles, сервисы Bitmoji и Zenly и несколько других продуктов. В 2015 году Snap купил украинский стартап Looksery, в котором в то время работал Павел. Так одесская команда разработчиков селфи-фильтров стала частью глобальной корпорации.
Должность Павла позволяет ему участвовать во всех этапах жизненного цикла продукта, видеть продукт как бы «сверху», глобально — и при этом сохранять технический фокус.
О себе
В детстве у меня рано появился компьютер: первый «Радио-86РК» мой отец собрал сам в 1992 году, мне было
Однажды учителя предложили мне поучаствовать в олимпиаде по программированию. Я возразил, что не умею писать код. А мне ответили, что там важнее общее аналитическое мышление: составить алгоритм, нарисовать блок-схему. Я решил попробовать — и неожиданно для себя занял второе место. После этого стало интересно разобраться в этой области подробнее. Так я начал осваивать Pascal.
Когда пришло время решать, на кого учиться дальше — на химика или математика-программиста, — я взвесил карьерные перспективы и выбрал второй вариант. Это был 2002 год: IT-сфера как раз начинала развиваться в нашей стране, и было понятно, что у нее есть будущее. Я поступил на прикладную математику в ОНУ им. Мечникова. Учиться было непросто из-за огромного числа суровых предметов по математике, но все же я считаю, что с выбором вуза не промахнулся: получил прочный фундамент, развил гибкость мозга и логическое мышление.
Во время учебы в университете я продолжал участвовать в олимпиадах. Занимал призовые места на уровне Украины и однажды дошел до мирового полуфинала. «Выше, быстрее, сильнее» — для меня это был хороший способ доказать, что ты чего-то стоишь :)
В 2006 году, когда я учился на четвертом курсе, наш декан порекомендовал меня в интернатуру продуктовой компании CS Odessa. Впоследствии я проработал там пять лет: сначала в роли программиста, затем — скрам-мастера. Считаю, это был отличный старт. С одной стороны, в компании было много молодых мотивированных ребят, с которыми мы вместе учили новые технологии, делились идеями, помогали друг другу. С другой, в моей команде работали и опытные разработчики, которые стали моими менторами. В CS мне посчастливилось познакомиться с будущими основателями множества известных украинских компаний — например, Readdle.
Мы делали продукты для мирового рынка, лично я в основном занимался разработкой сервиса для управления проектами ConceptDraw MindMap. Это были кроссплатформенные приложения Windows/Mac — для того времени экзотика, в Украине mac еще был в диковинку. Я работал с технологиями Cocoa на Mac и MFC на Windows. Кроссплатформенную часть и под Windows писал на C++, под Mac — на Objective-C. Это было интересно, но сложно :) Помню, как в первые годы много раз что-то «ломал», но до релиза успевал пофиксить.
В 2008 году мы с коллегами начитались о Скраме и решили внедрить гибкое управление проектами и у себя. Сначала руководители компании отнеслись к этой идеи настороженно, но все же пригласили в офис тренера, который рассказал о возможностях Agile. После этого нам дали зеленый свет. Так к моим обязанностям по разработке добавилась еще и работа Скрам-мастера.
В 2011 году в CS Odessa начались задержки с выплатой зарплат, и мне пришлось подыскать другую компанию. И снова нашел работу по рекомендации: мой друг порекомендовал меня в Provectus. Сейчас это одна из крупнейших аутсорсинговых компаний Одессы, но тогда бизнесу не было и года. Я попал в новый отдел мобильных приложений, «перепрыгнул» с macOS на iOS. Опыта разработки под iOS у меня не было, да и вообще айфоны на тот момент только несколько лет как появились. Так что пришлось осваивать новый стек на ходу.
Моя должность в Provectus звучала как Senior Mobile Developer / Project Manager: кроме разработки, я напрямую общался с заказчиками и отвечал за то, чтобы клиенты были счастливы и продолжали пользоваться нашими услугами. С точки зрения бизнеса было нерентабельно нанимать отдельного PM’а, так как проекты и команды были маленькими. В свою очередь, мне было интересно совмещать две разные роли и развивать одновременно технические и софт скиллы, участвовать во всех фазах создания продуктов.
В
Примерно в это время мой коллега ушел в молодой стартап Looksery, в котором разрабатывали селфи-фильтры для трансформации изображения лица пользователя в режиме реального времени. Спустя год они стали искать человека, который может совмещать разработку и работу с клиентами, — и пригласили меня. Стартап показался мне перспективным. Я пообщался с СЕО, поверил, что продукт взлетит, и согласился. Как выяснилось позже, не ошибся.
К команде Looksery я присоединился в декабре
Роль и обязанности в Snap
До присоединения к Snap в Looksery, как в типичном стартапе, не было четкого распределения ролей, все занимались всем. Я и писал под iOS, и управлял проектом по разработке кастомной версии приложения для клиента.
В Snap я получил должность Technical Program Manager. Так же, как и обычный проектный/программный менеджер, TPM отвечает за то, чтобы проект/программа достигла успеха. Но разница в том, что я работаю с масштабными кросс-департаментными программами, которые нельзя поручить одной команде: в них задействованы специалисты из разных подразделений. Как раз к таким программам и относится создание наших «линз», которые позволяют в онлайн-видеопотоке наложить на лицо пользователя различные визуальные эффекты.
И моя задача — не только планировать ресурсы и сроки разработки, а в целом координировать слаженную работу всех отделов, а для этого нужно понимать техническую сторону. Это важно, чтобы грамотно составлять техническую спецификацию, оценивать сложность задач, разруливать технические сложности, принимать решения насчет того, каким получится продукт, контролировать промежуточные и итоговые результаты.
За пять лет в компании я участвовал в разных внутренних проектах и программах. Начинал с мобильной разработки, позже занялся бизнес-метриками, реализовывал кастомный Jira-воркфлоу по разработке продуктов от бизнес-анализа до имплементации. Сейчас работаю в основном с десктопными приложениями: Lens Studio, в котором создаются наши визуальные эффекты, и Snap Camera, которая позволяет использовать линзы в сторонних десктопных приложениях вроде Zoom или Skype.
Должность TPM меня привлекает тем, что я общаюсь с разными командами и специалистами: разработчиками, тестировщиками, техническими писателями, контентщиками, маркетологами, инженерами техподдержки и так далее. Поэтому вижу продукт как бы «сверху», глобально. Есть люди, которым нравится углубляться в узкую специализацию, а мне, наоборот, интересно расти «вширь», участвовать во всех этапах жизненного цикла продукта, разбираться, как работает вся система целиком.
Код я уже практически не пишу, но если нужно подправить что-то по мелочи, то могу это сделать.
Одна из особенностей работы в американской продуктовой компании — освоиться с разницей менталитетов. На момент, когда мы вливались в Snap, я уже бывал в командировках в Кремниевой долине и имел представление о рабочих подходах американцев, но некоторым нашим ребятам сначала было непривычно. К примеру, в США программисты смотрят на написание кода в более широком разрезе: стараются понять, во что выльется разработка той или иной фичи, как это повлияет на бизнес.
А у нас многие разработчики думают только о коде, все остальное их особо не интересует. Это отражается даже в подходах к собеседованиям: если у нас принято гонять кандидата по технологиям, то в США могут не задать ни одного вопроса по стеку, а спрашивать о системном дизайне, алгоритмах, давать задания на софт скилы: «А как бы вы поступили в такой-то ситуации?» и так далее.
Мне нравится, что Snap дает возможность развиваться в самых разных направлениях. К примеру, компания сотрудничает с волонтерским образовательным проектом GoCamp, и в рамках этой программы я проводил вокршопы по созданию линз в Lens Studio для школьников. В этом году все было дистанционно, по Zoom. Деткам понравилось, и, думаю, для них это неплохая практика, чтобы потом войти в IT в качестве программиста или дизайнера.
Типичный рабочий день
Я почти каждый день созваниваюсь с коллегами из Лос-Анджелеса, а потому мой рабочий день сдвинут на вторую половину дня. Утро посвящаю личным делам: провожу время с семьей, занимаюсь спортом, просто отдыхаю. Могу разве что проверить рабочую почту, чтобы убедиться, что все хорошо, ничего не «горит».
11:00. Начинаю работать. Конкретные задачи зависят от этапа проекта. Например, составляю спецификацию, анализирую метрики продукта, помогаю с настройкой Jira, составляю план реализации функциональности, общаюсь с пользователями продукта. Также провожу митинги с украинскими командами: раньше это были живые встречи, а с началом карантина — видеозвонки. Обсуждаем текущие рабочие вопросы: как реализовать очередную фичу и так далее.
16:00. Делаю большой перерыв: выхожу на улицу, переключаюсь. Заметил, что если работать без отдыха, то к вечеру продуктивность сильно падает.
18:00. Примерно с этого времени «просыпаются» наши американские коллеги, и мы проводим два-три созвона. Обсуждаем текущие вопросы реализации функциональности. Это гораздо быстрее, чем по почте или в чатах. Письменный ответ можно ждать полдня из-за временной разницы, а устно можно сделать много циклов «вопрос — ответ — следующий вопрос, вытекающий из ответа».
21:00. Как правило, примерно в это время заканчиваю работу. Бывает, что нужно обсудить какие-то срочные вопросы, тогда приходится засидеться, но овертаймы случаются нечасто.
Этот план дня — очень приблизительный. На уровне компании у нас нет определенного графика работы и учета часов: важно, что ты сделал, а не сколько времени отработал. Поэтому я ориентирую свое расписание на рабочие встречи и звонки, то есть на ситуации, когда надо быть на связи. В остальном могу позволить себе гибкость: стараюсь держать work-life balance. Например, социальная жизнь происходит обычно ближе к концу дня, поэтому стараюсь в неделе освобождать несколько вечеров под общение с семьей и друзьями.
С началом карантина мы работаем удаленно. Структура моего рабочего дня мало изменилась. На дорогу в офис и домой я и раньше тратил мало времени: благодаря своему вечернему графику мне не приходилось стоять в пробках в утренний и вечерний часы пик. Плюсы работы дома — в том, что в течение дня можно подзарядится общением с любымими людьми. Пару раз мой трехлетний сын попадал на видеозвонки с коллегами из Америки, когда неожиданно забегал в комнату. Но все относятся к таким инцидентам с пониманием и юмором.
В целом, пожалуй, работать в офисе мне комфортнее, чем из дома. Во-первых, при личном общении намного быстрее и проще решить какие-либо вопросы, чем по видеозвонкам. Во-вторых, офис дает социализацию, ты постоянно общаешься со множеством людей. При удаленке, конечно, тоже можно видеться с друзьями, но все-таки каждый день это делать не получается. И, в-третьих, при работе в офисе проще разграничить рабочие дела и отдых.
К тому же одно дело — просто работать удаленно, другое — делать это в одной квартире с маленьким ребенком, когда детские сады закрыты :) Мы помогли родителям достроить частный дом и пока что сами туда переселились: теперь и мне есть где уединиться для работы, и сыну хватает места побегать.
Инструменты и продуктивность
Для меня продуктивность — это не способность работать много, а умение добиться результатов, которые приносят пользу бизнесу. Я стараюсь фокусироваться на достижениях, которыми потом могу гордиться. К примеру, для разработки это означает не просто написать отличный код на C++ («что я делал»), а добиться того, что приложение стало запускаться в три раза быстрее («что я сделал»).
Я планирую свои цели на день — определяю, чего хочу добиться за сегодня. Например: выбрать стратегию реализации какой-то фичи, написать новый технический документ для команды, спланировать тикеты на релиз.
Затем работаю по технике Pomodoros. Она названа в честь кухонного таймера в форме помидора, и идея в том, чтобы не отвлекаться ни на что постороннее, пока работает таймер. Обычно я беру небольшой промежуток времени —
Конечно, я не могу разделить весь рабочий процесс на
Отдельная сложность — сделать так, чтобы во время «помидора» тебя никто не отвлекал. На прошлой работе ко мне каждые 10 минут забегали коллеги, что-то спрашивали — и это очень отвлекало. Однажды мне подарили лампочку в форме клавиши Delete, и я придумал лайфхак. Написал большими буквами табличку, что если лампочка горит, то у меня видеозвонок и я сейчас не могу уделить время коллеге. Это сработало: ребята видели, что я занят, и заходили позже.
Сначала я включал лампочку только во время настоящих видеозвонков, но потом начал это делать и просто во время сфокусированной работы. Дни стали более продуктивными :) А коллеги обнаружили, что многие вопросы, с которыми они раньше приходили лично, можно писать по почте или в чатах — и это работает не хуже :)
Что касается почты и чатов: как я уже упоминал, просматриваю все уведомления вне «помидоров». В первую очередь читаю сообщения, которые написали мне напрямую или где меня тегнули. Все остальное просматриваю один-два раза в день, этого вполне достаточно.
Свои цели на неделю записываю в отдельный ежедневник. Делю их на несколько категорий: рабочие, личные, спортивные, общее развитие и так далее. К рабочим целям может относиться, например, освоение какой-то новой технологии. Из-за того, что я сейчас почти не программирую по работе, мне сложнее оставаться на гребне волны, приходится выделять на это отдельное время. Цель из категории «общее развитие» — это умение писать, внятно выражать свои мысли в письменной форме. Мне кажется, очень недооцененный в наше время навык. Для его развития могу поставить такую задачу: написать пост в блоге.
Раз в неделю выделяю отдельный «помидор» для самопроверки: как удалось продвинуться по предыдущим целям и какие поставить новые.
Для управления «помидорами» использую приложение Be Focused. Для списка задач раньше пользовался Wunderlist, но мне не понравились его последние обновления, и я переключился на Notion. Там можно создавать и ToDo-листы, и таблицы для общего планирования, и текстовые документы — очень удобно.
Еще хочу заметить, что для хорошей работы нужен хороший отдых. Я люблю путешествовать, посетил более 40 стран. Буквально перед карантином успел побывать в Перу и Боливии. Также занимаюсь open water плаванием и кайтсерфингом — это драйвовый спорт, которым, в отличие от обычного серфинга, можно отлично заниматься в Украине.
Книги и самообразование
Как человеку, который развивается скорее «в ширину», чем «в глубину», мне сложно получать абстрактную информацию в вакууме. Гораздо эффективнее ставить конкретные цели — не просто выучить С++ за 21 день, а сделать такое-то приложение. И уже под эту задачу выбрать, что именно следует подучить и по каким источникам.
Если нужно разобраться в области, о которой я не знаю ничего, то есть смысл почитать обзорную книгу. Но в большинстве случаев я не читаю
Конечно, лучше всего, когда можно учиться прямо по ходу работы. Когда рабочие задачи требуют от тебя разобраться в чем-то новом. У меня чаще всего так и получается: как TPM я нередко переключаюсь с одной области на другую, ранее мне неизвестную. Но тут важно не создавать такие ситуации искусственно: например, у разработчиков иногда есть искушение переписать проект на новом фреймворке только чтобы «поиграться» с ним, а не ради целей бизнеса.
Поэтому, если в работе нет осмысленных задач, связанных с изучением нового, лучше выделить отдельное время на самообразование вне работы. Чтобы держать себя в тонусе по программированию, я захожу на HackerRank. Это помогает не терять навыки и даже подучивать языки. Например, я часто использую Python, но никогда не учил его структурно — и на HackerRank постепенно восполняю пробелы и разбираюсь, как можно решать ту или иную задачу еще более эффективно.
Что касается управления проектами, у меня нет какой-то одной любимой книги, которая бы полностью охватила эту область. Поэтому, мне кажется, важно осваивать тему по кусочкам: как работает человеческий мозг, как выстраивать отношения с людьми и так далее. Могу посоветовать такие книги:
- «Джедайские техники» Максима Дорофеева — интересная и полезная книга для понимания того, как работает мозг (к тому же автор около 15 лет работал в области разработки ПО, поєтому это книга от разработчика к разработчикам);
- «Поток» Михая Чиксентмихайи — о состоянии, когда человек полностью поглощен интересным делом, в котором максимально реализует свой потенциал;
- «7 навыков высокоэффективных людей» Стивена Кови — системный подход к определению жизненных целей и приоритетов человека.
В плане бизнес-литературы мне нравится сервис Blinkist — это выжимки из книг без «воды». Такие конспекты позволяют сэкономить время и взять только самое важное.
Также я слежу за новыми статьями на DEV, «Хабре», а также блогами известных компаний вроде Slack.
Ретроспектива и планы
Если б было можно дать совет себе на заре карьеры, то порекомендовал бы уделять больше времени нетворкингу. Сейчас это слово многим приелось, но общение с людьми, которые чего-то добились в отрасли, очень расширяет кругозор. К примеру, со стороны может показаться, что создать стартап-единорог — это раз плюнуть, и только инсайдер расскажет все нюансы. Поэтому важно не бояться выходить из зоны комфорта, активнее участвовать в общественной жизни и не бояться новых знакомств — более того, самому их инициировать.
Что касается советов начинающим специалистам, то главное и ключевое для отрасли — знать английский. Это не технический навык, но без языка не получится ничего. Важно не только читать книги в оригинале, но и уметь разговаривать, понимать чужую речь. Это требуется для работы во всех международных компаниях.
Мне интересно создавать продукты и видеть, как они «взлетают» на рынке, как люди ими пользуются. К тому же нравится работать в индустрии, где все очень быстро меняется, ощущать этот драйв. Моя роль позволяет это делать, так что в будущем планирую продолжать текущие проекты, а также брать на себя еще более масштабные и сложные задачи.