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

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

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

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

После некоторых опытов пришло понимание, что чтобы научиться делать что-то хорошо, надо выбрать специализацию. Я выбрал 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. Фроненд незаметно приучает учиться быстро. И тут вы обгоняете джависта и уноситесь в необъятный карьерный космос…

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

P.S. Помогаю желающим освоить frontend бесплатно. Пишите в личку или в комменты.