- PVSM.RU - https://www.pvsm.ru -
Несколько лет назад, когда я искал пути из программистов 1С в Java developer'ы — я бродил впотьмах, пытаясь нащупать дверь, в существовании которой был не уверен. Я пытался найти истории успеха, но кроме пары комментариев ничего не нагуглил. Мир Java выглядел огромным, а количество фрэймворков бесконечным. Было совершенно непонятно: что учить, что не учить, что нужно в работе, а что никто не использует. Если ты хочешь в Джаву, теряешься в бесконечных названиях технологий и фрэймворков и хочешь узнать какие же из них надо изучать, а на какие не обращать внимания — эта статья для тебя!
Во-первых, если ты решил предать 1С перейти в Java разработку — не жди, что путь будет легкий и быстрый. Скорее всего, при должном усердии, ты потратишь никак не меньше полугода на подготовку, плюс никак не меньше года, чтобы вылезти из джунов.
Во-вторых, готовься, что если ты сейчас топовый 1Сник — твой доход скорее всего восстановится когда ты станешь уверенным middle'ом. Как правило, это не меньше 2-3 лет практики, но в конечном счете все зависит от тебя.
В-третьих, не жди, что твой 1Сный опыт тут кому-то интересен. У тебя может быть 100500 успешных проектов и вся стена в 1Сных сертификатах — это никого интересовать не будет. Ты будешь джуном, с тобой будут разговаривать как с джуном и у тебя будут задачи как у джуна. Но тут есть ложка меда: даже если ты не топовый 1Сник, в вопросах SQL, скорее всего, ты потягаешься с Senior Java developer'ами.
Еще пара очень заезженных советов, которые ты уже слышал три десятка раз, но поверь мне, они работают на 100%:
Тебе стоит выбрать язык. В интернете куча статей со сравнительными характеристиками. Также, можешь вбить названия языка в поиск hh – посмотри, насколько тебе понравится то, что ты там увидишь. Обращай внимание не только на бешеные зарплаты и пиво по пятницам, но и на количество вакансий, а главное на количество вакансий, на которые готовы взять джуна.
Я выбрал Java. Все дальнейшие рекомендации будут даны в этом контексте, если ты выбрал другой язык — значительная часть написанного тут может потерять смысл, но общие идеи ты можешь почерпнуть. Вероятно, тебе стоит посмотреть в сторону PHP, ибо Битрикс и переход на него может оказаться проще в плане административного барьера (там 1С, тут 1С, какая разница?..) и в плане отсутствия в языке всяких стримов и метод-референсов (хотя они дико кайфовые).
Если ты тоже выберешь джава — не забивай себе голову Java EE, тебе нужна только Java SE. Что такое Java ME и Java FX вообще лучше не знать )
Итак, с чего же начать? Я не советую тебе бросаться покупать двухтомник Хорстманна и тысяче страничный «Spring 5 для профессионалов» и пытаться все это вызубрить. Даже если ты расскажешь все это наизусть — знания не подкрепленные практикой выветрятся очень быстро. Начни с онлайн площадок по обучению программистов. Я решал JavaRush. Дошел наверно до 15 уровня. Это заняло около 1-2 месяцев (с цифрами могу что-то наврать, дело было давно)
Затем принимайся за HackerRank. Не пугайся его названия — там можно выбрать уровень сложности и на простейшем тебе будут предлагать задачи уровня инвертировать строку. Добейся, чтобы задачи среднего уровня (medium, баллов на 30) решались без проблем. Хотя система оценок иногда дает сбой и бывают такие задачи на 30 баллов, что проще какой-нибудь hard на 60 баллов решить, но в основном ты должен справляться. Это займет тебя еще на 1-2 месяца.
Теперь пора читать Хорстманна. Имей ввиду, что это хорошая книга, но она покрывает Java целиком (только язык, не фреймворки) и даже те ее части, которые почти нигде не используются. Моя рекомендация: в первом томе забей на разделы связанные с UI и на весь второй том. И еще, если будет туго, в первом томе пропусти многопоточность и вторую половину дженериков — этого могут не знать даже мидлы, для джуна не страшно. Еще важно не попасть в ловушку версий: книга, которая называется Java 2 — это древность. Тебе нужна версия 1.8 или 9. Или ориентируйся на дату издания: 2015 год и позже подойдут.
Я надеюсь, во время чтения Хорстманна ты не бросишь HackerRank, может, даже решишь пару задачек баллов на 80-100. В целом, больше 60 баллов подниматься не нужно, потому что там начинается не столько прикладное программирование, сколько «искусство ради искусства». Но если ты чувствуешь в себе силы — иногда бери hard, лишним это не будет. И еще, имей ввиду, что большинство сложных задач — это классические алгоритмические задачи, которые ты можешь гуглить: смысл упражнений на хакерранке не в том чтобы придумать с нуля алгоритм, который уже давно придуман, а в том чтобы узнать о самом существовании алгоритма и реализовать его.
После всего этого, ты почти готов пойти на собеседование. Осталось совсем чуть-чуть:
Когда я говорю «посмотри на [frameworkName]» — я имею в виду: сделать, по крайней мере, несколько домашних проектов с использованием соответствующего инструмента. Скорее всего стоит начать с того, чтобы попробовать каждый фрэймворк отдельно на уровне хэло ворлд, потом стараться собирать их в одном проекте, несущем хоть какую-то «полезность». Кажется неплохой идеей (хотя я так и не делал) — чтобы проекты были как-то привязаны к работе. Может быть просто полностью переписать задачу, которую ты пилишь на 1Се на Джаву, может быть сделать себе какой-то помощник для 1Сной деятельности. Например, если ты пилишь REST обмен с поставщиком на 1Се — реализуй сторону поставщика на Java для тестирования 1Сной функциональности: просто принимай запросы и складывай куда-нибудь.
Все твои домашние проекты должны собираться Maven'ом и версионироваьтся Git'ом. Это просто инструменты, стоит набить руку — и уже перестаешь их замечать. В качестве среды разработки советую тебе взять Idea, по моим наблюдениям ее сейчас используют почти все. Бесплатной версии тебе должно хватить.
Если ты не стеснен в средствах — можешь посетить какие-нибудь курсы по Java разработке. Я считаю, что базовый курс брать не стоит, поскольку все что там будут объяснять не стоит того, чтобы тратить на это время и деньги. Возьми курс по Spring Core или JUnit: с одной стороны ты получишь знания, пообщаешься с будущими коллегами, с другой — тебе не будут 3 дня разжевывать, что такое цикл.
Где-то между делом, надо почитать теорию программирования. Тебя обязательно спросят про SOLID и паттерны. Паттерны (они же шаблоны проектирования) — это весьма интуитивно-понятные вещи, хотя на Википедии описаны так, что чёрт ногу сломит, лучше читать не настольно заумные статьи [1]. На мой взгляд, хватит такого набора: Интерфейс, Билдер, Прототип, Синглтон, Декоратор, Прокси.
Первый — это бодишоперы. Они же аутстаферы. Самые известные представители: Luxoft и EPAM. Они нанимают людей, а потом перепродают их во всякие Сбербанки. Бодишоперы сажают своих сотрудников прямо в офис заказчика и их почти нельзя отличить от сотрудников заказчика. Зачастую, уровень требований там ниже, а зарплата выше. Но и работать ты будешь в не бог весть каких условиях: это не самые привлекательные проекты, на которые конечный заказчик не смог набрать разрабов с рынка, про трудовой кодекс они будут знать весьма отдаленно, а сам ты не будешь полноправным сотрудником там, где ты будешь работать (всякие плюшки и корпоративы будут проходить мимо тебя). Но тебе же не это надо?
Аутсорсеры — это конторы, которые нанимают конечные заказчики, но предмет продажи там — не люди, как у бодишоперов, а реализация задач. Такие, как правило, стараются держать разрабов подальше от заказчика и занимаются новыми проектами. Это весьма достойное место работы, но туда с таким опытом как у тебя попасть будет не просто, но не невозможно.
Продуктовые компании — это конторы типа Яндекса и, прости господи, Касперского, которые продают свой код как конечный продукт, как коробку. Бытует мнение, что тут работать лучше всего: зарплаты большие, плюшек много, задачи интересные, коллективы профессиональные. Когда ты слышишь про бесплатный английский и пиво по пятницам — скорее всего это про них.
Дальше идут банки и страховые. Тут может быть все сильно по-разному: как правило, в банках есть огромное страшное легаси, на которое никто не хочет идти и новые-модные-стильные-молодежные проекты, на которых вакансии еще как-то закрываются. Сам понимаешь, тебе в первую группу. Хотя, иногда их самомнение может зашкаливать, типа «mission-critical система — не место для джунов». Не обращай на них внимания, такие далеко не все.
Естественно, этот список не описывает полностью всего рынка труда, есть еще всевозможные стартапы, retail и много-много кого.
Во-первых, не надо врать про опыт. Поверь, даже если тебя «случайно» примут за мидла на тех.интервью — в работе ты все равно будешь джуном. Поэтому в резюме не стоит выдумывать, что ты уже работал Java developer'ом 15 лет, пользуясь тем, что в названии твоей предыдущей должности не было упоминания 1С. Но кое-какие ходы, для преодоления HR-барьера, предпринять можно. Не выпячивай свое 1Сное прошлое. На паре последних мест работы можешь написать просто «Программист» или «Developer», а буквы «1С» закопай куда-нибудь в описание. Тим-лида ты этим не проведешь, но HR может купится.
Во-вторых, было бы ошибкой держать твоего будущего работодателя в неведении о том, как ты занимался самоподготовкой. Напиши полгода подготовки как отдельное место работы (оно должно быть в самом верху), с пересечением по сроку с последним местом работы. Назови это «Java developer», место работы — «самоподготовка» или «домашние проекты» и перечисли технологии, которые ты попробовал. Дай ссылку на профиль на хакерранке.
В-третьих, придумай убедительную причину почему ты хочешь в Джаву. Не советую говорить «надоело нянчиться с бухгалтерами» или «не хочу, чтобы моя зарплата обрушилась вместе с курсом рубля» и тем более «хочу свалить из этой грё...». Лучше всего заходит тема с развитием: мол, там уже все повидал — надо двигаться дальше.
В-четвертых: ты джун и таких как ты, каждый год из институтов выпускают сильно больше, чем есть вакансий джунов. При этом те, кто из институтов — без семьи и детей и готовы жить на работе и жить работой и им не надо платить ипотеку. Ок, на твоей стороне опыт, но это не релевантный опыт и его не будут рассматривать как большую ценность. Из этого следует, что тебе нельзя задирать ожидаемую зп. Если ты не можешь прожить на зарплату джуна — подрабатывать 1Сником на четверть ставки — неплохой вариант на первый год.
Ходи по собесам, запоминай вопросы, находи на них ответы, затем опять ходи по собесам. На мой взгляд, 1-2 тех.интервью в неделю — приемлемый уровень, чтобы и успевать переваривать полученный опыт и не слишком затягивать поиски.
Самое важное тут — это Тим лид. Ты должен был познакомиться с ним на тех.собесе и «он должен был выбрать тебя и ты должен был выбрать его» (с). Очень важно почувствовать эту химию. Это человек, каждое слово которого в следующие несколько лет, ты должен слушать, запоминать и выполнять. Этот человек будет тащить тебя к вершинам Java разработки и посвящать тебя в самые глубокие нюансы этой магии. И от него, может быть даже больше чем от тебя самого, зависит, насколько крутым разрабом ты станешь и как скоро.
Итак, мой юный 1С-ник, если раньше ты знал «зачем?», то теперь еще знаешь «как?». Путь в тысячу миль начинается с одного шага. Дерзай!
Автор: m-rv
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/339687
Ссылки в тексте:
[1] не настольно заумные статьи: https://habr.com/ru/post/136766/
[2] Источник: https://habr.com/ru/post/479310/?utm_campaign=479310&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.