Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
4 октября 2021 года — последний день работы одного из основателей Wasmer в компании. Wasmer — стартап, который разрабатывает очень популярную одноимённую среду выполнения WebAssembly. Речь пойдёт о том, чего автору статьи удалось достичь за время работы в компании.
Это не технический обзор — скорее, эмоциональный. Статья также о том, что вынуждает автора покинуть компанию. Автор считает, что его откровенность может помочь другим избежать погружения в тот кошмар, который пришлось пережить команде Wasmer. Материалом делимся к старту курса по Frontend-разработке.
Из ничего — конфетка
Я пришёл в Wasmer в марте 2019 года, когда стартапу было три месяца. Сначала в мои обязанности входило написание и улучшение среды выполнения, а также написание её многочисленных реализаций — способов интегрировать Wasmer в различные технологии, чтобы WebAssembly работал везде.
Могу с уверенностью сказать, что моя работа увенчалась успехом. Я многому научился, работал над большим количеством проектов и технологий, решил много проблем, сотрудничал со многими людьми — и во всех этих делах мне сопутствовала страсть.
На момент написания статьи у Wasmer наблюдался невероятный рост. Всего за 2,5 года среда заполучила более 10 с половиной тысяч звёзд на Github и стала одной из самых популярных сред выполнения WebAssembly в мире. Её используют Confio, Fluence Labs, HOT-G, Brave, Google, Apple, SpaceMesh, Linkerd, SingleStore, CleverCloud и Kong. И это лишь малая часть. Есть и компании, использующие Wasmer в очень важных областях.
Большая часть моей работы проходила в среде выполнения Wasmer. Я как второй участник проекта работал над всеми элементами: API, C API, компиляторами, ABI (в основном — WASI), движками, промежуточным ПО и виртуальной машиной, то есть самым низкоуровневым, базовым слоем среды выполнения.
Среда выполнения предоставляет обширный функционал. Её мощь впечатляет, я говорю это непредвзято и уважительно. Конечно, не всё идеально, но я делал всё возможное, чтобы создать действительно удобную среду обучения с важной документацией и набором примеров, иллюстрирующих многочисленные функции. Я твёрдо убеждён, что это в значительной степени способствовало популярности Wasmer. Приведу самые заметные реализации, созданные мной:
wasmer-c-api — C API для Wasmer. Это часть среды выполнения, она полностью написана на Rust. Документация, примеры на C — всё максимально проработано, чтобы добиться наилучшего пользовательского опыта. Авторы этого проекта — Марк Маккаски и я.
wasmer-python — среда Wasmer для Python. На момент написания статьи она установлена более 5 миллионов раз. Я учитываю пакеты компилятора, например wasmer-compiler-cranelift и т. д. Эта среда с около 1300 [уже 1400] звёзд на Github; количество её загрузок за месяц — около 300 000 в месяц, и оно продолжает расти! Код написан на Rust и использует потрясающий проект pyo3.
wasmer-go — Wasmer для Go. Экосистема этого языка устроена так, что общее число загрузок оценить трудно. Но у нас около 60 000 загрузок в месяц на Github (форки проекта не в счёт) и 1600 звёзд [уже 1700]. Для привязки к API на C код использует cgo. Почти все использующие WebAssembly блокчейн-проекты применяют wasmer-go. Я не ожидал такой популярности.
wasmer-ruby. Она не такая популярная, как другие, но тоже проработана и находит своё место в экосистеме Ruby. Код написан на Rust и использует потрясающий проект rutie.
Не буду подробно описывать все проекты, но есть также wasmer-php, wasmer-java, wasmer-postgres… Благодаря разработанным нами C API и API среды выполнения Wasmer программисты по всему миру смогли создать гораздо больше реализаций для C#, D, Elixir, R, Swift, Zig, Dart, Lisp и других языков. Вот какие заметные, интересные проекты есть ещё:
sonde-rs — библиотека компиляции зондов поиска неисправностей в библиотеку на Rust;
llvm-custom-builds — песочница для создания пользовательских сборок LLVM различных платформ;
loupe — набор инструментов анализа и профилирования кода на Rust;
wasmer-interface-types — нестабильная интерактивная среда, библиотека, которая реализует интерфейсные типы WebAssembly;
inline-c-rs, чтобы писать код на C внутри Rust;
файловая система в памяти, она действует аналогично std::fs.
Итак, я многому научился. Но «синдром самозванца» был сильно заметен: я постоянно пытался делать то, чего не знал. В Wasmer пробовать что-то в первый раз — это часть рутины. Но именно это было энергией, что подпитывала мою страсть.
Я также экспериментировал с этими проектами, иногда в двух шагах то релиза:
Unikernels. Это было очень весело: с помощью модуля WebAssembly и файловой системы мы создали выполняющий заданную программу unikernel;
Я работал с синтаксическим анализатором, чтобы написать максимально быстрый парсер на WebAssembly. Он так и не был выпущен;
HAL (слой аппаратных абстракций) ABI для WebAssembly, чтобы очень легко запускать WebAssembly на небольших чипах (технологии Интернета вещей);
Проекты для работы с сетью. Расширение WASI для поддержки сетей (сокеты TCP и UDP) с реализацией на Rust, libc и даже Zig! Мы смогли скомпилировать программы на C для WebAssembly (CURL или TCP-серверы, написанные с помощью kqueue или epoll и т. д.) и выполнять их на любых платформах.
Все эти штуки работали. Абсолютно невероятно, что может сделать сегодня WebAssembly! Я всё так же искренне и глубоко верю в эту технологию. И я не один: YCombinator и SpeedInvest тоже верят в Wasmer. Да это просто мечта!
Токсичная рабочая среда
WebAssembly — ничто без сообщества. Не буду называть людей, чтобы не забыть важных персон — все участники усердно работают, чтобы создать нечто новое, особенное, правильное. И Wasmer обрёл успех.
Но среда выполнения Wasmer — ничто без невероятной, чудесной, исключительной команды разработчиков. Я перечислю их в произвольном порядке:
Лахлан Снефф,
Марк Маккески,
Жюльен Бьянки,
Ник Левики,
Хэйян Чжоу,
Маккензи Кларк,
Брэндон Фиш.
Все они без исключения вложили много сил в этот проект. Он такой благодаря им, а также тем участникам проекта, которых мы имели честь принять в команду. Люди со стороны Open Source тоже напряжённо работали и радовали нас. Они достойны уважения.
Однако положение дел внутри компании было совсем иным. Все упомянутые выше сотрудники покинули её. Почти все — из-за выгорания, конфликтов или серьёзных разногласий с руководством. Я тоже ухожу из-за серьёзного выгорания. Хотелось бы рассказать о причинах:
Я начинал инженером. Мне очень нравится писать код и решать проблемы. В Wasmer я нашёл место, где можно многому научиться и выразить свою увлечённость. На нас оказывалось большое давление в основном потому, что у наших «дружелюбных» конкурентов было больше людей, преданных работе над средами выполнения. А также больше денег, больше власти, маркетинг лучше и т. д. Это неизбежные издержки любого стартапа. Они есть всегда, когда конкурируешь с гигантами. И это нормально. Это часть игры.
Мы реализовывали всё больше и больше проектов, всё больше и больше функций и делали это с невероятной скоростью. Появились новые роли: ответственный за релиз, руководитель проекта; больше ответственных за продукт, больше клиентов, с которыми нужно связаться, больше нуждающихся в помощи участников проекта, больше вопросов для рассмотрения, появился автор для блога и т. д. Темп ускорялся слишком стремительно — мы замечали это много раз.
Генеральный директор, Сайрус Акбари, очевидно, испытывал большое давление. К сожалению, это привело к наихудшему из возможных сценариев: микроменеджменту [чрезмерному, постоянному контролю над сотрудниками, не допускающему никакой самостоятельности в принятии решений], к стрессу, давлению, плохому руководству, отсутствию видения компании, отсутствию доверия к сотрудникам, постоянному изменению планов, лжи, секретам и т. д.
У меня как одного из самых старших в компании — имеющего семью с двумя детьми — оказалось, вероятно, побольше «мудрости». Я решил создать безопасное место для сотрудников — место, где они могли бы высказывать свои разочарования, потребности и вместе находить решения. Я стал «доверенным лицом» в компании. Появились новые должностные обязанности, новое давление.
Эпидемия COVID-19. Обучение [детей] на дому. Самоизоляция. Ещё больше микроменеджмента, больше стресса. У Wasmer заканчивались деньги. Я привёл нового инвестора, который спас компанию. Новая должность.
После очень большого количества увольнений — то есть увольнения 85 % команды разработчиков! — я попытался проявлять больше инициативы и взять на себя больше ответственности. В начале 2021 года перед своим уходом я предпринял последнюю попытку спасти компанию от катастрофы. Я не мог себе представить, что оставлю такие блестящие и успешные проекты, и пробовал сделать всё, что было в моих силах.
Затем я стал последним соучредителем Wasmer. Слишком много новых должностных обязанностей: проведение собеседований, отчётность, помощь в составлении планов (мы работали с замечательным человеком, другом и сотрудником), юридические аспекты, связанные с наймом людей в нескольких странах при нестандартных контрактах и т. д.
Пришлось выполнять работу ушедших инженеров. По неизвестным причинам их не заменили новыми. Это было абсолютное безумие. Темпы оказались непосильными.
Cлучился срыв. Гендиректор продолжал менять планы, принимать неправильные решения, не признавать всех тех усилий, которые мы предпринимали, чтобы сохранить компанию, чтобы она росла. Пришло время взять больничный и мне: я серьёзно выгорел. То есть слёг последний инженер.
И ещё момент: Сайрус Акбари допустил много ошибок, которые стали известны общественности, они спровоцировали враждебность к компании. К счастью, люди оказались достаточно разумными и добрыми, чтобы не относиться к сотрудникам так же, как и к генеральному директору. Не буду называть их по имени, но они узна́ют себя. Спасибо.
Я пытался исправить ситуацию: убеждал десятки людей снова проявить сочувствие, попытаться простить, лучше работать совместно, оправиться и двигаться вперед. Это было утомительно. Знаю, люди оценили то, что я сделал, но моё психическое здоровье было подорвано.
Учитывая всё то время, что я посвятил компании, бесчисленные рабочие часы: 4 дня в неделю, но часто до часа ночи из-за очень поздних совещаний, ведь работы было выше крыши. Учитывая то очень немногое, что я получил взамен, плюс нестандартный контракт, по которому я работал (вы когда-нибудь видели соучредителя с контрактом фрилансера?), токсичную рабочую среду, постоянное давление и т. д., моей мотивации был нанесён серьёзный урон.
Сверхурочная работа нигде не фиксировалась и наваливалась очень часто. Проведённые с больным ребёнком полдня засчитывались как выходные. Баланс [между работой и остальной жизнью] был нарушен. Имели место критические замечания. Недовольство. Подтасовка фактов, когда всё оборачивается против вас, чтобы критиковать то, что вы делаете. Уход от дискуссий, когда всё предвещает бурю.
У нас даже было совещание под названием «Почему вы недостаточно продуктивны», хотя все работали как проклятые. Оно состоялось, как только мы переписали всю среду, чтобы выпустить Wasmer 1.0. То есть после периода, который мы все ласково называли «Адская переработка». Команда заслужила отпуск, поздравления, внимание, благодарность, но не это неприятное совещание. Ну, вы поняли.
Когда мне выписали больничный в связи с серьёзным выгоранием, пришлось сделать перерыв. Реакция гендиректора была... неожиданной: никакого сочувствия, просьба никогда больше не болеть (иначе уволит), дробление моих акций, просьба работать больше, обвинение в том, что я никогда не участвовал в жизни компании, и т. д. Это стало для меня последней каплей. Так обращаться с сотрудником, коллегой, участником проекта, соучредителем нельзя.
Что дальше?
Мне нужно прийти в себя. Два с половиной года работы в таком темпе не может не сказаться на здоровье. Надеюсь, пары месяцев хватит.
Я по-прежнему влюблён в Wasmer, в среду выполнения, в созданные нами проекты Open Source: у них светлое будущее. Всё больше компаний принимает участие в проектах, всё больше независимых участников проекта вносит свою лепту. Проект — достояние общества, он принадлежит пользователям, его участникам. Именно они сегодня делают большую часть работы. Wasmer хорошо протестирован и документирован, в нём легко принять участие. Wasmer — потрясающая технология Open Source.
Я очень надеюсь, что Wasmer изменится как компания. Продукты, которые подходят к релизу, будут абсолютно фантастическими. Это — технологический сдвиг. Он позволит задействовать децентрализованный веб, коснётся того, как мы компилируем и распространяем программы, и даже то, как будем потреблять их.
У Wasmer прочное, светлое будущее. Я правда надеюсь, что всё изменится, желаю всего наилучшего и передаю эстафету другим искателям приключений, которые будут продолжать двигать компанию вперед. Я же слишком скептически отношусь к тому, что всё может стать лучше или хотя бы немного измениться. Мы создали нечто великолепное. Позаботьтесь о проекте как следует.
А пока автор ищет новый проект, вы можете обратить внимание на наши курсы, чтобы изменить вашу карьеру:
Профессия Frontend-разработчик (7 месяцев)
Профессия Fullstack-разработчик на Python (15 месяцев)
Также вы можете перейти на страницы из каталога, чтобы посмотреть, как мы готовим специалистов в других направлениях.
Профессии и курсы
Data Science и Machine Learning
Профессия Data Scientist
Профессия Data Analyst
Курс «Математика для Data Science»
Курс «Математика и Machine Learning для Data Science»
Курс по Data Engineering
Курс «Machine Learning и Deep Learning»
Курс по Machine Learning
Python, веб-разработка
Профессия Fullstack-разработчик на Python
Курс «Python для веб-разработки»
Профессия Frontend-разработчик
Профессия Веб-разработчик
Мобильная разработка
Профессия iOS-разработчик
Профессия Android-разработчик
Java и C#
Профессия Java-разработчик
Профессия QA-инженер на JAVA
Профессия C#-разработчик
Профессия Разработчик игр на Unity
От основ — в глубину
Курс «Алгоритмы и структуры данных»
Профессия C++ разработчик
Профессия Этичный хакер
А также:
Курс по DevOps
Все курсы