Дорогой JavaScript,

в 9:24, , рубрики: babel, javascript, крик души, Программирование

Мне хочется рассказать тебе о проблеме в нашем сообществе. Я участвовал во множестве открытых проектов, таких как Babel, Flow, Yarn, Lerna, и других. Как разработчик, мне посчастливилось стать частью самых лучших времён сообщества, равно как и худших.

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

Но боюсь, это не всё, с чем я сталкивался.

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

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

Дорогой JavaScript, - 1


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

Позволь привести пример:

Когда мы запустили Babel 6, были внесены запланированные изменения в API. Мы перешли из неявного подхода (работает из коробки) к явному (работает для всех).

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

Но когда пришло время опубликовать версию, сразу же посыпались статьи вида "[Babel 6 это] урок, как не надо писать приложения" или "[команда Babel] уничтожила web платформу". Я встречал людей, которые упоминали меня в сети, называя идиотом. И волна статей о «закате JavaScript».

Дорогой JavaScript, - 2


Мне каждый день мерещились уведомления сообщений о том, как феерично мы облажались.

Зачем продолжать после такого? Конечно же, мы перегорели желанием работать над проектом. Я больше не ощущаю, что создаю Babel. Всё начиналось как самый интересный опыт в моей жизни, а закончилось тем, что с каждым днём я себя чувствую всё хуже и хуже.

Злобные реакции переваливали. Каждый день мне приходится читать, как кто-то орёт о том, как ужасно мы работаем. При таком раскладе сложно сохранять мотивацию — я, буквально, перестал смотреть на issue и pull requestы.

Я на reddit, пару месяцев после релиза Babel 6

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

Да, у наших продуктов есть свои трудности. Но вместо того, чтобы наезжать на тех, кто может лучше всего это исправить, почему бы не взять их сторону и помочь разобраться? Это не так сложно, но многие почему-то об этом не задумываются.


Мне хочется рассказать тебе ещё об одной статье, вышедшей недавно.

Дорогой JavaScript, - 3


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

В статье описываются трудности, с которыми можно столкнуться при работе с Angular 2. Провокационные заголовки и много пустых обидных слов, которые мало разъясняют природу самих проблем.

Даже появились похожие ветки в /r/javascript, в которых такое отношение поддерживается и ещё больше слов в кучу авторских.

Появление статей и веток обсуждения очень разочаровало.

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

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

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

Я не говорю, что критика нашей работы не нужна или она не должна быть публична. Я не пишу это письмо из-за того, что я фанатик Angular 2. Я больше не работаю с UI, но даже когда и работал, это было не в команде Angular 2.

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

Как человек, который создал много UI, я бы хотел поделиться этим опытом:

  1. Angular 2 очень динамичен. В основе лежат множество идей, которые ещё не являются общепринятыми, поэтому обучение проходит на скользской стезе.
  2. В шаблонах встречаются компактные наименования, которые не очевидны с первого взгляда. Они выглядят инородно, даже если абсолютно логичны. Иногда в них заложено больше смысла, чем они несут на самом деле.
  3. Документация будто бросает тебя в пучину и в торопях пытается тебя из неё вытащить. Там много информации и если пытаться всё попробовать, становится трудно переварить. Примеры кажутся туманными. (Это относится к пункту №1)
  4. Так же, в документации упоминаются концепты, которые не были разъяснены читателю. Без аргументации сложно принять нечто новое. (Так же относится к №1)

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

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

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


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

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

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

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

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

Но нам, как сообществу, надо этому противостоять.


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

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

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

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

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

У Babel получилось встать на ноги, но это заняло почти год, чтобы новая команда могла продолжить работать над проектом. Этого удалось добиться только благодаря усердному труду людей, таких как Генри Чжу [Henry Zhu] и Логан Смит [Logan Smyth].

Моим крупнейшим вкладом в проект за последний год было добавление, в шутку, ascii-графики Гайа Фиери [Guy Fieri]. Это было раскритиковано как «крайне непрофессиональное» поведение и люди спрашивали «как мы можем доверять команде после такого?» — ладно… думаю пора остановиться.


И таких «сообществ» множество, в их числе /r/javascript, Hacker News, в которых негативное отношение поощряется больше чем позитивное.

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

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

Мне всегда советовали избегать такие «сообщества» как /r/javascript и Hacker News. Говорили, что они переполнены невеждами, не знающими о чём они говорят, троллями, орущими на все и вся, что это просто ямы, где сгорают гигантские горы вздора.

Ещё чаще мне говорили: «Не позволяй им добраться до тебя, они этого не стоят.»

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

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

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

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

Такие вот реалии сообщества. Мы либо будем работать над ошибками, либо продолжать копать себе яму.

С уважением,
Джеймс Кайл

Автор: A3a

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js