Мы не всегда занимаемся разработкой программного обеспечения!

Я проработал в Facebook инженером-программистом четыре года.

Но я провел почти год в своей последней команде, не отправив ни единой строчки кода. По сути, я выполнял работу менеджера по продукту и технического руководителя в одном лице.

Я разговаривал с пользователями, разъяснял проблему, которую мы хотели решить, определял показатели успеха, проводил мозговой штурм и расставлял приоритеты идей, формировал дорожную карту, согласовывал с другими командами, определял объем работы и управлял проектами.

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

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

Моя работа перестала приносить удовольствие, и я изрядно выгорел.

Так что я сменил команду, и теперь моя работа очень сильно изменилась.

Это то, что мне очень нравится в работе в Facebook. Работа, которую на самом деле выполняют команды разработчиков программного обеспечения, очень сильно различается.

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

Точный баланс зависит только от вашей команды и вашей роли в команде. И что самое замечательное, вы можете выбрать и то, и другое!

Продукт

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

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

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

Инфраструктура

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

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

По сравнению с инженером по продукту добиться успешных результатов может быть проще. Обычно проблемы инфраструктуры определяются лучше, и вы можете находить их решения более рационально. А как разработчик вы можете лучше сопереживать своим клиентам. Поскольку они ваши коллеги, вы можете мгновенно получить от них устную обратную связь. И если они построены на основе ваших API, им может быть сложно перейти с них, поэтому инфраструктура, как правило, становится более устойчивой, чем потребительские продукты. Эти различия также объясняют, почему многие основатели предпочитают создавать компании B2B, а не потребительские.

Рейтинг

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

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

Однако по сравнению с обычными продуктовыми командами добиться успешных результатов может быть проще. Команды, составляющие рейтинг, обычно просто берут уже уже успешный продукт или функцию и улучшают их с помощью машинного обучения. Таким образом, снижается риск создания чего-то, чего пользователи принципиально не хотят. В масштабе Facebook существует множество успешных продуктов, которые можно улучшить с помощью машинного обучения, и множество данных для обучения высококачественным моделям.

Так что возможностей для воздействия много.

Вот полная разбивка различий между группами по продукту, инфраструктуре и ранжированию:

За четыре года работы в Facebook я работал со всеми тремя типами команд. Моя текущая команда создает интерфейсную структуру для магазинов Facebook. Это сочетание продуктов и инфраструктуры, и мне это нравится, потому что я извлекаю лучшее из обоих миров.

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

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

Зрелость

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

Организационные трения

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

Техническое трение

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

И когда вы, наконец, начнете писать код, вы должны убедиться, что он совместим со всеми возможными состояниями каждого смежного продукта. Эта сложность не только замедляет разработку продукта. Это делает продукты более подверженными ошибкам после их запуска. Так что вам тоже придется тратить больше времени на техническое обслуживание.

Возбуждение трение

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

Технический руководитель

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

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

Вы несете ответственность за общее техническое руководство и работу команды. Это означает, что вы не можете просто работать над проектами, которые кажутся вам наиболее интересными или интересными. На самом деле неприятная техническая работа, как правило, ложится на вас.

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

Организационная работа по согласованию людей внутри команды и между командами партнеров тоже может выпасть на вас. Это может потребовать много времени, особенно в зрелой части компании.

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

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

Заключение

Сегодня моя работа сильно отличается от работы несколько месяцев назад.

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

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

Я работал в Facebook Ads - зрелой части компании - где столкнулся с множеством организационных и технических трений. Это означало еще меньше возможности писать код.

Моя работа перестала быть веселой, и я очень сильно выгорел.

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

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

Спасибо, что дочитали до этого места! Если у вас есть какие-то мысли, я хотел бы их услышать.