javascript

JavaScript как мыслевирус

  • воскресенье, 6 августа 2017 г. в 03:11:52
https://habrahabr.ru/post/334964/
  • Node.JS
  • JavaScript


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


Начнем с того, что я не пишу на JavaScript профессионально. Я много пишу на TypeScript, считаю что разбираюсь во frontend-разработке (например сейчас я занимаюсь интеграцией собственной реализации VDOM в свой датагрид-движок Lattice, о котором скоро будет отдельная статья. Ну как скоро… будет, в общем :), однако мой основной профиль — C# и делать всё, чтобы защитить бедных C# разработчиков от излишнего ныряния в JavaScript.

Так вот. Прошу обратить внимание, что я решительно не имею ничего против JavaScript как такового и его технической экосистемы. Это нормальный язык, с приемлемым тулсетом. Во всяком случае мне в нем комфортнее чем в каком-нибудь… LabView. Я не считаю его уж шибко плохо сделанным — в конце концов в нем нет несовместимых с жизнью недостатков, но однако и ничего революционного или магического я в нем так же не нахожу. Мой основной посыл — к сообществу. К людям, а не к технологии, ибо как с моей точки зрения, большинство проблем и холиваров вокруг JavaScript происходит не от самого языка, а от его, как мне иногда кажется, обезумевших последователей. Имея за плечами продолжительный опыт общения с разработчиками на JavaScript, я предположил что этот язык работает как мыслевирус, который со временем превращает пишущего на нем человека в агрессивного фанатика, чего мне не удалось отметить с другими технологиями. Собственно, эта статья является сатирой на штампы JavaScript-разработчиков, которых JavaScript поразил как мыслевирус. Отсюда и название.

И да. Я не считаю что все поголовно JavaScript-разработчики такие. Среди них есть нормальные и адекватные люди, которым удалось остановиться на каком-либо квалификационном уровне и сохранить трезвость ума и здравость памяти. Однако же фанатизм от JavaScript-а настолько фееричен, что заслуживает отдельного рассмотрения. Итак…

Дорогой JavaScript-разработчик!


Если ты это читаешь, то ты должен знать: твой язык имеет характер мыслевируса. Он серьезно разъедает мозг по мере того, как ты продолжаешь заниматься этой гадостью. Сам ты этого, вероятно, не замечаешь, но мы, люди «извне», слышим тебя, видим и читаем. Мы разработали специальную карту с советами что делать, чтобы ты мог самостоятельно диагностировать тяжесть своего состояния, вылечиться и по-скорее вернуться к нормальной жизни.

0 уровень: «jQuery — хороший»



Симптомы:
— JavaScript тебя интересует только по работе
— Ты можешь написать кусок кода в теге <script>
— У тебя нет особого желания говорить о JavaScript, кроме как иногда жаловаться на него коллегам в курилке. Ты вообще его и за язык-то не считаешь
— jQuery — удобный инструмент и искренне тебе помогает в делах
— JavaScript написан в резюме одной строчкой наряду с Java, C/C++ и SQL

Диагноз:
Здоров. У тебя все хорошо, мозг не задет, проблем не наблюдается. Скачай сериал и открой пиво — ты хорошо поработал на этой неделе.

1 уровень: «Я просто сижу там, где JavaScript-ят»


Симптомы:
— Тебя забавят замыкания в JavaScript, ты испытываешь легкую гордость от того, что понимаешь как они работают
— Ты раскладываешь JavaScript-код по файлам, поскачивал кучу плагинов к jQuery, думаешь об изучении AngularJS и чувствуешь успокоение и расслабление
— Читаешь мануалы по плагинам, в соседней вкладке браузера у тебя обычно порнушка
— jQuery — рулит и педалит, AngularJS отдается в голове звуками таинственного Туманного Альбиона
— Ты знаешь о том, что '3' — 2 == 1, но '3' + 2 == '32' и это вызывает у тебя негодование

Диагноз:
Все по-прежнему в порядке, но хитрый вирус JavaScript летает повсюду в воздухе. Береги себя и носи защитную маску.

2 уровень: «Я могу бросить когда захочу»


Симптомы:
— Ты разбираешься в прототипном наследовании. Тебе немного мерзко, но в целом терпимо
— AngularJS внедрен в домашний проект. Ты говришь начальнику что неплохо бы и в рабочем использовать
— Читаешь мануалы по AngularJS, попутно изучаешь TypeScript/CoffeeScript. Изредка с интересом почитываешь рекламные статьи, рассказывающие о магии JavaScript и о том, как некая компания X с ним счастливо живет
— jQuery тебя больше не заводит. Ты начинаешь использовать термины «MVW», «DSL», «DOM-дерево». JavaScript-объект называешь только «хэш»
— Видео навроде JavaScript WAT больше не вызывают бурных эмоций. Ты понимаешь как это работает и почему.

Диагноз:
Началось! Ты этого не замечаешь, но твой мозг уже атакован! Ради всего святого, научись жить с этим. Научись контролировать это. Не давай ему тебя поработить — и тогда все будет нормально.

Здесь ты начал испольовать npm



3 уровень: «Не вижу в этом ничего плохого»


Симптомы:
— AngularJS в продакшене твоего рабочего проекта. Не на всех страницах, но хоть так
— Ты осознаешь что фронтенд — целая отдельная часть системы и невозможно же её поддерживать силами backend-разработчиков. Говоришь об этом с начальником, получаешь недоумевающий взгляд
— Пишешь на TypeScript и нервно думаешь как бы автоматизировать сборку фронтеда. Читаешь статьи про grunt. Плотно знакомишься с опытом использования JavaScript в модных стартапах
— Коллеги, в основном совмещающие backend с допиливанием скриптов на страницы проекта, перестают понимать что ты говоришь и назначают тебя ответственным за все, что касается клиентской части. Из-за этого у тебя появляется легкое негодование и небольшая обида на них
— В резюме ты стираешь пункт JavaScript, и добавляешь новую секцию: Frontend

Диагноз:
Твоя болезнь прогрессирует. Ты этого, скорее всего, не замечаешь, но просто поверь мне — вирус уже обосновался в твоей голове. Отложи JavaScript, попиши на C, освой какой-нибудь игровой движок. Тебе срочно необходимо отогнать от себя мысли о JavaScript, чтобы сдержать развитие болезни. На этой стадии еще можно взять себя в руки и быть просто хорошим fullstack-инженером.

4 уровень: «Вы просто не понимаете сути»


Симптомы:
— Сильное желание говорить о JavaScript. В курилке ты с горящими глазами рассказываешь недоумевающим коллегам о том, что JavaScript можно запускать вне браузера. Обижаешься, когда они не считают это серьезным достижением
— Фронтенд рабочего проекта собирается отдельно, с использованием grunt и require.js. От этого тебе делается хорошо и приятно, появляется ощущение тепла и домашнего уюта. Коллеги не понимают что там происходит и почему именно так. На все вопросы отмахиваешься и отвечаешь нечто вроде «да там долго объяснять». Очень злишься, когда коллеги пишут что-либо в теге script
— TypeScript становится тебе тесноват
— Читаешь много концептуальных статей про будущее JavaScript. Узнаешь о существовании React, пробуешь его на домашнем проекте. Получаешь первый писательский опыт в комментариях к статье о React, находишь там поддержку и понимание
— Подумываешь съездить на конференцию по JavaScript — встретиться с единомышленниками

Диагноз:
Разжижение мозга в самом разгаре. Вирус самодовольно откусывает кусочки серого вещества и со смаком и хрустом пережевывает. Просто остановись, съезди в отпуск — желательно на Гоа, года на 2, научись медитации. Если ты не научишься контролировать свой JavaScript, то он убьет тебя и разрушит твою жизнь.

5 уровень: «JavaScript — няшка. А вы все — быдло»


Симптомы:
— Пробуешь React на домашнем проекте. Полоскаешь мозги начальнику, что весь ваш сайт надо срочно переделать на SPA и изоморфный рендеринг. Закономерно получаешь предупреждение о скором увольнении, но гордо хмыкнув увольняешься сам и уходишь в хипстерский стартап
— TypeScript тебя сильно ограничивает в возможностях. Отказываешься от него не новом месте работы в пользу pure js
— Любого, кто напишет тебе про '3' + 2 незамедлительно называешь безграмотным быдлом, которое просто не может осилить язык. Для тебя это уже очевидно. Начинаешь считать, что любой человек, у которого JavaScript не является основным языком работы — просто органически не способен понять прототипное наследование. Это — для избранных
— Едешь на конференцию по JavaScript. Там тебе впервые показывают как за 20 секунд сделать сервер на Node.JS. Восторгаешься. Вирус, подпитавшись материалами с конференции откусывает ту часть мозга, которая еще помнила про многопоточность. Она помирает и не успевает задать свои вопросы
— Считаешь что VDOM — неочевидное и гениальное решение, которое может прийти только в самые светлые головы этого мира

Диагноз:
Болезнь подходит к необратимой стадии. Посмотри — вирус уже рушит твою жизнь. Немедленно достань учебник по C++ и выполни десяток-другой задач. С тобой становится невозможно общаться! Ты агрессивен и съехал с катушек. Я знаю, что ты в это не веришь, но окружающие всё видят.

Ты начал использоват Node.JS



6 уровень: «Это полноценный технический стек!»


Симптомы:
— Считаешь что весь web скоро перейдет на изоморфный рендеринг. Классические подходы устарели, а лично ты — стоишь на пороге технологической революции. Меняешь в резюме заголовок на «JavaScript-профессионал»
— Раз за разом запускаешь сервер на Node.JS. Проверяешь его на самых разных задачах — блог, аналог твиттера, todo-лист, хостинг картинок. Поражаешься быстродействию. Считаешь что вот он — The Web Development
— Любой эксперимент начинаешь с установки webpack-а, react-а и еще десятка пакетов. В процессе скачивания зачарованно смотришь на монитор
— Забываешь зачем нужны SQL-базы. Искренне не понимаешь почему на mongodb нельзя делать вообще все. Авторов видео mongodb is web scale считаешь неграмотными толстыми троллями
— Асинхронные операции в Node.JS для тебя — cutting edge. Ты полностью уверен, что ни в одном другом языке кроме как JavaScript это невозможно и никаким другим фреймворком кроме Node.JS это не поддерживается

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

7 уровень: «Мир должен знать!»


Симптомы:
— Пишешь свою первую статью об успешном внедрении Node.JS для решения, как тебе кажется, очень важных задач в вашей компании. В комментариях грубишь всем, кто посмеет усомниться в твоем успехе
— Наотрез отказываешься слушать про другие языки и фреймворки. Предпочитаешь узнавать о них из разговоров с друзьями. Уверен, что C++ устарел и скоро его перестанут использовать. Java/C#/VB — это enterprise-языки и в них нет ничего кроме бессмысленного нагромождения паттернов, а работают они медленно потому что в них нет асинхронных операций. Вместо любых аргументов, что это не так — слышишь белый шум
— JavaScript уже давно для тебя идеален. В нем нет недостатков, а если кто-то считает, что они есть — то только потому что этот кто-то не может открыть документацию и почитать, о чем ты ему незамедлительно сообщаешь
— Социальная активность возвращается. Правда, ты не общаешься ни с кем, кто не входит в JavaScript-тусовку. Любого, кто задает тебе вопрос по JavaScript снисходительным тоном отправляешь «читать книжки» и упрекаешь в непонимании очевидного
— Ты стал писать меньше кода. В основном ты проводишь время в чтении статей, расхваливающих JavaScript и пишешь одобрительные комментарии под ними. Называешь это «обмен эксперными мнениями» и «узкоспециальной профессиональной дискуссией»

Диагноз:
Критическое поражение мозга вирусом. Задеты важные мыслительные центры. Собери жесткие диски со всех компьютеров и выброси. Устройся работать грузчиком. Просто таскай коробки, пей, и ни с кем не разговаривай. Выброси свой Google Nexus и купи старенькую черно-белую нокию. Через несколько лет сможешь вернуться в программирование, начав изучение с С++. Не задавай вопросов — так надо.

8 уровень: «Вся индустрия только и была создана для JavaScript»


Симптомы:
— Для тебя в JavaScript-е лучшие пакетные менеджеры. Ты абсолютно уверен, что системы должны собираться из как можно более мелких пакетов по 10 строчек, а любая модульная декомпозиция строится по принципу «меньше модуль — значит лучше»
— Считаешь что статическая сильная типизация — это тупиковая ветвь развития. Все более-менее типизированные языки скоро вымрут из-за своей негибкости и перегруженности. Ничего не должно ограничивать настоящего программиста — в том числе и система типов. Наследование, интерфейсы, абстрактные классы — пережиток прошлого, которые только все усложняют
— … а JavaScript — вообще единственный язык, который избавляет человека от таких условностей. Он стоит на первых местах во всех рейтингах индустии, развивается семимильными шагами и ничего кроме него не жизнеспособно. Ну может разве что TypeScript. И тот нужен только тем болезным, которые не осилили pure js
— Ты забыл слово «многопоточность». Считаешь что это что-то уровня ассемблера и тебе это знать не нужно, ведь Node.JS полностью тебя от этого абстрагирует. Ты уверен что так и должно быть, а люди, которые в этом разбираются — или носители ненужной и бесполезной информации, или разрабатывают операционные системы
— Ты чувствуешь, что вся IT-индустрия развивалась как-то неправильно. В ней много неуместных усложнений, которые никому не нужны. Ты искренне уверен, что все должно быть гораздо проще и что все люди, которые разрабатывали теоретическую базу для программирования — очень глупые, раз этого не понимали. И за что им только докторских степеней пораздавали? Ты бы справился гораздо лучше

Диагноз:
Вирус целиком съел твой мозг и заменил его. Сожалеем, но тебя уже не спасти.