В начале 2015 года разработчица Кэтлин Гадд пришла в Google. Ее взяли в команду V8 как одного из первых авторов спецификации к WebAssembly. В этой статье она расскажет часть истории о том, что по итогу пошло не так и нанесло непоправимый урон ее здоровью.
Передаем слово Кэтлин.
Редакция Highload публикует перевод материала.
Переведено бюро переводов в Киеве «Профпереклад».
Надеюсь, что мой рассказ научит людей распознавать токсичную культуру на рабочем месте. Или хотя бы поможет новым сотрудникам выстроить карьеру в Google получше.
Любая история о WebAssembly будет предвзятой — история самого проекта очень непростая. Мой рассказ — не исключение. Постараюсь изложить как можно точнее, несмотря на плохую память.
До прихода в команду V8 я несколько лет проработала в поддержке транспайлера, конвертирующего .NET-приложения в эффективный JavaScript. Проект запустили одновременно с Emscripten — именно это приложение сначала стало стандартом, а потом вдохновило команду на создание WebAssembly. Мне повезло поработать с создателем asm.js Элоном Закаи (Alon Zakai), и я многому у него научилась. Благодаря этому опыту я идеально подходила в команду WebAssembly.
Несмотря на хроническое заболевание, последние лет двадцать мне кое-как удавалось сохранять продуктивность, во многом благодаря моим коллегам.
Тем не менее, Google — худшая компания, в которой мне довелось работать. Это место буквально повредило мой мозг.
Если вы из-за работы не можете спать, ежедневно находитесь на грани срыва или постоянно сомневаетесь в собственной ценности — послушайте моего совета: ищите новую работу.
У WebAssembly был грандиозный потенциал. Mozilla и Google вкалывали изо всех сил, чтобы asm.js стал механизмом, обеспечивающим работу приложений в сети. Они по-своему решили большинство технических проблем, но стало ясно, что некоторые проблемы слишком трудно устранить. Так началась работа над WebAssembly.
Нужно было изучить сильные стороны asm.js и одновременно разобраться со слабыми. А затем создать спецификацию, которую можно легко реализовать в нынешних runtime JavaScript с использованием их генераторов кода, debugging и прочей инфраструктуры.
Я присоединилась к этому процессу одной из первых, и это было очень интересно. У меня был опыт работы с веб-платформами, но в написании спецификаций есть свои уникальные сложности.
Все были одновременно и менеджерами, и юристами, и программистами. И Д.Ф. Бастьен (JF Bastien), и Люк Вагнер, и Элон Закаи, и Бен Титзер, и многие другие усердно трудились, создавая основу того, что потом будут использовать миллиарды людей.
Когда работаешь над продуктом для миллиардов пользователей, у которых не будет других вариантов, это может вызвать некоторый стресс. В истории развития веб-технологий полным-полно примеров паршивых API, плохо продуманных спецификаций и огромных дыр в системах безопасности. То, что один программист склепает за неделю, может в будущем потребовать многих лет инженерной разработки.
Для WebAssembly мы просто не могли и не собирались выпускать полуфабрикат. Как браузер-разработчики, мы все понимали, какую цену придется заплатить за плохую спецификацию.
Этот стресс и важность проекта и были причиной постоянных неурядиц, повышая токсичность среды. Многие обсуждения дизайна стали слишком бурными. Два эксперта одной сферы, но из конкурирующих компаний, не могли прийти к согласию. Каждый был абсолютно уверен в том, что именно его мнение является единственно правильным.
Совещания срывались — не успеешь опомниться, как уже провел в кабинете безрезультатно целый час. В здоровой среде у такой команды есть менеджеры проекта и лиды, они сразу распознают проблему и пытаются ее смягчить, чтобы команда могла работать дальше.
У нас не было менеджера. Мы знали, что он нам нужен, и даже пытались его заполучить. В лучшем случае такой менеджер вызывался поработать по совместительству и недолго, а потом переходил в другой проект. Из-за этого у нас возникали сложные социально-организационные проблемы, и решать их приходилось самим инженерам, не имеющим подобного опыта. А работы у них и так было предостаточно.
В итоге мы не смогли вовремя представить продукт с минимальным функционалом, качество спецификации было низким, а авторы просто разбегались. Подобная ситуация в истории продуктов с открытым кодом не уникальна, но наблюдать ее все равно было грустно.
Дальше — хуже. Наши лиды были загнаны как лошади — у них попросту не было сил что-то менять. Для процветания любой команды требуется лидер-эксперт, а ему — поддержка людей, которым они подотчетны. Иначе они попросту не смогут сделать все необходимое для процветания. У наших руководителей не было такой поддержки.
Команде V8 в целом не повезло — мы работали под руководством лидера Chrome, человека, которому было на все наплевать. У него до сих пор едва ли не самый низкий рейтинг во всей компании.
За свою карьеру я не раз видела плачущих менеджеров, и здесь это тоже случалось.
Когда команде не хватает ресурсов, а лидеры не контролируют планирование, ресурсы и расписание, даже мелкая проблема может быстро стать серьезной. Заинтересованные люди из других проектов и отделов компании влезли в проект, надеясь применить собственный опыт для «решения». Или же просто поставить в своих резюме галочку — вот, мол, над каким крутым проектом я работал. В этом и была проблема.
В итоге спецификация WebAssembly строилась на мутной и совсем неподходящей технологии. Из-за этого людям было сложно внести свой вклад, и многие участники группы остались недовольны. В конце концов, спецификацию, конечно, причесали до нужного уровня и выпустили, но это обошлось недешево.
Чуть выше я писала, что WebAssembly повредила мой мозг — абсурдное утверждение, но, увы, правда. Два года работы в Google сопровождались постоянным стрессом. Мне пришлось неофициально выступить менеджером проекта, помогать вести совещания, документировать решения и при этом еще и разбираться с враждебно настроенными коллегами.
Спасибо другим участникам команды, они помогали мне решать эти вопросы, но это все равно сказалось на всех нас. Со временем я отметила потерю среднесрочной и краткосрочной памяти.
Дошло до того, что порой я не могла найти свою машину в гараже или забывала целые разговоры. Приходилось все время писать самой себе подробные записки.
В результате врачи силой отправили меня в отпуск по состоянию здоровья и настаивали на увольнении. Я последовала их совету, но гораздо позже, чем следовало.
К концу этого процесса я решила кое-что сделать. В прошлом я уже так делала, хоть и никогда не срабатывало: я договорилась о встрече с одним из руководителей компании. Крайне не рекомендую такой вариант, но каждой команде требуется защитник. У нас его не было, и мне показалось, что это последнее, что еще можно сделать. Встреча прошла плохо.
Моей первой оплачиваемой работой была работа гейм-дизайнера в студии по разработке игр в начале 2007 года. Я быстро вжилась в роль, которая определила всю мою карьеру – роль tool-программиста. Я сосредоточилась на том, как помочь другим выполнять свою работу, как понять, что именно вызывает у них стресс и мешает двигаться дальше.
Часто это неблагодарная работа, но она очень важна. Мне повезло с коллегами и лидами, которые увидели ценность этой работы и поддержали меня. Моя работа в той студии закончилась, когда я встретилась с единственным оставшимся основателем компании. Я объяснила, что проект отстал от графика, что люди стрессуют и выдают низкое качество работы. Объяснила, почему это происходит и как это решить, чтобы сэкономить компании деньги.
Основатель заявил, что ничего менять не будет, а команде нужно солгать, чтобы они продолжали вкалывать. В итоге продукт выпустили с опозданием в несколько лет.
Любое токсичное место, где я работала, обычно было результатом плохой работы руководства. Этот случай не стал исключением. Здесь я тоже объяснила одному из руководителей Google, почему у проекта WebAssembly возникли проблемы. Что ему не хватает поддержки со стороны организации, потому что люди просто уходят с проекта. Он согласился с моей оценкой, а затем сообщил, что ничего менять не будет. В итоге команда все поменяла самостоятельно.
Моя работа в Google завершилась тихо и без всяких драм. Я вернулась из отпуска и обнаружила, что команду WebAssembly фактически распустили — кто уволился, а кто сбежал в другие отделы. Мой новый менеджер сообщил, что теперь я буду работать над незнакомой мне частью Chrome с совершенно другими людьми.
Я написала заявление, прошла короткое собеседование с объяснениями причин ухода. Последний день работы был примерно за неделю до даты, когда я могла бы приобрести акции компании по льготной схеме, как ее сотрудник (упс!).
Следующие пару лет я была безработной, восстанавливала здоровье и иногда писала код. Сейчас я могу с радостью заявить, что на данный момент я частично восстановилась и получаю деньги за работу над продуктом с открытым кодом. Но я уже никогда не буду прежней.
Надеюсь, вы никогда не испытаете на себе то, что пережила я, и сможете построить успешную карьеру своей мечты.
Автор: Кэтлин Гадд
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…