Вы решили стать разработчиком. Почему нужно учить javascript, а не java?

Привет, уважаемая редакциия! Здравствуйте, коллеги.

Через пару-тройку месяцев мне, как разрабочику frontend, исполнится четыре года. А до пятидесяти в паспорте останется немногим меньше двух лет. За эти четыре года жизнь менялась стремительно, и теперь, спустя время, можно проанализировать, какие решения оказались удачными, а какие — не очень.

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

Начнем с моего бэкграунда. Я закончил Донецкий политех по специальности Мишустина (системотехник), в 1994г. Проработав пару лет эникейщиком на различных позициях еще в Донецке, я присоединился к семейному полиграфическому бизнесу, в котором оставался следующие 15-20 лет. Вот эта вот дельта в пять лет от того, что был период, когда бизнес уже закрылся, а я еще оставался в рекламно-полиграфической области, пока не понял окончательно, что лучше начать с нуля, чем пытаться пристроить куда-то свой вот этот вот отраслевой опыт.

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

Сегодня я думаю, что эта последовательность — сначала js, потом java — оказалась правельной. Рассмотрим причины.

Почему Java вторая опция рядом с Fronted, а не python, c#, golang? Потому что java — это энтерпрайзный код. Это большой, благополучный закачик. Это медстраховка. Это коллеги в большом количестве, у которых можно учится. И таких вакансий много. И их будет много через 10 лет.

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

C# — отличный язык, возможно лучший. Но он не победил Java, и уже не сможет. И помните, какой язык лучше, решают не разрабочики. А бизнес. Когда выбирает технологический стек. Разрабочик иногда может на этот выбор повлиять, но в целом для него этот выбор — данность.

Golang — судя по всему будет расти. Выучите его после Java, чтобы в большой стабильной конторе переписывать старый код на java на go. Как это происхоидт сейчас, например, в Яндексе.

И в итоге, почему все-таки frontend а не Java?

Во фронтед более низкий порог входа. В javascript есть четыре «больших» темы для изучения: замыкания, this, асинхронность, наследование. Есть конечно еще верстка, про которую отдельно далее. А пока про эти четыре темы.

Замыкания — это паттерны Модуль, Декоратор, и то, как работает js на коллбэках. Это действительно нужно знать. Это прийдется разобрать, выучить, иначе будет больно. Но это более чем реально, и в сравнении с тем, через какие «но» работает замыкание, например, в java, это ничто.

Работа this в js сильно отличается от this в других языках. Здесь нужно будет разобрать нескольк вариантов его использования — в конструкторе, в инстансе, в методе, в стрелочной функции, и да, js-ный this многолик, ничего не поделаешь… Т.е., я хотел сказать, слава богу. Но для начала вам будет достаточно и пары случаев из этих десяти, чтобы начать работать, получая сначала неплохие деньги, а затем очень неплохие.

Асинхронность. Промисы, setTimeout. Тоже тема не очевидная для новичка, зато последняя из важных. Если потянули замыкания и this, асинхронность тоже освоите, ну, плюс месяц.

Все. Вы спросите, а как же наследование? Как концепт, прототипное наследование очень простое. У него много нюансов реализации, и много самих реализаций в JS. Было. До прихода стандарта ES6. Отныне вопросы про наследование — это скорее способ показать новичку, что он еще не все знает, чем must have для начала реальной работы.

А теперь вопрос. Эти три «большие» темы можно сопоставить с одимими джавовскими дженериками? Да легко. А давайте вспомним, как в java реализовано функциональное программирование. Вот эти все ссылки через два двоеточия… Это более чем сопоставимо с неуловимым this в js…

В общем, как язык, js гораздо дружественнее к новичку.
Да-да-да, конечно, есть css. Каскадные таблицы стилей. Восемь способов оцентрировать div по вертикали, и ни одного человеческого. Инкапсуляцию придумали трусы. Заставте это работать во всех браузерах. А у вашего начальника вообще blackberry, и там тоже долно быть красива. Но.

Flex-box осваивается быстро, и вы уже можете что-то показать. Остальное можно учить уже на работе, а кросс-браузерную верстку сбрасывать верстальщикам, которых заметно больше, чем хорошей работы для них.

Это стартовая картина. Как итог, если сравнивать старт на js со стартом на java, вы учитесь меньше на три-шесть месяцев, и получаете работу — первую, тысяч на 80 — в Москве. И когда сосед-джавист получает свою первую работу за 100 тыс, вы уже готовы получить вторую, на 120. Вы делаете джависта на старте. И эти первые месяцы выхода из пике — они очень, очень важны, если вы их уже очень сильно ждете.

Продолжим соревнование с воображаемым джавистом. Проходит еще пару лет. Если вы вкладываетесь, и джавист вкладывается, вы становитесь уверенными мидлами. Джавист подходит к диапазону 150 — 180 тыс. Фронтендер где-то к 140 -160. Если он не предпринимает каких-то экстраусилий (я предпринимал, поэтому не привожу себя в пример). И очень интересно, что происходит дальше.

Переход в категорию старшего разработчкика. Тут выясняется, что фронтендеру легче дрейфовать в сторону фулстэка. Потому что js мультипарадигменный язык. Да, ООП на нем скорее игрушечное, но оно есть. А функциональщины полно, и она в моде. React, rxjs. Фроненд незаметно приучает учиться быстро. И тут вы обгоняете джависта и уноситесь в необъятный карьерные космос…

Поэтому — фронтенд!

PS Помогаю желающим освоить frontend бесплатно. Пишите в личку или в комменты.
Tags:
frontend, перваяработавIT

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.