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

Разбираться с версиями нам помогали Github и npm, который индексировал open source библиотеки, позволяя легко и непринужденно искать, находить и импортировать различную функциональность, а также самим создавать, обновлять и передавать другим людям библиотеки. Ну а на Stackoverflow можно было даже бесплатно получить совет и поддержку. JavaScript с каждым годом и с каждым релизом ECMAScript становился всё лучше. Пусть не идеально, но вся система работала. Будущее нам улыбалось.

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

И вот, в один прекрасный день Microsoft пришла и захватила два основных инструмента, которые открывали дорогу ко всему open source сообществу – npm и Github. Думаю, такого хода от неё никто не ожидал, и очевидно, что основная масса разработчиков даже сейчас не вполне осознаёт, что произошло и как это скажется на них в самом скором времени.

Когда захват завершился, началась масштабная информационная атака, призванная полностью переключить идеалистичное open source сообщество на капиталистические мантры Microsoft. Это «тайная» война, в которой оружием выступает пропаганда и которая со временем тихо задушит и устранит любую независимую деятельность, уничтожит редакторы, инструменты и библиотеки, которые не принадлежат Microsoft, и даже сам JavaScript. Такой исход неизбежен, поскольку Microsoft – коммерческая корпорация. У нее в ДНК вшито завоёвывать целые индустрии и превращать их в монополии, генерирующие прибыль на радость акционерам. Миссия Microsoft – тем или иным путем превратить каждого разработчика на JavaScript в TypeScript-робота, делающего деньги для компании. Ниже я опишу многогранный блицкриг Microsoft, разбив его на пять простых шагов.

Акт первый: Microsoft уничтожает JavaScript


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

Microsoft, по сути, забила JavaScript, а вместе с ним и некоммерческую организацию, которая им владела, своим TypeScript – языком, который находится в собственности и под контролем коммерческой корпорации. Если бы Microsoft была заинтересована в том, чтобы совершенствовать JavaScript, она могла бы действовать через некоммерческие структуры. Но вместо этого она выбрала путь «корпорации злодеев» и стала постепенно изживать интерес к JavaScript и организации-создателю, чтобы получить гарантированную возможность монополизировать и монетизировать индустрию.

Разбираемся в словах

Риторика «JavaScript в большем масштабе» направлена по большей части на руководителей, которые принимают решения; она представляет TypeScript как более основательную и здоровую альтернативу ненадёжному, ванильному, погрязшему в багах JavaScript. Со временем это приведёт к тому, что JavaScript как язык упадёт в глазах людей из управляющего звена. Он станет в этом отношении преемником PHP.

Ну а чтобы не слишком обижать разработчиков, пишущих на JavaScript, была введена риторика «TypeScript – это надстройка JavaScript». По очевидным причинам её можно назвать в лучшем случае наивной и ошибочной. TypeScript действительно использует кое-какие конструкты JavaScript, но гораздо больше общего у него с C#. Так что, хоть у TypeScript и есть свои сильные стороны, важно понимать: он не то, за что хочет его выдать Microsoft. Было бы справедливее сказать, что TypeScript – это надстройка C#, которая компилируется в JavaScript и имеет некоторые схожие ограничения.

Проприетарный open source

Над JavaScript нет коммерческой организации, которая бы им обладала и управляла. Его поддерживает не направленная на получение прибыли деятельность многих людей и корпораций в открытом пространстве. TypeScript, напротив, является проприетарным субъектом в open source, так как принадлежит коммерческой корпорации Microsoft, которая его финансирует и полностью контролирует.

Выезжая на сообществе

Путём информационной обработки разработчиков на JavaScript и в open source Microsoft удалось использовать в своих целях неорганизованное, лишённое лидера сообщество, не встретив при этом никакого существенного сопротивления. Сообщество в один голос и от всей души приветствует TypeScript. Или, по крайней мере, складывается такое впечатление.

Акт второй: Microsoft выкупает Github


Github в течение долгого времени удавалось сохранять независимость, однако он с самого начала был коммерческим проектом. Если говорить о сообществе разработчиков, соответствие продукта с рынком у него почти идеальное:

  • Разработчики получают возможность осуществлять управление версиями, хранить и передавать кодовые базы;
  • У разработчиков есть личные профили, в которых можно увидеть, в какие кодовые базы они вносили лепту. Такого рода профили практически всегда запрашивают у тех, кто ищет работу;
  • Разработчики могут сообщать о багах и посылать pull request-ы в открытые репозитории.

Любой программист, который согласен, чтобы его код был в открытом доступе, может пользоваться Github бесплатно. Апсейл на платную подписку начинается тогда, когда кто-то не хочет оставлять свой код на виду и склоняется к использованию приватных репозиториев. Чаще всего эту возможность оплачивают компании и стартапы. Да и то, если команда небольшая, платить не придётся.

Github стал монополией за счёт преимущества первопроходца, модели freemium и тесной связи с npm. На сегодняшний день, если писатель, педагог, оратор или разработчик говорит о создании или скачивании репозитория, то речь всегда идёт о Github. Этот ресурс стал неразрывно связан с самим понятием управления версиями.

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

После того, как Github перешёл к Microsoft, интеграция VSCode ещё укрепила его положение монополиста, основного ресурса с репозиториями кода.

Акт третий: Microsoft выкупает npm


Теперь, когда Microsoft получил в своё владение Github, следующим логическим шагом было приобретение npm. npm – это не просто менеджер пакетов Javascript, но ещё и директория open source библиотек сообщества. Как и Github, npm изначально был коммерческим проектом. Монополией его сделал тот факт, что он был выбран в качестве системы управления пакетами для NodeJS.

Сейчас, в 2021 году, для Javascript сообщества практически немыслимо порвать с npm – мы с ним связаны на генетическом уровне. Использовать npm в связке с Github стало для разработчиков так же естественно, как дышать.

Акт четвертый: Microsoft объявляет VSCode лучшим (и единственным) редактором для TypeScript


Начиная писать код, я просматривал сотни туториалов, проходил курсы, читал множество книг и до сих пор сохраняю эту привычку. И в девяноста девяти случаях из ста люди наперебой советуют VSCode как самый прекрасный редактор во вселенной. Только изредка кто-нибудь упомянет Vim или WebStorm.

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

Я перешёл с VSCode на WebStorm с заворотом в Vim. Но большая часть разработчиков, которые привыкли пользоваться Github и npm, в конечном итоге оказываются на VSCode. Механизм обращения у Microsoft очень эффективный (пока не прозреешь).

Акт пятый: бизнес модель «Airbnb для open source библиотек»


Посыл ясен: open source вот-вот монетизируют корпорации и компании, сидящие на венчурном капитале. И по той же схеме, которая позволяет Airbnb получать кучу денег за аренду, не располагая никакой недвижимостью, паразиты вроде TideLift, OpenCollective и других будут действовать в реалиях Кремниевой долины по отношению к open source сообществу.

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

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

В заключение: как действовать разработчику на Javascript в 2021 году?


Освоить TypeScript

Если вы пишете на Javascript, немедленно начинайте изучать TypeScript – практически любой работодатель будет требовать его в стеке. Ничего плохого в этом нет, вы сможете работать более эффективно и улучшите производительно. И с другими статически типизированными языками вам потом будет проще, а это полезный побочный эффект. В мире статически типизированных языков TypeScript – что-то вроде стартового наркотика.

Быть гибким и готовым учиться новому

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

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

Я не радикал, а это значит, что я продолжу пользоваться преимуществами open source сообщества. Можно даже сказать, пользоваться и извлекать всю возможную выгоду для себя, как извлекала и извлекает Microsoft. Было бы глупо и непрактично отказываться от библиотек. Но теперь я ещё яснее представляю себе риски и стараюсь уменьшать свою зависимость от сторонних библиотек и паттернов, которыми пользовался ради удобства. В результате я стал писать больше низкоуровневого кода, и лично мне так даже интересней – хорошая зарядка для мозга и возможность изучить что-то новое. В конечном счёте, именно так люди и растут как программисты.

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

Примеры

  • Я не стал торопиться с переходом от модели REST API к модели GraphQL, хотя освоил последнюю, разобрался с её концептами и внутренней логикой. При необходимости я могу перейти в любой момент, но пока воздерживаюсь, потому что, хоть модель GraphQL и решает много проблем, но при этом создает немало новых.
  • Я использую NextJS для фронтенда на React, но не создаю внутри него API и в Vercel тоже не развертываю.
  • Несмотря на то, что я перешёл с JavaScript на TypeScript, я не использую VSCode, Github и Azure – для тех же задач есть много решений и инструментов получше.
  • Как только в React появились хуки, я сразу же отказался от компонентов на основе классов и стал использовать функциональные компоненты с хуками. В итоге мне удалось устранить зависимость от Redux.

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

Да и не всё так плохо. Изучение TypeScript – отличный первый шаг для погружения в статически типизированные языки. Так что изучайте со спокойной душой. Но воспринимайте это именно как промежуточный этап, а не конечную цель. Удачи всем с TypeScript!