Pull to refresh

Comments 49

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

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

При этом попытки улучшить положение, тот же TypeScript, вызывают уважение и надежду.

Тайпскрипт это замечательная обертка над JS, которая добавляет то, чего здорово не хватает «ванильному» javascript. Но это всего лишь обертка, сам код все равно остается кодом JS. Как и код в любом фреймворке. И вся статья по сути о том, что писать код надо, понимая логику и структуру языка, а не оберток над ним. И изучение JS вовсе не отменяет изучения фреймворков. Вопрос в том, что первоначально, что вторично. Иначе потом начинаются такие чудеса в коде…

А что, TypeScript уже вышел из моды? Это, вроде бы как, не фреймворк.

По сути — ответил выше. TS это расширение, а не замещение. 

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

UFO just landed and posted this here

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

UFO just landed and posted this here

Сейчас во фронте очень распространен framework based learning. Это как раз то, о чем Вы пишите в статье. Но, основ никто не отменял и базовые принципы программирования все равно рано или поздно придётся изучать. Имхо, именно отсюда растут ноги предвзятого отношения к JS у сообщества. Хотя, я считаю, что это отличный язык, особенно с надстройкой, в виде TS.

Именно так. Но дело не в том, что «во фронте распространен», а в том, что «в интернете распространен». Попробуйте найти курс, который учит фронту не с «первым делом установим реакт...» а с «давайте разберемся, как браузер строит DOM-дерево и как этим можно управлять»… Как итог — почти все и начинают изучение не с того конца. Да, это работает, но непродуктивно, о чем и пытался сказать в статье.

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

Попробуйте найти курс, который учит фронту не с «первым делом установим реакт...»

Платные - легко, навскидку: Яндекс.Практикум, Hexlet, Glo Academy ;o)

Программист Javascript- это и есть водитель КАМАЗа.

Любой разработчик, работающий во фреймворке, пишет JS код и только его. Он работает в JS по правилам, которые ему на том же JS (с опциональной надстройкой в виде TS) задали другие программисты, за него реализовавшие часть логики, спрятав ее под капот фреймворка. И либо он это осознает и понимает не только ту часть, что снаружи, но и ту что внутри — либо нет.

Ведь очевидно, что основной профессиональный «скилл» водителя — умение управлять транспортным средством. Каким конкретно — вопрос, по большому счету, вторичный.

Основной "скилл" пилота - умение управлять воздушной машиной. Добрый день, я пилот воздушных шаров и парапланов, хочу поуправлять у вас боингом. Что значит нет? Я же учил аэрофизику вместо курсов пилотирования боинга, я универсал а не зашоренный "знаток" одной машины.

Кому легче найти работу: тому, кто умеет делать только левые ботинки, только правые, или тому, кто может сделать пару, которую можно носить?

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

Статья полностью построена на аналогиях и ей не помешала бы хотя бы пара аргументов.

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

Незачётный PR...

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

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

А вот если мне потребуется что-то экзотическое на фронте - буду искать профильного спеца по JS, а с фреймворком как-нибудь разберёмся.

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

Разработчик, изучавший JS и программирование — спокойно зайдет и в реакт, и в ангулар, и во вью.

Не, не зайдёт. Более того, слишком часто готовые спецы по JS городят свой огород вместо использования фреймворка.

Доходит до смешного - спец по бэку порой лучше осваивает фреймворк, чем крутой js-ник.

Нет, не зайдет. Потому что фреймворк - это не просто обёртка над языком. Это совокупность идей и концепций, которые могут быть реализованы на JS, но не обязательно выводятся из него.

Возьмём то же самое реактивное программирование. На JS есть ее реализация в виде RxJs, но в самом языке понятия вроде Observables просто нет. Из этого можно заключить, что из простого знания JS это не узнать.

Фреймворки и библиотеки сами по себе может и не научат языку, но могут научить как раз таки многим подобного рода идеям. Те же самые паттерны, code styles, ux и многое прочее

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

И ваша компания готова оплачивать время и профильные курсы для разработчика, пока он будет "заходить"? Я думаю тогда нет никаких проблем. По моим прикидкам хорошему js-разработчику ( синьеру ) потребуется месяц интенсива чтобы изучить rxjs, ngrx, typescript и несколько UI библиотек чтобы не городить велосипед. А уж освоится с самим Angular и его CLI не будет станет проблемой. Мидлу и джуну придется осваивать эти инструменты дольше, но если компания все оплачивает, то это конечно респект.

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

UFO just landed and posted this here

Тогда и от программистов нужно требовать умение вождения самолётом, мало ли какая ситуация может приключится.

Скорее, требовать принципиальное знание устройства и правил (умения поменять колесо, понимания, что надо доливать бензин и проверять масло, знания что на красный свет ехать нельзя — в аналогиях автомобилей) — мало ли какая ситуация может случиться :-)

На бэкенде JS тоже самое. Приходит человек который работал с фреймворком X. Начинаешь спрашивать че да как там. Ну вот например вроде человек и знает что есть такая штука как dependency injection, а для чего он в принципе нужен объяснить не может. Вот он умеет им пользоваться во фреймворке, и все. Забери фреймворк - и начнутся обычные require() везде и вся... потому что человек учил фреймворк а не общие принципы и практики.

Потому что есть легаси. Потому что фреймворки меняются. Есть фреймворки без встроенной магии DI контейнеров. Если нужно либу написать/подправить и т.д. Забери фреймворк, и человек беспомощен.

Не все же простенькие крад ендпоинты пишут. Есть вещи чуть посложнее, и хотелось бы чтобы человек понимал принципы. Фреймворк должен быть лишь инструментом.

Понимая принципы мне например все равно на каком фреймворке писать. Я их даже не "учу". Для меня это такая же "либа" с документацией.

А вот когда человек не понимает принципов, он реально "учит" фреймворк...

ИМХО

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

Мне кажется, что нужно исходить из потребностей рынка труда. Если на 80% вакансий нужен реакт, а на 20% ангуляр (к примеру, с потолка), то лучше потратить время на изучение фреймворка, а уже в процессе работы доучивай js сколько душе угодно.

Да, согласен с вами. Частично согласен. Вот выкладывают вакансии HR-менеджеры, для которых и React, и Angular — это ракетная наука, без наличия которых в резюме приглашать кандитатов ни-ни, и попробуй с этим что-то сделать. Если кто-то хочет быть хорошим разработчиком, то безусловно нужно учить js, event-loop и т.д., но если кто-то хочет быть разработчиком, которому платят деньги, то придется учить фреймворк. Но что хорошо, так это то что любой js-фреймворк можно изучить за ~7 дней

Заканчивается всё возмущенными репликами в профильных чатах: «Я им показываю собственную соцсеть, которую сделал в одиночку за два месяца, а они меня просят рассказать про Event loop. Им разработчики нужны или теоретики?!?!»

А теперь другая ситуацию. Приходит джун натаскавшийся на однотипных собесах, заучивший все теоретические основы (а их и не так уж и много по большому счету), в компанию которая разрабатывает собственную соцсеть. Да еще и на позицию мидла, да еще и без знания фреймворка. Ничего что он там наговнокодит и всю архитектуру поломает? Или будете с ним часами бодаться на код ревью и баги за ним фиксить? Ну да, зато он знает про event loop...

Уже много лет работаю с фреймворками и вот абсолютно все равно мне что сработает раньше промис или таймаут. Если надо будет всегда можно уточнить. 5 минут это займет. А вот если ui или асинхронная логика вся построена на таймаутах то это уже извините шляпа. Такие вещи как Imediate functions и прототипы вообще я считаю рудименты языка. Все фреймворки построены на модулях и синтаксис уже давно есть адекватный для наследования. Однако так как это важная часть js core то на собесах вас будут 80% времени будут об спрашивать и задавать задачки. Пока наизусть не выучите.

Только что это даст если вы идете на позицию react разработчика к примеру? И уж если вы думаете что выучить фреймворк легко, то как насчет всего сопутствующего? Либы, state management выбрать. Правильную архитектуру подобрать для проекта, раскидать бизнес и ui логику правильно чтобы не писать лапшу в компонентах, чтобы приложение было гибким и хорошо расширяемым, код понятным и читаемым? Для этого знаний js core боюсь будет недостаточным.

абсолютно все равно мне что сработает раньше промис или таймаут. Если надо будет всегда можно уточнить. 5 минут это займет.

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

Ну я не говорю что базы вообще никакой не нужно, я думаю что и то и другое нужно в равной степени. Просто тут даже название статьи такое, что мол фреймворки учить не нужно. Да и все повально одно и то же повторяют, типа js core важнее. А там вообще нет по сути нет ничего такого что за пару недельм или собесов не выучить

Название статьи, конечно, провокационное)) тем более что, продолжая мысль, можно написать следующую статью «Перестаньте учить JS, учите программирование» (надо будет запомнить). Но мысль не о том, что учить фреймворки НЕ НАДО. А о том, что изучить их без знания базы —  нереально. И да, я принципиально разделяю «изучить» и «зазубрить, как сделать что-то». Первое подразумевает понимание, второе, по сути, копипаста с разработчиком в роли исполнительного механизма.  

П.С. Вопросы по js на собеседованиях — это отдельная тема, грустная и печальная :-) 

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

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

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

Как раз за счёт разношертности экосистемы реакт и возникают вопросы к знаниям js.

ФЕ фреймворки мало отличаются по сложности от БЕ, но БЕ разрабы почему-то не пишут вот таких слёзных статей. Интересно почему?

Возможно, потому что основная масса новичков сначала расшибает себе лоб об фронтенд, а на бекэнд приходит уже умудренными жизненным опытом?)) И это не учитывая того, что в статье речь и про фронт, и про бэк)

Да потому что экосистема JS сумасшедшая. Мало того, что JS 2005 года разительно отличается от JS 2020 года. Я даже не говорю про Wat - к этому можно привыкнуть и смириться: https://www.destroyallsoftware.com/talks/wat

Так ещё jquery, TS\flow, babel, grunt, gulp, webpack, node (npm\yanr), deno, express, angular, react, vue, electron (и иже с ними). Часть из этого немодна, часть устарело, перед обновлением node.js лучше молиться всем богам, чтобы что-то не сломалось из пакетов...

А в python за это время print сделали функцией (утрирую, конечно). При этом pip install django как работал, так и работает с минимальными несовместимостями.

За пятнадцать лет работы фулстак программистом, чистый js понадобился только в самом начале и потом ситуационно. Зато например тот же jquery, motools или prototype нужны были гораздо чаще. И в особенности extjs, на изучение которого уйдет гораздо больше времени чем на изучение чистого js.

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

В могли бы вы пояснить, что в вашем понимании "глубокие знания js"?

Никто не говорит, что в работе не надо использовать фреймворк. И вы, кстати, лишь подтверждаете основную мысль статьи — вы В САМОМ НАЧАЛЕ освоили JS, потому что он вам понадобился, а потом спокойно пошли в частности — библиотеки и фреймворки. Суть в том, что 15 лет назад именно так все и происходило, и свою базу вы считаете само собой разумеющейся. Сегодня это, мягко говоря, не так.

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

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

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

Но тогда придется дополнительно к js ещё упарываться в питон.

Я просто к тому, что бывают и такие случаи. К примеру, если человек изучал бэкенд на Питоне и ему нужно добавить к своим знаниям фронтенд разработку. Проще изучить тот же реакт, чем сначала весь js, а только потом к фронтенду переходить.

Тут соглашусь, я немного субъективно посмотрел на ситуацию.

Но вообще Реакт с хуками теперь, прямо скажем, весьма непрост и местами коварен, тут требуется более-менее прилично знать js, чтобы не облажаться.

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

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

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

А если вы - нормальный человек, то вам нужны деньги, поэтому, смотрите на рынок труда и изучайте то, что даст вам возможность максимально быстро начать зарабатывать. Заметьте, НИЧЕГО не мешает вам углублять знания в JavaScript, одновременно получая деньги за проекты, сделанные на фреймворках. Я ни в коем случае не отрицаю жизненной необходимости изучать технологию, находящуюся под капотом фреймворка, потому что когда вы столкнетесь с ситуацией, когда совершенно не будете понимать, почему ничего не работает, то эти знания очень пригодятся. Но... и StackOverflow тоже где-то там, и многие из этих проблем там уже решены...

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

Ну и почему дальше мысль не развить? Если разработчик C++, почему он не может на JS писать?! Я через неделю на ноде стал писать, когда работодатель знал, что мне вообще без разницы на чём. И прекрасно получилось всё.

Sign up to leave a comment.

Articles