Размышления о моде на фреймворки и как за ней угнаться. При прочтении возможна острая ностальгия по JavaScript и писку модема.
Быть настоящим и писать код VS перебирать и казаться
Сибирикс
наши процессы
Быть настоящим и писать код VS перебирать и казаться
Размышления о моде на фреймворки и как за ней угнаться. При прочтении возможна острая ностальгия по JavaScript и писку модема. Оригинал лежит на хабре.
Владимир Завертайлов
Руководитель scrum-студии Сибирикс
Отличный фреймворк!
Простой, чистый, производительный!
Так на его могиле и напишем...
Полсотни интернет-зависимых не спят. Прижав тощие и не очень задницы к стульям, они флудят в самописном чатике. Удовольствие стоит 6 рублей в час (цена «городского интернета» в далеких
2000-х с одним сервером на город-полумиллионник).

На это хватало сэкономленного на студенческих обедах. На выход в Глобальный Интернет по 33 рубля (хренасе!) в час — уже нет. Писк модема на 33600. Ночь.

Самое главное — на сервер можно зайти по FTP и выложить на всеобщее обозрение свое Ясделие. Свой сайт. Или чат. Или что ты там еще придумал. И кто-нибудь обязательно туда придет, посмотрит и оценит. И ты увидишь это на счетчике посещений (предтеча лайков размером 88×31).

В стеке технологий (правда, тогда слово «стек» употребляли с чем-то вроде «push ax») у нас было много всего:

  • PHP3, который еще не успели охулить (или успели, но в «городском интернете» про это никто не знал).
  • HTML4, который не во всех тогдашечных браузерах умел рендерить таблицы.
  • CSS-1.0 — магия.
  • JavaScript, который ламеры путали с Java.
  • Шестая чашка дрянного нескафе-голд.

Эти технологии были потрясающими. В прямом смысле. Например, JavaScript мог трясти окнами браузера и открывать десять тысяч окон, отправляя в нокдаун неугодного пользователя чата. Нынешние фреймворки так не умеют.
Но через пару лет пришли хулители из Java (которая не Script) и рассказали, что все, что мы делаем — дерьмо. И на сервере код наш — дерьмо. И на клиенте — дерьмо. И браузеры наши — дерьмо. И вся веб-разработка дерьмо. Впрочем, доля горькой правды в этом была. Браузеры того времени и впрямь были удивительными механизмами.
Кладбище фреймворков. Начало

Глотком свежего воздуха стал Prototype (кто-нибудь помнит этот фреймворк?). Было так круто писать вместо document.getElementById что-то типа $()!

Вот только Prototype расширял функционал базовых объектов. А это посчитали дерьмовым. И старичок загнулся практически сразу, как появился jQuery.

Меня это бесило дня два. Мне нравилось писать
$("id").style.color = "#FFF";
вместо
$("id").css({color: "#FFF"});
Но кто-то сказал, что это плохо, и я пересел на jQuery. Многие пересели.

Prototype оказался только шлюзом в мир, полный настоящего, вонючего дерьма! Оно хлынуло потоком. Маленькими кусками вроде mootools, который реально где-то полгода делал вид, что он конкурент jQuery и Prototype. И большими кусками вроде Dojo (кто это помнит?!), Yahoo! UI Library (в итоге — Extjs).

Нам нужен был MVC (или HMVC?), и у нас появился выбор: Backbone, CanJS, Knockout и еще десяток новых каждую неделю. Нам надоел CSS, и снова мы могли выбирать: Less, Sass, PostCss. Кто-то сказал, что JavaScript — дерьмо, и так появился CoffeeScript, и меня реально убеждали, что надо писать именно на нем, ибо прогресс! Блин, ну и где он теперь?!
TypeScript. ES6. Отлично, JavaScript стал типизированным, но перестал работать в браузере: теперь его приходилось компилировать. И не только его. Много-много рутинной магии на сервере.

Поэтому появились автоматизаторы рутинной серверной магии по типу Grunt, Gulp, Broccoli, Webpack. Меня выворачивало наизнанку от синтаксиса Angular, и я был рад сплясать на его могиле, когда появился React (к которому нужен был Redux). Даже Vanilla JS, фреймворк в 25 байт в сжатом виде, на фоне общего зоопарка выглядел не так плохо.

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

Бывало, начинаешь проект с новыми и хайповыми технологиями и методологиями, а заканчиваешь уже с отстойными. Хотя по сути ничего не менялось, разве что появлялась парочка статей на хабре «Почему ангуляр — отстой» и «Scrum умер и больше не работает». Проект, работа и даже собственная компания казались отстоем просто потому, что кто-то сказал «MVC — для лохов!».
Не быть лохом
Правда в том, что большей части разработчиков фиолетово на сам проект. Куда важнее чувствовать себя «в тренде». Не быть лохом. Поэтому часто хипстерскость технологии — решающий фактор в выборе работы. И мало кто из работодателей сознается, что набирает людей для поддержки унылого проекта на фреймворках полугодовой давности.
В вакансиях студии выпячивают только те технологии, которые не успели обрасти разгромными отзывами. Мы тоже так делали и прятали под стол гадости вроде лучших отечественных CMS-систем. Да мы даже обернули её Zend-ом, чтобы клиенты радовались маркетинговому трепу про мощность админки, а мы — пользовались MVC, не особо мучаясь.

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

Разнообразие мнений породило проблему выбора и обучения junior-ов. Я собеседовал людей, которые на полном серьезе говорили, что учили Angular, а не JavaScript. Ай хэйт ю, агнуляр.

Я видел разработчиков, которые считали, что умеют писать «на jQuery» — точнее, они могут найти подходящий слайдер и воткнуть его на страницу. И (цитирую дословно) «настроить под себя». Эти люди гордо именовали себя «jQuery-интеграторы», но не могли отсортировать список значений в select-боксе. Они беспокоились, что разговор зайдет о чем-то, что может быть сложнее «интеграции плагинов» (точнее, занятий, которые они почему-то считают «программированием»). Когда их просили написать чуток кода на бумажке без копипасты с гитхаба, их поры сочились гормонами сжиженного стресса.

Но черт возьми! Не они в этом виноваты!
Не читай срачи, а трогай ручками
Как-то вечером я захотел сделать небольшой проект для души: сайтик с простым бэкэндом и кое-каким интерактивом на Javascript. И решил предварительно посмотреть, на чем сейчас модно писать. Господи, зачем я это прочитал...

[Разработка → Каково оно учить JavaScript в 2016 перевод]

Мой проект не закончен до сих пор. Кажется, скоро я открою стартап или начну искать ко-фаундера.

Сейчас в арсенале нашей студии:

  • jQuery + CanJS + Less + Gulp на одних проектах;
  • и React + Redux + Babel + JSX + ES6 + Browserify + PostCSS + Webpack на других.
Но я не знаю, сколько времени осталось, пока они не вошли в категорию «X — дерьмо!».

Если ты талантлив и одарен, у тебя, скорее всего, есть и обратная сторона этих ништяков — ты слишком умный. Ты оптимизируешься, экономишь силы. Перестаешь изучать и пробовать технологии на практике. И все больше полагаешься на стороннее мнение. Становитесь зашоренными. Изучение и применение технологии заменяешь чтением веселой статьи на хабре про то, что она — отстой.

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

Сингулярность ближе, чем ты думаешь. Избегай зашоренности. Меньше полагайся на чужое мнение. Смотри сам. Изучай сам. И попробуй потрясти этот мир. В смысле
window.moveBy(x, y)
:)