Я пришла в Google в начале 2015 года, чтобы работать в команде V8, и была одним из первых авторов спецификации WebAssembly. В этой статье я частично расскажу историю того, что не так было с этим процессом и как он нанёс мне непоправимый урон. Надеюсь, эта история поможет людям распознавать токсическую культуру на рабочем месте, или позволит новым сотрудникам построить более удачную карьеру в Google. Любая история WebAssembly была бы подвержена искажениям из-за сложной судьбы проекта, и моя — не исключение.
На момент присоединения к команде V8 я уже несколько лет занималась поддержкой транспилятора, преобразующего приложения .NET в эффективный JavaScript. Проект начался в одно время с Emscripten — приложением, превратившимся в стандарт и ставшим источником вдохновения для создания WebAssembly. В то время мне удалось поработать с создателем asm.js Алоном Закаем и я многому у него научилась. Благодаря этому опыту я стала подходящим кандидатом для команды WebAssembly.
На протяжении двух десятков лет мне удавалось оставаться продуктивной, несмотря на хроническое заболевание, и я многим обязана за это людям, с которыми работала. Тем не менее, Google — худшее место из тех, в которых мне довелось поработать, и он вполне в буквальном смысле вызвал у меня повреждения мозга. Если из-за работы ты плохо спишь, каждый день ощущаешь, что находишься на грани или постоянно сомневаешься в собственной ценности, то лучше подыскивать новую работу.
WebAssembly имеет огромный потенциал. Mozilla и Google упорно работали над тем, чтобы превратить asm.js в инструмент, позволяющий запускать любое приложение в вебе, и преодолели на этом пути многие препятствия. Однако стало очевидно, что некоторые проблемы устранить слишком сложно, поэтому начался процесс разработки WebAssembly: он должен был позаимствовать сильные стороны asm.js и устранить его слабые места, а также создать спецификацию, которую легко реализовать в существующих средах выполнения JavaScript, используя их генерацию кода, отладку и прочую инфраструктуру.
Участие в процессе разработки спецификации в качестве одного из первых контрибьюторов было захватывающим занятием. Хотя у меня был опыт работы с веб-платформой, создание спецификации ставило перед нами уникальные задачи, и весь комитет должен был одновременно работать проект-менеджерами, представителями проекта и программистами. Такие люди, как Дж. Ф. Бастиен, Люк Вагнер, Алон Закай, Бен Титцер и бесчисленное множество других упорно работали над созданием фундамента того, что будет использоваться миллиардами людей.
Однако если вы создаёте продукт, которым будут пользоваться миллиарды, то это приводит к небольшому стрессу. История веба усеяна плохими API, непродуманными спецификациями и запутанными кучами уязвимостей. То, что программист создаст за неделю, может в будущем привести к тратам десятков лет времени инженеров. WebAssembly не мог быть выпущен как недоделанная или непродуманная спецификация, потому что мы были разработчиками браузера и понимали цену, которую за это заплатит каждый.
Стресс и важность проекта были основными причинами наших трудностей и токсичности окружения. Многие обсуждения архитектуры становились ожесточёнными, и два специалиста в своих сферах из конкурирующих корпораций не могли прийти к согласию, будучи каждый убеждёнными в собственном обоснованном мнении. Совещания проходили вкривь и вкось, и мы не успевали замечать, как целый час не могли прийти к какому-то результату. В здоровом окружении у команд есть проект-менеджеры и техлиды, замечающие эти проблемы и работающие над их устранением, чтобы процесс мог продолжаться.
У нас не было проект-менеджера. Мы знали, что он нам нужен, и пытались его заполучить, но в лучшем случае у нас на короткое время появлялся менеджер-доброволец по совместительству, который потом уходил на другие проекты. Из-за этого сложные социальные и организационные проблемы приходилось решать перерабатывающим инженерам, имеющим в их решении мало опыта. Я уверена, что в конечном итоге выпуск MVP спецификации был отложен, качество снизилось, а контрибьюторы разбежались. Это неуникальная история для open source, но за ней всё равно печально наблюдать.
Ещё хуже то, что наши техлиды перерабатывали и им не хватало сил на создание изменений. В любой команде специалисты-руководители должны преуспевать и получать поддержку от вышестоящего руководства, чтобы они могли делать то, что необходимо. У нашего руководства не было такой поддержки. Всей команде V8 не повезло: ей приходилось отчитываться перед руководителем организации Chrome — беззаботным человеком, который по-прежнему имеет один из самых низких рейтингов популярности во всей компании. За свою карьеру я много раз видела, как менеджеры плачут, и один из таких случаев был в этом коллективе. Менеджер никогда не должен быть вынужден спрашивать, не трус ли он, но такое тут случалось.
Когда команде не хватает ресурсов, а руководителям не хватает контроля за планированием, ресурсами и графиками, любая мелкая проблема быстро усугубляется. Заинтересованные люди из разных отделов компании вкладывались в этот проект, надеясь применить свой опыт к его «починке» или сделать себе имя, записав крупный проект в своё резюме. Это было проблемой. В конечном итоге спецификацию WebAssembly построили на основе запутанной и неподходящей технологии, что усложнило многим людям работу над ним и разочаровало многих членов комитета. В итоге спецификацию выпустили в отличном состоянии, но пришлось заплатить цену за проблемы, созданные этим.
В начале поста я сделала абсурдное заявление о том, что WebAssembly вызвал повреждение моего мозга. К сожалению, это так. Два года работы в Google я находилась в постоянном стрессе, выполняла роль неофициального проект-менеджера, помогая проводить совещания и принимать решения по документам, имея дело с иногда враждебными коллегами. К счастью, другие члены команды тоже упорно работали над устранением тех же проблем, но это всё равно нанесло урон. Постепенно я медленно теряла свою промежуточную и кратковременную память, дойдя до того, что иногда не могла найти машину в гараже или забывала целые беседы. Мне приходилось вести очень подробные записи. В конечном итоге мои врачи прописали мне вынужденный отпуск по состоянию здоровья и настоятельно рекомендовали увольняться; я последовала этому совету, но недостаточно быстро.
Ближе к концу процесса я решила сделать то, что делала в прошлом, хотя это никогда не срабатывало: запланировала совещание с руководителем. Я не рекомендую этого делать, но каждой команде нужен сторонник, а у нас его не было, поэтому это была вынужденная мера, на которую я пошла в последнюю очередь. Совещание оказалось ужасным.
Моей первой оплачиваемой должностью стала работа гейм-дизайнером в 2007 году, и я быстро перешла на должность, определившую мою дальнейшую карьеру: программист инструментов. Я сосредоточила свою жизнь на помощи другим людям в выполнении их работы, разбираясь в том, что вызывает у них стресс и мешает в процессе. Часто это неблагодарная работа, но она необходима, и мне повезло с коллегами и техлидами, видевшими в ней ценность и поддерживающими меня. В конце своей работы в игровой студии я встретилась на совещании с единственным оставшимся основателем компании и сказала, что проект отстаёт от графика, команда находится в стрессе, а качество нашей работы низко. Я объяснила, как мы можем начать решать эти проблемы и сэкономить деньги компании. Основатель сказал, что мы не будем ничего менять и станем врать команде, чтобы она продолжала работать в кранче; эта игра была выпущена на много лет позже.
Каждое токсичное рабочее окружение, в котором я находилась, обычно было результатом плохого руководства и на этом месте всё было так же. Здесь я тоже объяснила руководителю из Google, что проект WebAssembly страдает без поддержки от его организации и что люди разбегаются из проекта. Он согласился с моей оценкой, а затем сказал, что ничего не изменится. В конечном итоге, команда начала менять всё сама.
Мой срок работы в Google завершился тихо и без драм. Я вернулась из своего вынужденного отпуска по болезни и обнаружила, что команда WebAssembly, по сути, распущена — многие уволились, другие разбежались по другим частям компании. Мой новый менеджер сообщил, что теперь я будут работать над неизвестной мне частью Chrome с другими людьми. Я отдала своё заявление и поучаствовала в коротком собеседовании в связи с увольнением, и последний день моей работы был примерно за одну неделю до моей следующей даты вестинга прав на акции компании (не повезло). Пару следующих лет я не работала, мы с врачами трудились над восстановлением моего здоровья и время от времени я писала код. Счастлива сообщить, что уже частично восстановилась и мне платят за работу над open source, но я никогда не буду прежней.
Надеюсь, вы никогда не столкнётесь с подобным, будете развиваться и строить карьеру своей мечты.