Быть настоящим и писать код VS перебирать и казаться
Отличный фреймворк!
Простой, чистый, производительный!
Так на его могиле и напишем…
Полсотни интернет-зависимых не спят. Прижав тощие и не очень задницы к стульям, они флудят в самописном чатике. Удовольствие стоит 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)
:)