🦾 IT-Качалка Давида Шекунца 💪
2023-12-09 11:18
Бэкенд разработка, это как прийти на какую-то землю, где вас просят сделать здание (от домика на PHP, до дубайской высотки на go), вы изучаете почву, ландшафт, погодные условия и оказывается вы в целом находитесь в тех же условиях что и раньше, а значит можете, применяя накопленный опыт, чирпичик за чирпичиком начать строительство
Если без метафор, на бэке у тебя будут: ос -> сети -> рантайм -> твой код – ну, может, еще немного уровень виртуализации (docker-like) и это почти все слои которые тебе надо знать, чтобы писать суперсложные программы
При этом каждый из этих уровней стабилен уже годами и даже десятилетями, поэтому, выучи ты в 2010-ом TCP/IP + Linux + VM + C / C# / Java / ... впади в спячку на 10 лет и когда ты проснешься, тебе понадобится пару месяцев чтобы немного покапать новые кишки и ты можешь сесть писать современные приложения
А фронтенд, это когда вас просят построить такой же дом, дают на выбор 1000 готовых конструкторов домов, куски уже почти готовых домов (которые друг с другом не стыкуются), при этом строить вам придется не на земле, а в центре океана, в котором обитают миллионы "подводных камней", а сам океан наполовину из кислоты, а на вторую из дерьма
. Браузер – это рантайм (самого браузера), в которых запихнули рантайм целого языка (Экзибит-стайл). И каждого браузера свой рантайм, но слава тебе господи, хотябы рантайм JS теперь только V8 или WebKit.
По факту фронтенд разработка происходит в sandbox, по правилам этого sandbox, которых во-первых миллиард, а во-вторых за которые не выйти. Любой разработчик осознавший это покрывается потом и депрессией.
На бэке рантайм может быть написан на самом же языке (например, рантайм go, написан на go), а значит вы можете прочитать и понять рантайм, а в некоторых ситуациях рантайма вообще нет (например, rust).
. UI либы – их слишком много, они постоянно меняются, их кишки очень сложные и самое ублюдское, что они стали обязательной частью разработки. Пройдя через js -> jquery -> backbone -> angular 1 -> vue -> angular 2 -> react я с уверенностью могу говорить: писать без UI либ – это просто ад.
Да, на бэке тоже есть framework-и, но кроме того, что большинство из них также годами уже устоялись, так ко всему прочему ты абсолютно спокойно можешь обойтись без них (а лично я считаю их антипаттерном)
. node_modules – ситуация, когда шутка "твоя мамаша настолько жирная" не работает, потому что твой node_modules всегда жирнее
Сколько же блять говна он за собой тянет... фронтенд покрылся таким жирным слоем библиотек, что когда пытаешься собрать даже самый минимальный проект ты понимаешь, что ты вообще не способен контроллировать что в него подтягивается
А бэке может хватить самого языка: в go вшиты http сервер, логгер и sql, поэтому, по факту, вы можете наклипать проект БЕЗ ЕДИНОЙ БИБЛИОТЕКИ
. Компиляторы – для того, чтобы собрать фронтенд проект, написаны программы, сложнее любого из этих фронтендов... не так давно придумали даже отдельный язык, чтобы писать JS компиляторы (вы знаете о чем я 😯)
Да, есть языки, которые славятся своими компиляторами (Java, С), но ей ты блять богу, они даже близко не стоят со сложностью сборки проекта формата "Hello world" для фронтенда
Если ссумировать
Чувствую, что я могу еще долго гнать эту телегу, поэтому в итоге:
На фронтенде уровень контроля падает просто в 0 и вернуть контроль не получится, потому что кол-во знаний для этого каждый день экспоненциально растет вверх.
А на бэке этот контроль практически полностью в ваших руках, что позволяет качественно расти постепенно, залезая в каждую отдельную детерминированную глубину.
Я думаю, это одна из причин, почему те, кто от фронта ушел в бэк не хотят возвращаться. Для меня это точно так.