Дорогою JavaScript,

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

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

Але боюся, це не все, з чим я стикався.

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

Коли ти є частиною проекту з десятками тисяч користувачів, доводиться зустрічати безліч критики. Іноді мені здається, що я якийсь політик. Деяка критика не обґрунтована, але більшість все ж конструктивна. Але найприкріше, що часто критикують надто жорстоко.


Такий негатив впливає інакше адекватної критики. Я можу цілодобово розповідати про різні компроміси, на які мені доводилося йти, працюючи в проектах. Я з радістю переглядаю свої погляди і готовий визнати, що я не прав (навіть коли це складно). Але коли мене починають дорікати за справу, в яку я весь вклався, дуже різко критикують виконану роботу, мене це зачіпає. Наслідки жахливі.

Дозволь навести приклад:

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

Перед релізом, функціонал не викликав протиріч і в нього було вкладено багато зусиль. Ми передчасно, за декілька місяців, повідомили спільноті про свої наміри і збирали відгуки.

Але коли настав час опублікувати версію, відразу ж посипалися статті виду "[Babel 6 це урок, як не треба писати програми" або "[команда Babel] знищила web платформу". Я зустрічав людей, які згадували мене в мережі, називаючи ідіотом. І хвиля статей про «кінець JavaScript».


Щодня мені ввижалися попередження повідомлень про те, як феєрично ми облажались.

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

Злісні реакції перевалювали. Кожен день мені доводиться читати, як хтось кричить про те, як жахливо ми працюємо. При такому розкладі складно зберігати мотивацію — я, буквально, перестав дивитися на issue і pull requestы.
Я на reddit, пару місяців після релізу Babel 6

Для будь-якої спільноти розробників, це величезна проблема, коли учасники починають перегорить. Якщо періодично, кожні пару років, людей дійсно не влаштовує кілька нововведень, їм слід допомогти нам розібратися в цьому, тому що, врешті-решт, така критика болісно позначається на співтоваристві в цілому.

Так, у наших продуктів є свої труднощі. Але замість того, щоб наїжджати на тих, хто може найкраще це виправити, чому б не взяти їх бік і допомогти розібратися? Це не так складно, але багато хто чомусь про це не замислюються.



Мені хочеться розповісти тобі ще однієї статті, яка вийшла нещодавно.


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

У статті описуються труднощі, з якими можна зіткнутися при роботі з 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. Говорили, що вони переповнені невігласами, не знають про що вони говорять, тролями, орущими на все і вся, що це просто ями, де згоряють гігантські гори дурниць.

Ще частіше мені говорили: «Не дозволяй їм дістатися до тебе, вони цього не варті.»

Такі спільноти позбавляються від людей, здатних внести найбільший внесок. Від тих, які здатні вирішити проблеми, що виникають у спільноти. І все з-за того, що деякі не здатні контролювати свій гнів і бути стриманішим.

Це треба зупинити. Треба припинити заохочувати злість. Якщо не заради розробників, то заради себе. Інакше ми караємо тільки самих себе.

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

Якщо зосередитися на рішеннях та допомоги іншим, ділитися ідеями, то ми зможемо змінити світ на краще. Ми всі є частиною більшої спільноти і маємо на нього вплив. Це вплив конструктивне, або деструктивний. Все залежить від нас самих.

Такі ось реалії співтовариства. Ми будемо працювати над помилками, або продовжувати копати собі яму.

З повагою,
Джеймс Кайл
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.