Добрый день.
Вкратце обрисую ситуацию:
Заканчиваю ВУЗ по специальности "Программное обеспечение вычислительной техники и автоматизированных систем".
Живу в относительно маленьком городе , не прочь переехать поработать в Москву или Питер.
Имею относительно неплохое знание Java Core,JavaEE(Servlet,JSP,),Spring Core, опыта работы на джаве нет.
Так же имею год опыта работы FullStack JavaScript программистом (Ангуляры , ноды , MySQL - жаль что не Mongo).
Есть неплохое знание инглиша , где-то между upper-intermediate и advanced.
Несколько доступных путей развития:
1.Можно углубиться во frontend и попробовать устроится frontend разрабом в Москве или Питере.
Как backend платформу ноду не хочу рассматривать (куча альтернатив на более вменяемых языках с более скажем так стабильной экосистемой , тот же самый Ruby с EventMachine, Python с Twisted)
В этом случае вижу следующие плюсы:
-Тут вроде как мой опыт работы JS будет плюсом.
-Много удаленной работы.
-Можно на работе разрабатывать что-то с нуля , а не заниматься поддержкой Legacy кода написанного протоиндусами.
-Думаю при моих вводных позицию тысяч на 70(Москва) или 40(Питер) можно получить.
Минусы:
-Необходимо учиться верстать по макетам , что я дико не люблю и чувствую что занимаюсь чем-то не тем.
-Как по мне то в силу перечисленных ниже обстоятельств фронтедщики сейчас скажем так overpaid что может закончиться.
-Во фронте быстро устаревают технологии , вернее очень быстро, как я понимаю знания фронтендщика устаревают гораздо быстрей знаний бэкэндщика (там более менее все уже устаканилось).
-Субьективный минус конечно но - Низкий порог входа.
2.Можно еще пару месяцев поучить джаву и попробовать устроится JavaEE разрабом:
Плюсы (для меня):
-Работа со большими,сложными приложениями.
-Более строгий контроль за архитектурой на java проектах.
-Знания Java разраба устаревают на порядок медленней чем знания фронтедщика.
-Джависты с опытом нарасхват.
-Высокие зарплаты.
-Возможность завести трактор куда угодно.
-При сильном желании в дальнейшем лет через 6 можно думаю без особой сложности уйти во фронт , при переходе из фронта в джаву думаю головной боли будет поболее.
Минусы:
-Реально мало Junior вакансий , очень мало. Все хотят senior или на крайняк middle разраба , следовательно проблематично войти в джаву.
-Судя по форумам большую часть работы JavaEE разраба будет составлять поддержка Legacy кода написанного протоиндусами.
-Стартовые условия будут хуже чем при выборе JS , в плане ЗП.
А теперь собственно вопросы:
1.
С некоторых пор за frontend стали неплохо платить , на мой взгляд это прежде происходит из-за недостатка в фронтенд разработчиках и когда ситуация с фронтенд разработчиками более менее нормализуется произойдет откат в ЗП.
Плюс еще по моему мнения на текущий уровень ЗП фронтендщиков влияет текущий бум стартапов, огромное количество денег инвестируется в них, что позволяет платить фронтедщикам большие деньги ведь это лицо продукта и все дела. Но что будет когда различные бесполезные стартапы будут массово умирать?
Как бы то ни было фронт по моему мнению относительно легче чем бэкэнд , нет какой-то скажем так фундаментальной базы , нет особой необходимости вникать в алгоритмы, многопоточность и т.д , т.е насытить этот рынок фронт разрабами которые переквалифицировались с какой-либо работы не в IT сфере гораздо легче.
Прав ли я?
2.
Возможность эммиграции , к теме эммиграции все по разному относятся , но для себя я все решил.
Соответсвенно хотелось бы выбрать тот путь который может привести к относительно безболезненной иммиграции.
Здесь абсолютным победителем выходит Java, но хотелось бы узнать ситуацию с фронтендом.
Как по мне во фронтедщиках нет особо сильной нужды , и сайты вроде monster.de скажем там подтверждают это.
-392 вакансии по запросу "frontend"
-1000+ по запросу "java"
Хотелось бы узнать информацию по этой теме от опытных фронтендщиков.
Возможно немного сумбурно написанно , но все-же основные вопросы можно уловить.
Надеюсь на ответ.
Евгений Петров: Специально же написал "по моему мнению", ибо возможно я где-то не прав (больше все-же на бэкэнде пока работал). Если вы не согласны , то мне интересно почему.
boand: Беда фронтенда (как и того же PHP) в том, что вход — копейка. Говнокодеров море.
Ваше мнение основано на наблюдении этого моря, хотя никаких предпосылок для заявлений типа «нет какой-то скажем так фундаментальной базы» нет.
Если нацелились на эмиграцию, то ИМХО стоит определиться со страной (регионом) и узнавать рынок труда именно в этой стране (регионе).
Евгений Петров: Согласен насчет моря низкоуровневой frontend работы. Под фундаментальной базой я имел в виду вещи типа "многопоточности, необходимость понимать как работает ОС". А что вы понимаете под фундаментальной базой? Дейсвительно интересно узнать ваше мнение ибо мельком взглянув на ваш профиль и ответы , то можно предположить что вы во фронтенде не первый год.
boand: Я не понимаю, зачем фронтенд-разработчику знать, как работает ОС, да и какая именно?) Это может быть хобби, но технологии, нацеленные на кроссплатформенность, не предполагают выход за рамки среды, в которой реализованы интерпретаторы, парсеры etc. Более того, разработчику это знание никак не поможет, ибо и выйти за рамки среды реализации он просто не может.
Про многопоточность — на фронтенде её нет, даже webworkers — просто способ снять нагрузку с приложения, но всё равно процессор-то один:) Так что выигрыша по общему времени выполнения нет. Алгоритмы? Достаточно погрузиться в canvas + WebGL, чтобы осознать ошибочность суждения. И таких задач можно назвать не одну, не обязательно из геймдева. То же относится к паттернам и прочему.
Фронтенд очень многообразен — осилить весь объём невероятно трудно, но и специализаций в нём прилично. И чем дальше, тем больше этот объём. Вообще, мне это напоминает ситуацию «помню, помню, как попку тебе мыл в Баден-Бадене на родниках». Фронтенд давно вырос за те архаичные представления, которые о нём существуют.
Евгений Петров: Не читал про то как работают вебворкеры , но тут уж интересно. Вы написали "Про многопоточность — на фронтенде её нет, даже webworkers — просто способ снять нагрузку с приложения, но всё равно процессор-то один" , если есть несколько ядер разве worker не будет работать на отдельном ядре обеспечивая параллельность и следовательно многопоточность? Не согласуется просто тезиз "Про многопоточность — на фронтенде её нет" с наличием воркеров.
boand: С точки зрения вынесения обработки в отдельный процесс, не останавливающий работу приложения, это — многопоточность. Но все вычисления нагружают тот же самый процессор, и, по факту, общее затраченное время то же самое, если бы мы не выносили обработку в воркеры. Только само приложение сделали более отзывчивым.
А уж как происходит выполнение в многоядерном процессоре — точно не вопрос из сферы JS:)
Я с Вас поражаюсь, Вы действительно на столько круты, что можете выбирать? Даю палец на отсечение, что Вы ни черта не знаете в программировании (без относительно языка программирования). Делить разработчиков на frontend/backend это какая-то модная чушь, от стартаперов-хипстеров. Разработчик прежде всего должен быть инженером! Универсалом, если хотите.
Перестаньте спрашивать "Что делать?" на тостере, а просто идите и делайте то, что считаете нужным!
Ладно, это старческое ворчание. По существу. Вы правы, все хотят middle или senior разработчиков на java вакансиях, и это обоснованно. Т.к. беря junior-а, Вы прикладываете усилия на его обучение. Скажу за себя (я такой твердый middle с обязанностями senior-a), если я вижу, что junior свалит как только я его научу, я его сам выгоняю. А многие junior-ы прямо говорят - я пришел к Вам набраться опыта, перед покорением других вершин. Ну и зачем мне такой junior? Мне нужны люди, которые будут тащить проект, выводить именно мой проект на новые вершины! Вам в первую очередь должно быть интересно само ремесло программистское, и если Вам оно интересно - Вы будете на расхват в любой конторе, на любом стеке технологий.
boand: Думаю да, т.к. выбор строится, по-моему, на таких умозаключениях: "Я знаю и умею достаточно для уровня junior-а в обоих направлениях, что бы мне выбрать?"
Евгений: Выбор строится на мысли "Так у меня есть месяца 3 , есть 2 равноценных для меня пути , на что из этих направлений мне следует потратить эти 3 месяца". Критерии этого выбора я озвучил выше.
"Делить разработчиков на frontend/backend это какая-то модная чушь, от стартаперов-хипстеров. Разработчик прежде всего должен быть инженером! Универсалом, если хотите. "
тыжпрограммист? как я пнимаю он должен быть и бекенд и пронтенд и флеш банеры создавать и дизайн наверно еще создавать. А еще чинить чайник секретарши
olexandr7: да. А почему бы и нет? Вы думаете бэк и фронт в одно рыло не сделать?? И чайник сложно починить? А ещё сделать, что бы он отчёт о своём состоянии отображал онлайн можно. Вы думаете это всё одному человеку не реально??
1. Вы слишком много думаете ))
2. Вы решаете проблему не с того конца
Сначала получите 5 офферов от работодателей а там уже будете думать ))
Не забывайте что вы будете делать то что скажет работодатель - скажет код индусов перебирать - и будете перебирать )) Вы пытаетесь спланировать свою жизнь в динамично меняющейся сфере - тут так не бывает. Расслабьтесь и течение вас само вынесет куда нужно...
Выбирай Java, это и мобильная разработка в конце концов. А фронтенд это рюшечки, кнопочки, формочки на аяксе и прочие мокрые письки. Те вещи, без которых можно прожить. От этого веет тоской, бессмысленностью и могильным холодом.
Сейчас все больше фронт-енд стает сложны. Так что не надо наезжать) А так то можно и про бек-енд написать, что это запись-чтение базы, скучно и все такое.
Лучшая проверка своих "стальных я...ц" - поднимите свои навыки (самореализуйтесь) во фрилансе. Сделаете пару заказов, увидите к чему и что у Вас лежит. Даже ехать никуда не нужно.
Что Вам в Мск делать? Тут пыльно, жарко и все злые ходят :)
Хотите зарабатывать - не думайте, кем вы хотите работать, берите, что попадется. Когда я начинал фрилансить, брал проекты и на C++, и на Java, и полная разработка на PHP+фронтенд. Сам начанал фрилансером на одеске через агенство, по-моему - неплохой вариант, и работу найдут быстрее, и в случае проблем помогут/подскажут.
Ну а если хотите прям такого разделения на фронтенд-бекэнд-Java разработчиков, но вам нужно в крупную компанию, где такое разделение реально есть, так работает большая команда. Но тогда нужны либо очень хорошие знания основ, либо серьезный опыт