Переход с PHP на Java: как правильно составить резюме и найти работу?
Здравствуйте!
Много лет занимался разработкой на PHP / JavaScript (включая Node.JS), приходилось писать на Ruby и С++ (включая 11), есть опыт использования MongoDB, Sphinx, RabbitMQ и т.д. До этого несколько лет занимался разработкой настольных приложений (Delphi, C#, немного QT). По многим причинам ухожу с этого зоопарка в мир Java (идеально - Scala, но для меня пока что не реально). Сразу скажу, что этот вопрос для меня окончательно решен.
Как минимум, от конторы хочется наличие налаженного рабочего процесса, стандартов кодирования и обязательное написание тестов. Я понимаю, что вряд ли смогу расчитывать на что-то большее, чем джун: опыта разработки на Java нет (задачи на курсере не считаются). К сожалению, только теоретические знания, полученные из книг и видео.
Перед мною встал вопрос грамотного составления резюме и поиска контор, подходящих под указанные выше требования. С одной стороны, опыт не маленький, умалчивать не стоит. С другой стороны: технологии применялись в другом контексте (чаще всего PHP).
Кроме того: взять, например, hh.ru. Я могу составить резюме Junior Java Developer, но добавлять предыдущие места работы? Они не имеют никакого отношения к Java. Как быть?
Возможно, стоит писать напрямую работодателям? Даже не знаю, какой шанс, что потенциальный работодатель будет смотреть резюме Junior'а, в текущее-то время.
Сергей Протько: В проектах, в которых принимал участие:
* Частично нарушался SOLID
* Если паттерны, то максимум: MVC, одиночка, фабрика, репозиторий, объект-запрос, стратегия и какой-нибудь шаблонный метод. IoC-контейнеры - редко. И то, большинство из них, благодаря наличию в используемом фреймворке.
Мои знания, естественно, не ограничиваются тем, что я использовал в проектах.
He11ion: На Ruby я писал довольно давно (года 2 назад), поэтому в чем-то могу ошибаться.
"Почему Java" лично для меня:
1. В плане языка/платформы:
1.1. Общая производительность.
1.2. Статическая/динамическая типизация. Я выбираю первое.
1.3. Библиотеки практически на все случаи жизни.
1.4. Огромное комьюнити.
1.5. Корпоративные приложения, Android, …
2. Прочее:
2.1. Из 1.1 - доступ к сложным и интересным задачам.
2.2. Наличие сертификации от Oracle. Не знаю, как обстоит у Ruby.
2.3. Количество вакансий и зарплата.
Ориентироваться на мнение окружающих не стоит. Творите на том, что вам по душе.
Uxus Greenwood: C# очень люблю с института, ASP.NET пробовал - он прекрасен. Но:
1. Не хочется заостряться только на ASP.NET.
2. Хадупы и прочие страшные термины - это пока что только в мире Java. А терпеть и ждать погоды у моря я больше не могу. Вполне допускаю, что через пару лет все изменится. Но к тому времени, надеюсь, и Java станет лучше: генерики наконец-то смогут работать с value-типами, возможно все-таки сделают linq, и прочее.
3. Для *nix все же роднее Java.
4. Если писать на C#, то только на Visual Studio, который только под Windows. А я привык к *nix и его консоли. Допускаю, что JetBrains через некоторое время сделают полноценную среду разработки для C#.
5. Наименее важная причина: у меня macbook, и я к нему привык. Windows работает на нем просто безобразно. Без autohotkey и прочих выкрутасов совершенно не юзабельно. Увы.
He11ion: вот вы чем бы хотели заняться? Клепать сайтики (по сути у Ruby ниша пересекается в этом плане с PHP) или делать серьезные приложения? Если смотреть на рынок труда, найти компанию занимающуюся серьезной разработкой со всеми бэст практис и прочим на Ruby у вас вряд-ли выйдет. А вот на Java - запросто.
Да, можно конечно пойти на продукт какой, но опять же, RoR (а я подозреваю что вы именно в контексте этого фреймворка говорите) - это RAD. Некоторым просто не интересно.
Сергей Протько: Давно уже и на php пишу приложения в первую очередь, с миниумом фронтенда, думаю и на Ruby заниматься тем же. Да, вакансий на порядок меньше, но Java - кардинально другой стек технологий.
Проведите A/B тестирование.
Сделайте два резюме на hh - сначала на неделю откройте то, что считаете сами более логичным, затем на неделю другое. Сравните отклики и просмотры.
Я не знаю, что есть Scala и в каких областях используется. Но про опыт работы программистом писать надо обязательно. Ведь очень многое не зависит от языка и платформы. Джуниор без опыта работы - это предстоит где-то год-полтора набития шишек, джуниор с огромным стажем в других ЯП - это несколько недель вникания в специфику именно этой платформы до получения того же уровня знаний и умений.
В дополнительную информацию к резюме, в общем-то, первые два абзаца с этого вопроса можно скопировать как есть. Разумеется, будьте готовы к вопросу о причинах резкой смены.
Даже не знаю, какой шанс, что потенциальный работодатель будет смотреть резюме Junior'а, в текущее-то время.
brainick: подняться до уровня годовалого джуна? Не согласен.
Джуна за эти год-полтора ещё учить много чему, не имеющему отношения к этой платформе.
Плюс, наверное, вопрос что есть эти несколько недель. Этак месяца три - это всё ещё несколько недель.
По поводу резюме: я считаю что любой опыт который имеет отношение к IT нужно писать.
Помимо специфики конкретного языка - есть общие понимания по алгоритмам, сложности их работы, по базам данных в конце концов. Это все полезно.
Но надо понимать что на собеседовании 100% прозвучит вопрос "почему Вы решили отказаться от нынешнего стека технологий, причем не через обучение новому в фоне, а через полный отказ и трудоустройство с понижением дохода/должности" - и от Вашего ответа на этот вопрос будет зависеть многое
fr33zy: может быть смысл попилить 2-3 месяца проект "для себя" и претендовать не на junior?
Тем более что с 8 летним бекграундом разобраться можно быстро
Дмитрий Энтелис: мне кажется, это сложнее, чем просто устроиться junior'ом. Сразу возникает несколько вопросов:
1. Какой проект можно успеть сделать за 2-3 месяца, чтобы он был не простой, но и не очень сложный?
2. Какие выбрать технологии? Ведь в каждой компании они свои. Например, буду писать на Play, а в компании, в которую устроюсь, используется Spring MVC, JSF или еще что-то другое (даже не знаю)
Любые навыки и скиллы нужны в резюме. Меня постоянно тянут в разные компании именно из-за них... Написал, что могу писать на PHP, Python, Ruby, Java, C++ и т.д. Много предложений и компании смотрят, что человек разбирается и готов узнавать много нового и прогрессивного...
А смотрели в сторону Python/Django для web'а? Python применяется повсеместно и на серьезных предприятиях. А можно сайт "клепать"... :) Но я бы ориентировался на реальные Ваши задачи и цели...