Куда двигать из Frontenda?

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

Поэтому думаю, куда свинтить. Я поработал достаточно с современными (react, vue, angular) и легаси (backbone, knockout) фреймворками, не говоря уже о тонне проектов на Valilla JS, jQuery, Prototype и тд. Но хочется действительно серьезной работы, а не дивчики двигать. Вот размышляю над Python, Go или Node.js (хотя на последнем тоже сделал пару pet-projectoв и не считаю это достижением). Есть опыт с базами данных, но пока на уровне джуна.

Но так как у меня есть жена и дети, серьезной проблемой считаю понижение зарплаты раз эдак в 10 (на позицию Trainee с Senior придется падать). Стоит ли продолжать ковырять надоевший фронтенд или идти в бекенд и начинать ковырять его?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

Какой-то у вас неправильный фронтенд) Я наоборот последние годы сталкиваюсь с ситуацией, что найти нормального фронтендщика на проект очень сложно, хотя денег предлагают не меньше, а то и больше, чем бекендщикам.
Про двигать дивчики — тоже не совсем так. Я вот наоборот скучаю за двиганьем дивчиков и всякими веселыми анимашками. Вместо этого приходится заниматься унылой бизнес логикой в ентерпрайзе.
Ну и насчет развития в архитекты или техлиды ты тоже ошибаешься. Фронтенд сейчас по сложности совершенно не уступает бекенду, поэтому на серьезных проектах архитект или техлид должен разбираться и во фронтенде. Поэтому нет особой разницы бекендщику подтягивать знания фронта, чтобы стать техлидом, или фронтендщику подтягивать знания бека.
А на крупных проектах вообще есть по отдельному лиду для фронта и бека, так что специализация никуда не девается.
В общем стоит сперва попробовать менее радикальные способы, вроде смены проекта или компании, а уже потом браться за смену специализации.

Я работал и фулстеком и чисто фронтендером, сейчас занимаюсь преимущественно бекендом на go и иногда на node.

Все чаще сталкиваюсь на энтерпрайз проектах, что фронтендщик это человек, который особо ни на что не влияет и не является чем-то незаменимым, им не дорожат

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

Вот размышляю над Python, Go или Node.js

После JS/TS от Go может быть немного больно :). Он достаточно примитивен и вместо конструкций типа
arr.map(a => a.someFIield).filter(a => a.includes('someshit'))
прийдется писать раз в 10 больше кода. Системы типов как в TS там тоже и близко нет.

Но хочется действительно серьезной работы, а не дивчики двигать.

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

считаю понижение зарплаты раз эдак в 10 (на позицию Trainee с Senior придется падать)

Почему Trainee? Если есть неплохие знания CS и какой-то кругозор в техонологиях, то на Node.js скорее всего не ниже мидла можно найти позицию, а может и синьором после некоторой подготовки.

jobs.dou.ua фронт-энд 572 вакансии, бэкенд: Java — 338, C# - 364.
На рынке спрос очень большой, может сначала поискать работу посмотреть что предлагают/требуют?

В мене є ціла програма на десятки команд, і всі тільки фронтендні: зі своїми девами на останньому Ангулярі + небагато AngularJS, MQAs and AQAs on JS, архітекторами, Скрам-майстрами. Ростемо постійно. Може таки варто пошукати нормальну компанію і проект? Позицій для професіоналів у фронтенді просто валом, як на мене, так само, як і для професіоналів у бекенді.

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Коментар порушує правила спільноти і видалений модераторами.

Сюдячи з заголовку на курси англійської. 😁

вам бы курсы украинского тоже не помешали.

В связи с последними событиями в стране на вопрос «Куда двигать» ответ «В штаты какие-нибудь»

Супруга в БД ушла, но у неё кое-какой опыт в них был.

Зачем потеря зп в 10 раз? Я тут знаю человека, который когда-то давно спрыгнул с фронта на бэкенд без потери зп... fake it till you make it, как говорится

Расскажите это собеседующим в разных епамах, там если не знаешь стек, на котором проект от и до, выеамнипатходите.

Та якби воно тіко в єпамах було ;)
Мені он на днях пропонували піти на мідла node.js
При 15+ комерційного досвіду в програмуванні з них 10+ в вебі, але з node.js тільки 4
Посміявся, звичайно

мідла node.js

А какая разница что там за лычка ? Проси 4к и пофиг на лычки.

Ну или если не дают 4, бери 3 и работай два дня в неделю.

Та там вопрос денег был видимо на первом месте ;)
На лычки то понятно что нас...ть :)
И да мне меньше чем за 4.5 не особо и хочется работать, а на свои 4.5 я работу обычно в рамках недели/двух нахожу :)
То больше было про сам факт «фильтра HR»

Можно ковырять языки, компилирующиеся в JS: TypeScrypt, Dart, Elm, ReasonML/BuckleScript, ClojureScript, Haxe, "тысячи их"© — на выбор. :-)

Ну там не только GWT ещё) Просто я ссыль не помню на страничку с перечнем всех языков, компилирующиеся в js, поэтому и

"тысячи их"©

Коментар порушує правила спільноти і видалений модераторами.

Мо моим наблюдениям сейчас фронтендщики гораздо больше требуются чем бекэндщики.
А так бекэнд, как говорится, те же яйца, только вид сбоку
Если уж заняться чем то новым (и серьезным), то веб надо покинуть, в вебе все одинаково

Згоден з думками, що:
1. валити треба туди, куди цікаво;
2. фронтенд став (і продовжує ставати) надзвичайно складним і тут є куди рости;

Припускаю, що Ви працюєте в якомусь ентерпрайз секторі, а там майже не зав’язуються на фронтенд, тому і така робота. Принаймі із власного досвіду так мені здається.
Рекомендую в такому випадку знайти роботу в продуктовій компанії. Тут відношення до customer facing складної набагато серйозніше.

PS: як людина, котра любить UI девелопмент, пробую Swift.

Сейчас наоборот все усложняется на фронтенде и спрос только растет по вакансиям, но раз хочется что-то разнообразить, то почему бы не попробовать full stack для начала.

Я работал и фулстеком и чисто фронтендером, сейчас занимаюсь преимущественно бекендом на go и иногда на node.

Все чаще сталкиваюсь на энтерпрайз проектах, что фронтендщик это человек, который особо ни на что не влияет и не является чем-то незаменимым, им не дорожат

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

Вот размышляю над Python, Go или Node.js

После JS/TS от Go может быть немного больно :). Он достаточно примитивен и вместо конструкций типа
arr.map(a => a.someFIield).filter(a => a.includes('someshit'))
прийдется писать раз в 10 больше кода. Системы типов как в TS там тоже и близко нет.

Но хочется действительно серьезной работы, а не дивчики двигать.

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

считаю понижение зарплаты раз эдак в 10 (на позицию Trainee с Senior придется падать)

Почему Trainee? Если есть неплохие знания CS и какой-то кругозор в техонологиях, то на Node.js скорее всего не ниже мидла можно найти позицию, а может и синьором после некоторой подготовки.

серьезной проблемой считаю понижение зарплаты раз эдак в 10 (на позицию Trainee с Senior придется падать)

Это как-то уж очень радикально. Поробуй для начала найти позицию full-stack разработчика. Начни с full и плавно переключайся на stack. Со временем можно будет полностью переключиться на backend, если это то, чем интересно заниматься.

Вижу, такой коммент уже был.

full и плавно переключайся на stack

а со stack на register

Можу допомогти з Go в обмін на верстання pet-проектів (Go + PostgreSQL)

Допустимо Senior може вивчити на Middle, в моєму випадку можу вивчити на Junior Go, та в Дніпрі мало вакансій Go

Скільки там лендингів верстається за 2 тижні?

Мені треба пару інформативних сторінок це 4-6 годин, а скільки можна лендингів за 2 тижні складно сказати

часто видел, как годный хороший фронтендщик просит райз и ему отказывают, он уходит

Вот! Вот она суть проблемы. Всё, все откаментившие можете расходиться, вы тут обсуждаете не по теме. Вопрос состоит в том, как объявить ультиматум насчёт повышения зарплаты, и не отправиться в далёкие края после отказа.

jobs.dou.ua фронт-энд 572 вакансии, бэкенд: Java — 338, C# - 364.
На рынке спрос очень большой, может сначала поискать работу посмотреть что предлагают/требуют?

В мене є ціла програма на десятки команд, і всі тільки фронтендні: зі своїми девами на останньому Ангулярі + небагато AngularJS, MQAs and AQAs on JS, архітекторами, Скрам-майстрами. Ростемо постійно. Може таки варто пошукати нормальну компанію і проект? Позицій для професіоналів у фронтенді просто валом, як на мене, так само, як і для професіоналів у бекенді.

Зачем так радикально? Двигай в сторону full-stack. Аплайся на проект с нодой и смотри как тиммейты пишут, учись на готовом коде и проси часть задач.
У меня наоборот перекос с бека во фронт случился. Работы вагон.

Какой-то у вас неправильный фронтенд) Я наоборот последние годы сталкиваюсь с ситуацией, что найти нормального фронтендщика на проект очень сложно, хотя денег предлагают не меньше, а то и больше, чем бекендщикам.
Про двигать дивчики — тоже не совсем так. Я вот наоборот скучаю за двиганьем дивчиков и всякими веселыми анимашками. Вместо этого приходится заниматься унылой бизнес логикой в ентерпрайзе.
Ну и насчет развития в архитекты или техлиды ты тоже ошибаешься. Фронтенд сейчас по сложности совершенно не уступает бекенду, поэтому на серьезных проектах архитект или техлид должен разбираться и во фронтенде. Поэтому нет особой разницы бекендщику подтягивать знания фронта, чтобы стать техлидом, или фронтендщику подтягивать знания бека.
А на крупных проектах вообще есть по отдельному лиду для фронта и бека, так что специализация никуда не девается.
В общем стоит сперва попробовать менее радикальные способы, вроде смены проекта или компании, а уже потом браться за смену специализации.

Фронтенд сейчас по сложности совершенно не уступает бекенду

Ну эт вы загнули. Если смотреть по инфраструктуре, фронт как правило один монолит, в то время как на бекэнде микросервисы, облако, кубернетис, и 100500 разных баз и очередей.

Микрофронтенды набирают популярноть. Плюс с разными веб-компонентами сервис может быть не только про данные и поведение, а и про то, как это отрисовать и скомпоновать в UI.

фронт как правило один монолит,

Это делает его сложнее, а не проще, имхо

Облако и кубернетис — дэвопс, базы данных — дба. Все не нужно в бэкенд включать. А монолит как раз сложнее микросервисов. Иначе они бы не появились.

А монолит как раз сложнее микросервисов. Иначе они бы не появились.

Это к срачу «монолит вс микросервисы» из соседних топиков. Монолит как правило сложнее с точки зрения организации коду, ибо «ненависные» паттерны, ооп, фреимворки; а микросервис же тупой вход-выход никаких паттернов, ооп, ниче не надо. С точки зрения же архитектуры приложения вцелом, коммуникации между микросервисами и прочими компонентами, инфрастуктуры, итд — микросервисы могут быть гораздо сложнее, в зависимости от размера приложения.

Облако и кубернетис — дэвопс

В теории да, на практике синьйорам надо немного уметь, чтобы понять что и почему неработает.

базы данных — дба.

Когда последний раз отдельного дба видели? Если не свергбольшой оракл\майкрософт, то никакого дба нету — вникать в тонкости работы с индексами какогонить динамодб, или разчет оптимального количества партишнов в кафке — прийдеться самому (не то чтобы это чето сложное, но типичный фронт от этого оч далек).

Типичный фронт обычно думает что апишка это просто взял селект из базы дернул и все, а вот у них там ог го го — одна форма, вторая... ну и конечно же дж фреемверки на каждый чих.

Кстати, из этого заблуждения родился ноде.жс. А потом оказалось шо не тут то было

из этого заблуждения родился ноде.жс

так нода вообще родилась во грехе и исключительно, чтобы портить жизнь пхпшникам с джавистами :)

Когда последний раз отдельного дба видели?

У нас, например, на трех бекендеров и четырех фронтендеров три дба (еще три тестера, два из которых — могут в автоматизацию). Дба заняты постоянно. Мы кайфуем. База быстрая. Процедуры — я в их коде уже мало что понимаю. Бекенд — наполовину автогегеренный. Фронтендеры пашут шо паровозы. Потому что БА приходят к архитектору и фронтендерам, которые потом «принимают» апи с бэкэнда и говорят: подходит или нет.
Проекты разные бывают, но там, где есть фронт и бэк, сейчас фронт выглядит важнее и работают фронтендеры больше.
Остаются еще сервисы обработки данных, но я бы не называл это «бэкэндом».

Потому что БА приходят к архитектору и фронтендерам, которые потом «принимают» апи с бэкэнда и говорят: подходит или нет.

Не ну проекты где «бакенд» это чисто рест апи над базой — вполне бывают.

Амазон гитвейт с лямбдами — и бекэнд в таком случае вообще не нужен :-)

Остаются еще сервисы обработки данных, но я бы не называл это «бэкэндом».

В долине есть странное разделение между софтвер инжинир и дата инжинир, но оно мне не понятно.

Фронтенд сейчас по сложности совершенно не уступает бекенду

конечно. распределенный fault-tolerant computation engine на JS — что может быть страшнее!

Нафига такое на ночь писать?!

Двигаться нужно туда где интересно, а это уже дело личное, тут советовать только вредить, я так думаю ))
Могу посоветовать одно, отдохнуть.

Двигаться нужно туда где интересно

Кому-то могут быть интересны деньги и человек может быть готов учиться чтобы зарабатывать больше денег.

Я очень сильно завидую таким людям, если работа не интересная продуктивность падает очень сильно, потом начинается апатия, и выбираться из такого состояния долго и мучительно.
«Если долго делать то что не нравится, перестает хотеться делать то, что нравится».

Так совсем не обязательно чтобы работа при этом не нравилась 🙂. Лучше чтобы нравилась конечно.

Очень зря так думаешь.
Меня когда сбросили с javascript на java писать, я через 2 месяца с компании сбежал.

Хотя денег они наливали как никто другой до них, и скорее всего как никто другой после.

Мне хотелось выть и биться головой об стенку, когда пришлось вернуться к абстракциям абстракций абстрактной абстракции.
Не хотелось уже никаких денег.

На java я раньше писал, с тех пор как перешел на js вспоминал её как страшный сон.
А тут такое «обучение» за их счет.
Спасибо.

Каждому свое, некоторым от дж хочется убивать :-)

так с тупоскриптом джависты уже давно нашли интерфейсы в JS, все остальное потихоньку подвезут, а там и абстракции абстрактных абстракций не за горами)

Ну я так думаю, ты сбежал, потому что джава говно, а не потому, что не смог в ней разобраться.

Первая мова и Haskell. Частный случай — это когда первая мова — Haskell.

Цэ нэ було другою мовою.
Я ранише працював с джавою, алэ колы повернувся до нэйи, я майжэ нэ став писюнковым злодием, у видносыни що до оточуючых.

Не брехня, но... Мова — то дело десятое, если не сотое. Учить придется тонну другой специфики, множество дополнительных инструментов, которые «облегчают работу» (лол) и могут устареть, пока ты дочитаешь мануал. Всякие «экосистемы» и прочую подпихню... А другой язык выучить — это не проблема, да.

javascript на java писать, я через 2 месяца с компании сбежал

Ты просто попал в мир ООП, где надо думать, что пишешь, и тебе не зашло, так и скажи :-З

В моем js + nodejs тоже есть ооп если чо, но именно от java/c# хочется принять тройную дозу евтаназипама.
И если чо, работал на java изначально, и считал ею совершенством. Ага.

js + nodejs тоже есть ооп

Прохладные былины

В этом «ооп» совсем не те «обьекты». Там вообще все по укуренному сделано.

Очевидно, судя по комментариям, что до этого многим нужно дорасти.
Ладно бы если мне не с чем было сравнивать.

что до этого многим нужно дорасти

Ты еще забыл добавить классическое «мне вас жаль».
Можно еще неоклассику «мне 42 и я не лох».

Добавь себе сам по вкусу любые ингредиенты.
Я ни в чем твою шеф-поварскую фантазию не ограничиваю.

Только предположу — джавашник?

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

Если ты кайфуешь от того, что для одного и того же действия на богоподобной яве нужно написать в десятки раз больше кода, чем на js, то это не ко мне, это к профильному врачу.

Хотя, может тебе платят за строчки кода, как какому-нибудь Кумару, а не за решение задач бизнеса.

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

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

Я могу поспорить об ООП и пошвырять говн на вентилятор с шарпистами, сектантами Бугаенка или даже с питонщиками, но слушать про ООП в жс это все равно что слушать про микросервисы внутри баш-скрипта.

Все правильно. В джс нет ООП и он там совершенно не нужен, как и где бы то ни было еще, ибо как концепция ООП выглядит неплохо, но на практике получается абсолютная дичь.
А вот насчет поддерживаемости, структурируемости, опен/клозд и прочих солидов — это совсем другой разговор. Все эти вещи к ООП никоим образом не относятся и прекрасно себе живут в современном джсе

Ты абсолютно прав: в джс никогда не было и нет классов и они там совершенно не нужны, ибо в джс есть прямое линкование объектов между собой) Тот унылый сахарок, в виде классов, не так давно добавленный в джс, использует все то же прототипное наследование, которое было в джс с самого начала, просто оборачивает его в привычный для джавистов синтаксис, чтобы у них сосудик не лопнул от перенапряжения)

Не повод для гордости, а досадное недоразумение. Но все мы люди, все мы ошибаемся.
Тайпскрипт добавляет некоторые возможности статической типизации, хотя тут тоже большой вопрос зачем она нужна в джсе. Но тайпскрипт не позволяет писать абстрактные фабрики абстрактных фабрик с 20 слоями абстракций. Так что джависты снова в печали)

Но тайпскрипт не позволяет писать абстрактные фабрики абстрактных фабрик с 20 слоями абстракций.

почему не позволяет? пиши нехочу.

UI — одна из немногих предметных областей, которая прекрасно ложиться на ООП as is. Потому 100500 фреимворков ее успешно эмулируют.

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

Чувак, я одно время работал чисто как джс девклопер и был на больших проектах на бэкэнде с джс. Это худшее что я видел в своей жизни.

В этом вся суть обсирания джса — кто-то когда-то где-то работал на индусском проекте с простынями джс кода на джквери, поэтому джс — говно)
Посмотри на нормальные проекты с тем же Реакт стеком — все четенько разложено по солиду, файлики не больше 200 строк кода, представления отдельно, модели отдельно, бизнес логика отдельно, сайдеффекты отдельно. А если накрутить немного сендбоксинга, то получаем прекрасные полностью закрытые ИоС контейнеры, которые общаются между собой только по заданным интерфейсам. Чем не микросервисы?
При этом все это работает без всякого ООП в виде классов, наследования и абстрактных интерфейсов. Только чистые функции и их комбинации, только ФП.

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

полностью закрытые ИоС контейнеры, которые общаются между собой только по заданным интерфейсам.

Отлично пишутся на нормальном ооп языке и вглядит это куда читабельнее и понятнее сразу, ибо интерфейсы и классы идут из под коробки.

Но фанатам js просто нравится изобретать велосипеды и собирать баттлкрузер из говна и палок.

Все это прекрасно пишется и в функциональном стиле, под который современный джс и заточен.

Но фанатам ООП, которые не пробовали ничего другого, нужно обязательно всунуть 20 уровней абстракций, просто чтобы было, и назвать это читаемым и понятным кодом. Держите нас в курсе)

нужно обязательно всунуть 20 уровней абстракций, просто чтобы было, и назвать это читаемым и понятным кодом

Это именно поэтому в js сейчас куча

полностью закрытые ИоС контейнеры, которые общаются между собой только по заданным интерфейсам

и прочих вещей типа фабрик и декораторов (я про ангуляр ща)?

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

Тот самый простенький джс на котором легко накидать функцию на коленке уже ушел давно вместе с jQuery. Сейчас это неповоротливый монстр собранный из говна и палок.

под который современный джс и заточен

Нет такого понятия как «современный джс». Есть просто джс, который представляет из себя не более чем листок с инструкциями для манипуляций с ДОМом.
Под «современностью» ты наверное понимаешь фреймворки 100500х версий, которые устаревают через час после релиза и позволяют валить код не в одном файлике, но компилиируются в ту же самую муть в 1 файле на пару мегабайт?

И ни под что он не заточен. Так же нотепад.ехе заточен для редактирования текста, как и джс для программирования.

Посмотри на нормальные проекты с тем же Реакт стеком

Я тоже писал на реакте. Он просто терпим. Но даже несмотря на то, что его типа можно раздробить на миллиард файликов в каждом из которых по компоненту — это не делает его структурируемым.

Та нормально реакт структурируется.

Вот редакс сложнее структурируется, из-за хардкода путей в сторе.

нормально реакт структурируется
можно раздробить на миллиард файликов в каждом из которых по компоненту — это не делает его структурируемым.

При импорте любого компонента — это все та же мапа с полным доступом всего отовсюду куда угодно кому угодно. Это все тот же сраный js, просто распидарашенный на файлики. И при импорте он все так же лепится в один гиперскрипт, и изза этого код компонента А не может использовать код компонента Б, если в Б упомянут А, чего не случается в нормальных компилируемых языках.

Попа дробней плз. Про мапу с полным доступом, про circular dependency в джс и т.д. А то, мне кажется, я что-то не до конца понял в этой эмоциональной реплике.

Про мапу с полным доступом

А что, «объект» в жс это уже не мапа с возможностью по точке получить доступ ко всем что в ней лежит?

circular dependency в джс

серьезно?

import B;
class A {
     public static X x;
     ... 
     B.y; // use somewhere in code
}
--------
import A;
class B {
     public static Y y;
     ... 
     A.x; // use somewhere in code
}
.нет корі

Серьезно? Речь сейчас не за явную инжекцию объектов с круговой зависимостью, а просто об импорте и видимости кода.
Если так — говно ваш нет кор :)

Так вот в жс так низя. Ибо А и Б в жс — ни*** не классы, а просто кусочки общей простыни, но написанные в отдельных файликах. И кто-то из них будет добавлен в простыню выше, а ктото ниже. И тот, то выше, не должен содержать ссылку на того, кто ниже.

Насколько я понял он как раз таки об

явную инжекцию объектов с круговой зависимостью

ЗА 8 лет работы ток один раз сталкивался с circular dependency, лечится простеньким фиксом, в том DI фреемверке что был, надо было лишь сменить в конструкторе интерфейс проблемного модуля на лямбда выражение.

Ну или я не вьехал о каком кейсе речь )))

Ну это яно проблемы с дизайном.

о А и Б в жс — нихуя не классы, а просто кусочки общей простыни, но написанные в отдельных файликах.

Это давно уже не так, а в ноде так никогда и не было. Даже бандлеры так не делают (не склеивают файлы тупо как текст в общую простыню), и, очевидно, что они и не могут так делать.

Таки шо вы гаварите.

и, очевидно, что они и не могут так делать.

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

И объясни же мне, как магия жс это обрабатывает, а ну? Если вообще все потом все равно пакуется в единственный скрипт-переросток?

Я говорю о том, что файлы модулей не тупо склеиваются в одну простыню.

Это очевидно, потому что иначе такой, например, код не смог бы работать:

// file A.js
   let a = 1;
   export function fun1(b) { 
       a++;
       return b + a;
   } 

// file B.js
 const a = "abs";
 export function fun2(c) { 
     return c + a;
 } 

При тупом склеивании произошло бы повторное объявление переменной a.

Уточню специально, что бандлер, конечно же, объединяет скрипты в один (это то, зачем он создан), но не тупой конкатенацией, и с областями видимости там все в порядке.

Чувак похоже на полном серьезе думает, что бандлер это такой конкатенатор-переросток (ну джс же) — просто лепит из разных кусков одну простыню по порядку. :D

Ясен хрен, что он чтото там себе думает, это я даже не вносил в дискуссию. Факт остается фактом что все это сливается в одну помойку. И когда ты кодишь — все тебе везде кругом видно потому шо сраный жс.

Блин, да естественно он ищет и переименовывает переменные, чтобы избежать дубликации и обеспечить уникальность в пределах склейки всех твоих файликов в одну гигапростыню, это же ежу понятно.

То есть по-твоему сборка джс модулей это обычное склеивание всех скриптов в один с обычным переименованием переменных? и всё это в одной области видимости? так что ли?

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

Ясно, понятно. Этот хейтер-неосилятор сломался, несите нового.

Напишешь, когда из жс и вебпака исчезнут сиркулар ексепшны, а из жс глобальная открытость всего всем, и появится какая-то другая возможность структурирования кроме распиливания простыни на файлики.

codesandbox.io/s/frosty-wescoff-ydect

Покажи на кукле где дядя тебя трогал этой болванке, что и как не должно работать.

Напишешь, когда перестанешь спорить с тем, в чем не разбираешься.

Так и в дотнете нельзя, и нигде нельзя.

Можно только в тайпскрипте и только для определений типа, которые не попадают в результирующий код (ну и для некоторых других языков с препроцессором, например, для C/C++).

Потому что при загрузке сборки в дотнете выполняется инициализация и выполнение кода (например, вызов статических конструкторов), а в твоем примере для инициализации А нужно инициализировать В, и наоборот.

и нигде нельзя

Поздравляю, ты когданибудь компилируемые языки видел?
Пойди сделай это в джаве, увидишь что в нормальных языках можно.
После «нигде нельзя» не читал.

В джаве не знаю, в дотнете так нельзя.

В .NET так тоже можно, там же не объекты инжектятся, а используются статические методы. Было бы нельзя, если бы классы жили в разных проектах. Но в этом случае была бы ошибка компаляции.

Т.е. вся дискуссия свелась к тому, что джс плохой, потому что он не является компилируемым языком? Поздравляю, Шарик, ты балбес.

Кратко о дж — гавно баба, гавно дед, гавно псика и мэд! :-)

Так вот в жс так низя. Ибо А и Б в жс — нихуя не классы, а просто кусочки общей простыни, но написанные в отдельных файликах. И кто-то из них будет добавлен в простыню выше, а ктото ниже. И тот, то выше, не должен содержать ссылку на того, кто ниже.

Это при условии что они находятся в одной области видимости.

Во-первых, ты, как и Кумар, измеряешь качество языка в количестве кода

Вообще, он написал прямо противоположное.

В том-то и дело, что нет.

на богоподобной яве нужно написать в десятки раз больше кода, чем на js, то это не ко мне, это к профильному врачу

Пациэнт меряет качество языка по количеству строк кода. Достаточно, чтобы приравнять к разным там Раджавшанапутрам.

что для одного и того же действия на богоподобной яве нужно написать в десятки раз больше кода, чем на js

Та с точки зрения языка, учитывая лямбды со стримами — всего в два раза.

Историчекси сложилось, что во многих проектах на жабе — ООД головного мозга и сплошной оверинджениринг. Но на практике никто не запрещает так не писать.

Аджайл пофигу — никак не влияет.

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

Историчекси сложилось, что во многих проектах на жабе — ООД головного мозга и сплошной оверинджениринг.

Исторически сложилось, что большинство критикующих ООД на доу:
а) писали только круды на полтора контроллера и два селекта
б) по причине п.а) не знают, что такое ООД и зачем он нужен
в) по причине п.а) не видели что происходит на большом проекте без ООД

как в древних пхп по типу словаря пропертей или что иное?

Да там как минимум наследование прототипное. Что уже в корне многое меняет. И интерфейсов нет. Я не знаю как джс можно ооп называть?

А есть какой-то ООП стандарт? Я просто не в курсе, правда, интересно

ООП не нужен, функциональное программирование + прототипное наследование решают все проблемы

ООП не нужен

...ко-ко-ко
Сорян, не сдержался.

Гарантировать-то можно, только зачем?) Ты почему-то преподносишь фичу, как баг. Хотя о чем говорить с любителями писать абстрактные фабрики абстрактных фабрик просто ради того, чтобы добавить в код очередную абстрактную фабрику?) Благо рынок расставил все на свои места: вакансий по джсу в 2 раза больше чем по джаве, зарплаты тоже выше. Так что продолжайте фапать на ООП, скоро останетесь без работы)

Это не заслуга ООП как такового, а типизации и рефлекшена.

Мне тоже дотнет кор очень нравится, но система типов сишарпа и рядом не стояла с тайпскриптом. И это очень печально.

В Тайпскрипте своя крутая и реально очень мощная система типов.

(На самом деле, аннотаций типов, которые существуют только в компайл-тайме, но для простоты будем называть их типами).

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

Итак, что там есть, из того, что (возможно) было бы круто иметь в том же шарпе:

1. Типы-пересечения — новый тип с полями обеих типов

2. Типы-объединения — переменная может содержать значения
любого из перечисленных типов. Есть доступ к общим полям.

2.1 Эмуляция discriminated unions

3. Все значения по умолчанию не nullable

4. Алиасы типов. type Name = string, и можно передавать только значения таких же типов.

3. Типы-значения. Можно сказать, что переменная может содержать, например, только строки «a», «b» и «c». Работает с числами, булевыми значениями, интерфейсами и тд

3.1 В шарпе это не очень нужно, но можно создать типы значения на основе имен свойств определенного типа. А можно еще и добавить условия, например, имена только строковых свойств.

4. Рекурсивные определения типов (с некторыми ограничениями)

5. Полиморфный this. Возможность сделать возвращаемое значение всегда того же типа, что и текущий класс.

6. Типизация элементов массивов. Т.е. не просто массив строк, а массив с первым элементом «a», и вторым «b»

7. Индексирование типа. Можно писать MyType["myProperty"] — и получить тип свойства myProperty

8. Mapped types. По интерфейсу создать другой интерфейс, чьи поля, например, nullable. Либо промисы (или таски), резолвящиеся в тип оригинального поля.

9. Type inference. Например, создать обобщенный тип, который получает функцию, а возвращает тип ее результата. Либо второго параметра.

А не слишком сложно и много? Напоминает то, куда движется С++ последние 10 лет.

Удобно пользоваться простым инструментом, а не тем, который может все.

Сложно и много, так и есть.

Из простых инструментов есть просто джаваскрипт.

Эмуляция discriminated unions

А чекать полноту (exhaustiveness) при паттерн-матчинге вариантов умеет?

Нет, там и паттерн-матчинга как такового нету, только type narrowing при совпадении дискриминатора.

Осталось прейти из тайп скрипта на purescript и наступит фронтендовское фп счастье.

DI фреемверки уже хрен знает сколько лет выполняют функции фабрики, все очень просто и понятно.
И этот самый DI уже давно в ангуляре и ему подобных. Увы но ваш гибкий джс мир обосрался и сейчас также завален фабриками и декораторами, всякими анализаторами кода и прочими оверхэд инжиниринг штуками.
Тот гибкий и простой джс, где ненужны классы, это фронт на уровне jQuery, который писали лет 8-6 назад.

джс мир обосрался

...пластмассовый мир победил
макет оказался сильней
оооо моояя оборооонаааа

Недавно немного разбирался в нашем фронте в рамках дебага бага. Ну там нода с ангуляром; мвц, сервисы с хитрым инджекшном, юнит тесты, rxjs во весь рост (которым мало лиш кто знает), и еще всякая дичь — имхо по нагрузке абстракций вполне на уровне современных микро/мили сервисов на спрингбуте (и его аналогах). А если брать лямбды то часто народ на джаве как на го пишет.

Ну как бы у фронта есть проблемы с развитием ибо с бекенда в архитекторы или тех лида легко прыгнуть с фронта очень сложно. Вообще хороший фронтендер очень даже ценится но только на серьезных проектах, а если это верстка то да, всем пофиг — дай больше импортантов чтобы работало и всем пох

Если фронт ушел то наверное ушел на лучшие деньги, ну или если им не дорожат как упомянул ТС то либо компания жлобится либо он уж не такой и хороший фронтендер как специалист и проекту можна и без него

Пятница же вроде вчера была...
По существу, вы видимо находитесь не в том месте и не в том обществе крутитесь раз вас не ценят. Фронтенд сейчас это не далеко не просто «двигать дивчики», много SPA которые сейчас стартуют вообще делают serverless и сейчас тенденция грузить клиент логикой, опять таки сейчас активно развивается PWA. Если вы работали с реактом, попробуйте уйти в мобильную разработку на RN, многое интересное узнаете и научитесь.

Підписатись на коментарі