KAN и веб-программирование
Когда писал код очередной функции по форматированию даты, поймал себя на мысли, что делаю это уже с стотысячпятисотый раз. Разные ЯП, разные проекты, разные предметные области -, а делать приходится одно и то же. Шлёпать формы на фронте, пилить CRUD на бэке, гонять между ними XML/JSON — вот и всё веб-программирование, по большому счёту. Раз за разом делаешь очень похожую работу, которая всегда чуть-чуть отличается от того, что было ранее.
И казалось бы, ведь можно же сделать библиотечную функцию по форматированию даты в виде »06/20 09:25» и использовать её во всех проектах. Или хотя бы во всех своих проектах. Но нет, новый проект, нужно отформатировать дату и ты опять применяешь копипасту, перенося код из последнего проекта в самый-самый последний. Может быть, называешь функцию чуть по-другому, или помещаешь её рядом с другими функциями, а не так как было в предыдущем проекте. Но ты не используешь »универсальную библиотеку по форматированию даты-времени во всех форматах», типа moment или luxon. Потому что их функционала (а вернее, «веса») тебе »замного будет».
Ты даже не формируешь свою собственную библиотеку из нужных тебе время от времени функций — зачем вводить дополнительную зависимость, а потом холить её, лелеять, пестовать и думать, что и где отвалится, когда ты чуть-чуть поменяешь вот эту вот функцию, потому что вот в этом проекте она должна работать слегка по-другому? Ты просто копипастишь проверенный временем код в другой проект, ограничивая его »ареал обитания» рамками проекта.
И тут у меня в памяти всплыла вот эта статья про сети Колмогорова-Арнольда. Краткий пересказ — »дело не в узлах, дело в связях между ними». В веб-программировании вся сложность кроется не в том, какие вьюшечки как делать, какую библиотеку компонентов использовать и какой контракт у эндпоинта (это всё можно накопипастить из других проектов или даже в рамках одного проекта), а в том, как это друг с другом связано. Можно на зубок знать, что такое вычислительная сложность алгоритмов, но так ни раз и не столкнуться с необходимостью применить это знание. На вебе нет, как правило — нет, сложных алгоритмов.
Веб-приложения — это не про »сложно», веб-приложения — это про »много». А вот уже эксплуатация веб-приложений — вот это про »сложно». Поэтому и появилась потребность в DevOps, микросервисах и микрофронтэндах, облаках и масштабировании. И поэтому же, на мой взгляд,»толстые клиенты» (IndexedDB, local storage, service worker и cache storage) в веб-разработке будут становиться всё популярнее.
P.S.
Поначалу я хотел опубликовать пост — на отдельную статью это явно не тянет, но на Хабре нельзя делать длинные посты — ограничение по кол-ву символов. Поэтому вот так.