Любой разработчик, посвятивший себя работе внутри web относительно непродолжительное время (скажем, лет 5) и, пусть даже, выросший из юниора в старшего программиста - с уверенностью может сказать, что технологии сильно шагнули вперёд.
В то же время тот, кто посвящал себя разработке более долгое время - может в этом усомниться. И на то есть причины!
Неумолимый прогресс
Наверное глупо отвергать тот факт, что web развивается: появляются новые возможности, ещё вчера казавшиеся чудом. Я вот хорошо помню тот водораздел, когда появился html5 и внезапно оказалось, что хотя он ещё и поддерживался не всеми браузерами - дни Macromedia Flash (или хозяином была уже друга компания, не помню) оказались сочтены.
Графика, музыка, видео: по сути, html5 объял большую часть мультимедийных потребностей, которые испытывал обычный пользователь компьютера (или телефона). Добавим к этому webgl - и можно добавить относительно хорошо работающие игры и сложные 3d сцены.
Хотя это лишь верхушка айсберга.
Что под капотом
Можно сколько угодно рассуждать о развитии чего бы то ни было, но всегда остаётся принципиальная прослойка, которая обуславливает возможность применения всех этих достижений.
Скажем, двигатель внутреннего сгорания внутри автомобиля сильно изменился за последние сто лет, стал эффективней, экономичней, но, по-прежнему, использует тот же базовый принцип: топливо-воздушная смесь сгорает, детонирует и потенциальная энергия превращается в кинетическую.
И хотя КПД двигателей вырос, он вырос незначительно по сравнению с тем количеством ресурсов, что были затрачены на его совершенствование.
Точно такая же история и с современными средствами разработки под web.
Если убрать в сторону несущественные детали, но сегодня разработка под web -это javascript и различные фреймворки, облегчающие решение типовых задач.
Да, есть множество библиотек, специальных языков разработки вроде dart или typescript, решающих специфические задачи, но это сейчас вторично.
Кажется, 2012 году была выпущена первая версия библиотеки lodash, содержащая в себе большой набор "функций на каждый день", эдакий швейцарский нож для frontend-разработчика, позволяющая довольно эффектно обрабатывать данные.
Примерно в то же время появился шаблонизатор Mustache, представляющий фантастическую по тем временам возможность - делать из шаблонов готовые данные. Да, были и другие шаблонизаторы (скажем Jade), но это не так важно.
По сути, связка lodash и mustache определила развитие всех будущих фреймворков.
Да, потом было углубление в ajax (тот же fetch) и сокеты; RxJS, promises и многое другое, но именно две выше указанные технологии стали незримым фундаментом, на который опёрлись все ныне популярные фреймворки: angular, vue и react. Да, у разработчиков были свои поиски, осмысления и изыскания, но основа была заложена.
Хотя я и не готов утверждать, что эти две библиотеки и по сей день используются внутри упомянутых фреймворков.
Забавная арифметика
Довольно любопытно наблюдать, как всего две библиотеки (их, безусловно, было больше, но эти две, определённо, дали мощнейший импульс объединившись в backbone) породили всё то, что мы имеем в арсенале разработки на сегодняшний день. Один плюс один стало, минимум, три.
И хотя этот факт нисколько не умаляет значимость современных средств разработки - понимание того факта, что они опираются на весьма старые технологии приводит к заключению, что не так уж эти самые "современные средства" и новы.
Не в смысле даты выпуска новой версии, а в смысле основополагающих принципов, лежащих в их основе. И очень не хотелось бы, спустя ещё два десятка лет осознать тот факт, что было потрачено невероятное количество ресурсов лишь для того, чтобы повысить КПД разработки на несчастные 10-20%.
Альтернативные маршруты
Как известно, любое общество выбирает то решение, которое наиболее понятно и наименее трудозатратно: если рубить руки воришкам лучше решает проблему, нежели содержание их на каторге - будут рубить. И так во всём.
Нельзя сказать, что существующие основные фреймворки разработки плохи, но что можно сказать однозначно - они работают в схожей парадигме.
Были и другие попытки воспринимать web-разработку. Скажем, подход DDD - data driven development (пример - библиотека d3) позволяла разрабатывать работу, опираясь не на модель-вид-контроллер и прочие производные данного подхода, а на данные (не то, чтобы эти подходы исключали друг друга; скорее - тут речь идёт о принципиальной доминанте).
Но особого распространения данный подход, как ни странно, не получил. А есть ещё много других подходов... скажем. событийно-ориентированный подход (когда состояние приложения меняется событиями). Но всё это, обычно, используется в дополнение, а не на замену существующим фреймворкам. И это не то, чтобы плохо, но развития новых направлений, вроде как, и не происходит, либо происходит в масштабах недостаточных, чтобы стать массовыми.
Вместо выводов
Как бы это странно ни прозвучало, несмотря на все изменения внутри web, появления новых возможностей, во многом он сохраняет поразительную консервативность, предпочитая, по большей части, смене содержания смену формы.
Надо сказать, в современном мире, достигшем некоторого барьера в вопросе технического прогресса - это нечто вроде нормы: нынешние прорывы, скорее, улучшают имеемое, нежели создают нечто новое. Хотя есть и приятные исключения.
Очень хочется верить, что в ближайшее время мы получим в web некоторый принципиальный прорыв, который позволит взглянуть на мир разработки под другим углом зрения и даст новые, может быть и не осознаваемые на данном этапе, возможности.