Модная разработка ПО
Подобно тому, как мода не жалеет модников и модниц, любящих приодеться, она распространилась и на сферу ИТ. Регулярно просматривая вакансии, мне даже удалось сформировать некоторую закономерность в трендах интересов и пристрастий. О ней хочу и поведать.
Итак, сперва я задался вопросом, отчего вообще берётся мода в такой отрасли, как ИТ, особенно в такой сфере, как разработка программного обеспечения. Ответ оказался весьма тривиален: неудовлетворённость, переход, маркетинг и интеллектуальная похоть.
С неудовлетворённостью всё понятно: человек сидит на одном месте несколько лет, делает примерно одно и то же и не видит для себя лучших перспектив. Ему скучно, грустно и не интересно, он хочет обновления — и тут появляется она, технология, такая же, как та, что он использует, только с перламутровыми пуговицами. И вот, глаза загораются, хочется обновления и вообще, об этой технологии много говорят и пишут — хочу в общем. Пример решения: переход с фрейворка А на фреймворк Б (намеренно не использую тут названия, т.к. в каждой области есть своя такая история).
Переход — человек долго работает в каком‑то направлении и решает перейти в другое (например, с баз данных, работающих в связки с.NET приложением на фронтенд) и тут оказывается, что предыдущий опыт не очень помогает разобраться с тем, как вести себя в новых обстоятельствах. Но есть технология, которая позволяет сохранить предыдущий опыт и применить его. Например, Typescript вместо JavaScript/ECMAScript.
Маркетинг — это просто ловушка. Некоторая компания решает подмять под себя часть рынка, но сделать это можно лишь при условии привнесения некоторого инструмента с его широким пиаром. Появление такого инструмента позволяет решить некоторые стратегические задачи, не совсем очевидные для простого разработчика. Например Meta (ныне запрещённая организация на территории Российской Федерации) поделилась React’ом и через это решила сразу несколько задач, в том числе сокращения время на подбор и адаптацию новых фронтенд разработчиков. Microsoft профинансировала продвижение Typescript и благодаря этому смогла более широко войти в мир web (а если это увязать с покупкой GitHub, то заодно промотивировала создание материала для более качественного обучения своей нейросети copilot).
Интеллектуальная похоть — это примерно то же самое, что и неудовлетворённость, только постоянная и желание всегда быть на острие прогресса.
Наверное, не все вышеперечисленные примеры должны быть помечены, как «мода», однако именно про моду этот пост, поэтому пора перейти к ней.
Мода на технологии имеет следующий цикл жизни:
О технологии мало кто знает и её используют лишь некоторые энтузиасты;
Технология внезапно или постепенно становится крайне популярной;
В текстах вакансий требуется знание этой технологии, но с пометкой «желательно»;
Без знания технологии на работу не возьмут: она превращается в некоторый священный грааль трудоустройства;
Появляется технология 2, которая внезапно или постепенно становится крайне популярной;
Технология остаётся на поддержке, но присутствует лишь в вакансиях, где требуется поддержка старых проектов, но всё ещё запускаются новые проекты на ней, хотя сильно реже;
Технология переходит в разряд устаревших и не вызывает интереса.
Наверное, прочитав этот цикл жизни многие подумали в строну различных фреймворков. Например, фронтенд разработчики, из тех, которые начинали ещё до того, как это стало мейнстримом, помнят Backbone или jQuery. Возможно это кого‑то удивит, но в настоящее время существует немало проектов, где данные технологии довольно уверенно себя чувствуют и широко применяются несмотря на почтенный возраст.
Однако, обновление касается не только фреймворков, но и целых языков. Например, вы помните Delphi? В своё время это был просто шедевр и нельзя сказать, что он совершенно устарел: просто пришли новые технологии, которые вытеснили его, например тот же самый .NET. Или, возможно, вы помните C++ Builder — примерно та же участь. Продукт всё ещё живёт, но вот в текстах вакансий встречается крайне редко. В то же время C++ до сих пор активно развивается и востребован.
Или, например, Ruby on Rails. Ещё совсем недавно это была технология, сопоставимая по популярности с Java или PHP. Сегодня вакансий ruby в 10 раз меньше, чем вакансий php и в 12 раз меньше, чем Java.
Собственно, это подводит нас к вопросу, кто виноват и что делать? Разумеется, есть технологии, которые выглядят интересными и перспективными. Тот же Rust, обещающий ускорение работы приложения и отсутствие ошибок памяти (лукавят конечно маркетологи) выглядит очень перспективным, настолько, что некоторые горячие голову хотят начать переписывать ядро линукс на нём, вместо морально разложившегося C. Однако C существует уже более 50 лет и никто не знает, сможет ли новое победить старое.
Иными словами, виноватыми в появлении «модных» технологий становятся сообщество разработчиков, которые от скуки, навязывания или любопытства подхватывают нечто новое и тащат в свои проекты, делая из очередной технологии священную корову с тем, чтобы спустя несколько лет, забыть про неё. Хотя вряд ли можно называть их «виноватыми». Скорее — причастными. Ну и руку прикладывает менеджерский состав, мечтающий сократить издержки, мол, давайте добавим строгую типизацию, ошибок станет меньше, затраты сократятся, производительность вырастет (тот факт, что уровень разработчиков не вырастит, повысится избыточность, что приведёт к повышенным издержкам в обращении с кодом, а также к другому классу ошибок и неточностей в расчёт не берётся).
Ну и главный вопрос:, а что делать. Тут, боюсь, нет однозначного ответа. Моё наблюдение показало, что есть два типа технологий: основополагающие (на них что‑то строится) и паразитирующие (используют готовые, чтобы надстроиться над ними).
Например, к основополагающим можно отнести Java. Сколько лет от него отказываются в пользу C# или Python, а вакансий всё равно предостаточно. Более того, как только заходит речь о каком‑то более‑менее сложном проекте — его выбирают более охотно по причине качества подготовки java‑разработчиков, а также существующей экосистемы, которая позволяет решить плюс‑минус все возможные и предполагаемые задачи.
А есть технологии вроде Typescript. Если коротко, то JavaSctipt отлично себя чувствует без TypeScript, а вот TypeSctipt без JavaSctipt не существует. Вероятней всего, спустя какое‑то время его постигнет судьба Delphi (примечательно, что у них и создатель один и тот же), поскольку если опустить все словесные реверансы, то он является лишь технологической надстройкой и не умеет делать ничего такого, чего бы не умел делать JavaScript, а вот возможности JavaScript сильно шире.
«Паразитические» технологии или технологии надстройки — не новы. Например, многие ещё помнят CoffeeScript, который одно время довольно широко использовался, а ныне практически забыт. Полагаю, главная причина состоит в том, что «чистые» технологии не сильно нуждаются во вспомогательных инструментах, дарящий синтаксический сахар, т.к. их эволюция и развитие, рано или поздно, вбирает в себя лучшие практики, отказываясь от того, что не оправдало себя. Ну и формирующуюся экосистему никто не отменял.
Возможно, кому‑то покажется данная статья несколько предвзятой. С радостью готов обсудить встречные точки зрения в комментариях.