Всем привет! Вот и закончился мой испытательный срок на новом рабочем месте, и теперь я могу наконец-то поделиться своей историей трудоустройства. Мне 22 года, у меня экономическое образование. Еще год назад (в феврале – марте) у меня не было никаких навыков программирования, и с Java сталкивался только в играх на старых Siemens (в виде приветственного окна "powered by Java" при запуске игры). Рождение программиста: за 9 месяцев с нуля до Java Developer - 1Год назад я работал в отделе технической поддержки. Работа не сказать, чтобы плохая или не нравилась, но не особо интересная. И сложилось так, что в один момент задумался — хорошо было бы иметь работу, на которую ты бы не шел с ощущением "блин, снова работать", а чтобы она приносила удовольствие. Подумал — а что бы я делал, если бы у меня был, условно, год, в течение которого мне не надо было бы обязательно зарабатывать деньги, а я мог бы заниматься чем хочу? Ответ как-то пришел сам собой — сидел бы дома и учился программировать. Тогда я решил, что дело за мной. Я понимал, что будет сложно изучать программирование с нуля, что это временный откат в карьере (я не сомневался, что Junior Developer получал меньше, чем я на том рабочем месте), но воспринял это как шаг назад ради того, чтобы сделать два шага вперед. Окей. Сказано — сделано. Так как я не разбирался в языках программирования абсолютно, первой идеей было изучать язык, о котором был наслышан больше всего (на нем разрабатывали софт в компании, где я работал) - PHP. Хорошо, девушка отговорила. Подсказала, что у них в компании (разрабатывающей мобильные приложения) андроидеры пишут на Java + зарплата у них вроде хорошая. Я погуглил-погуглил, подумал и принял решение изучать Java. Моим первым шагом были традиционные попытки изучения чего-то нового - вооружаешься книгами, осваиваешь теорию, и вперед! Так у меня появилась книга Хорстманна и Корнела — Java. Основы. Это был март 2014 года. Вообще говоря, всю жизнь изучать что-то по книгам у меня получалось отчаянно плохо. Вероятно, это связано с тем, какой способ восприятия преобладает у человека. Я всегда действительно усваивал материал только после того, как практически его проработал, закрепил, поигрался с ним. Поэтому мои первые попытки учить Java по книге были обречены на провал. Хотя книга хорошая. Где-то в апреле я наткнулся на группу JavaRush вконтакте. Дальше все понеслось как по рельсам. Решать задачи, много задач, которые сопровождаются небольшим количеством теории — явно оптимальный способ изучения материала (по крайней мере, для меня). Я сидел дома, я сидел на работе и решал, решал, решал) Именно тогда я дополнительно убедился, что программирование мне интересно. Я не мог вспомнить, чтобы над чем-то так зависал. Прошло три месяца, за которые я дошел до 20 уровня. Мне казалось, что дальнейшее изучение языка будет идти намного быстрее, если уже получить работу программиста — тогда ты будешь в этой среде по 8 часов в сутки 5 дней в неделю и будешь крайне быстро развиваться. Таким образом, в августе я начал рассылать резюме. Из пары мест мне прислали тестовые задания, по результатам которых предложений о работе я не получил — оглядываясь назад, я не удивлен ни разу — задачу то поставленную я, быть может, и решил, но какой же плохой у меня был стиль написания кода) В этом, кстати, небольшой минус JavaRush — до тех пор, пока задача решена и тесты пройдены, задание засчитывается, хотя твой код может оставлять желать сильно лучшего. Достаточно установить в Intellij IDEA тот же плагин Checkstyle, и ситуация будет иной — он будет подчеркивать "сомнительные" моменты в коде, что позволит писать не только рабочий, но и красивый, правильный код. Как бы то ни было, в сентябре меня позвали на первое собеседование. Вакансия содержала примерно следующее - разработчик любого уровня, мы предложим зарплату, соответствующую навыкам. На этом собеседовании задачки были примерно следующие — дан фрагмент кода. Правильно ли он написан, и какие могут быть проблемы? Не помню, сколько из них я правильно решил. Вообще нужно было помнить про Null, почти все вопросы были про него — что не стоит обращаться к параметру метода, не проверив его прежде на (if param != null). По результатам мне предложили первый месяц работать бесплатно (как стажировка), затем зарплату, которая ниже (хоть и не сильно), чем на том месте работы, где я был. Я хорошо понимал, что мне и не стоит ожидать замечательных предложений, ибо теории знал мало, практика только по JavaRush, ноль опыта и так далее. Поэтому я договорился, что выйду через 2 недели (нужное время для увольнения на старом месте). Параллельно с этим я подал резюме в другую компанию. Эта компания предлагала следующее:
  • 2 месяца обучения Java EE (2 раза в неделю по 4 часа)
  • если результаты показываешь хорошие (защищаешь свой проект успешно, который пишешь эти два месяца), то тебе предлагают трудоустройство.
Компания очень хорошая, иностранная, известная, да и условия работы отличные - словом, хотел я туда куда больше, чем туда, где мне уже сделали предложение. Отбор на обучение у нее предполагал 3 этапа:
  1. Выполнение практических заданий дома.
  2. В случае успеха тебя приглашают на компьютерное тестирование в офисе.
  3. В случае успешного тестирования в этот же день с тобой проводят собеседование.
С практическими заданиями я справился без особых проблем — здесь огромное спасибо JavaRush и их задачкам, после которых эти задания показались достаточно простыми. Заданий было 3: на RegExp(гугл помог, ибо сам я их терпеть не мог и не помнил), на алгоритмы (довольно простая, на соображалку скорее) и на запись\чтение из файла (таких в курсе JavaRush очень много). Меня пригласили на компьютерное тестирование. К тестированию я готовился по сайту quizful. Эти тесты очень помогли, некоторые вопросы в итоге даже пересекались. Сделал тест успешно, меня начали собеседовать. Это собеседование я, наверное, не забуду никогда в жизни. Все, что хотел услышать от меня собеседующий меня человек - основы теории Java, как то:
  • чем отличаются checked exceptions от unchecked;
  • какие методы есть у класса Object и зачем они нужны;
  • какие бывают коллекции и зачем они;
  • и немного про многопоточность.
JavaRush — отличный курс, он научит вас решать задачки и программировать, но теорию (для собеседований) нужно подучивать отдельно, в чем я и убедился, плавая в этих вопросах, как рыба в аквариуме. Меня хотели завернуть. Я его понимаю - я не мог внятно почти ни на что ответить, все пытался рассказывать с точки зрения написания кода, а его интересовала теория. Но я твердо знал, что я очень хочу попасть на эту стажировку, и я знал, что если мне дадут время, я все это наверстаю и выучу несчастную теорию. Все это я ему так и сказал, и он пошел мне навстречу - предложил через неделю встретиться еще раз, а пока что дал список тем (примерно, как я описал сверху) и сказал, где их можно выучить — просто туториал оракла, в нем есть все: http://docs.oracle.com/javase/tutorial/ За неделю я основательно изучил этот туториал и пошел на повторное собеседование накануне дня, когда меня ждали на новой работе. Судя по всему, собеседовавшего меня человека больше всего зацепила именно моя целеустремленность (я знал, что если я поступлю на эту стажировку, дальнейшее зависит только от меня - за два месяца я бы разобрался со всем, чем надо). Как бы то ни было, я поступил на эту стажировку и отказался от выхода на работу на том месте, куда мне предлагали ранее. За 2 месяца нас познакомили с многими темами из Java EE, как то: Servlets, JSP, Hibernate JSF, Spring и многое-многое другое — по итогам стажировки мы были знакомы (примерное представление имели точно) об основном стеке технологий Java EE. Также на протяжении стажировки мы писали свой проект, который на выходе надо было успешно представить для трудоустройства. Я просто помню свои первые ощущения, когда был на первой лекции. Я смотрел на задание этого проекта (его выдали сразу на первой же лекции) и не понимал даже близко, с чего здесь начинать и как это делать. Также я помню, чего мне стоило успешно его сделать. Эти два месяца почти все мысли в моей голове были о том, что успешное трудоустройство и исполнение мечты — в моих руках и только. Больше ни от кого не зависело, смогу ли я его сделать. Только от меня. Я уже уволился с работы, сидел почти без денег, и это было действительно тяжело. Сидел с утра, сидел днем, сидел вечером, однако не уставал радоваться — я не помню, когда еще я с такой одержимостью посвящал себя чему-то. Это время лишний раз помогло мне осознать, насколько мне нравится программировать и насколько я бы хотел работать в этой области. На выпуске я представил свой проект. Защитил его действительно хорошо, судя по всему, значительно лучше, чем ожидалось, и в качестве исключения меня взяли не на начальную должность, а сразу на позицию Middle Java Developer. Это было 9 декабря 2014. Я не мог поверить этому, но предложение о работе было передо мной на моем мониторе. Инженер-программист. Это случилось. С 15 декабря я вышел на работу. Еще ни разу не возникала у меня мысль "блин, не хочу идти на работу". Каждый день, выходя с утра из дома, я знаю, зачем я иду работать, что я буду делать, и насколько я этого хочу. Это безумно радует. Это стоит и стоило той цены, которую пришлось заплатить за достижение своей мечты. Я желаю всем из вас, кто действительно хочет быть программистом, идти вперед в достижении своей цели. Она более чем реальна, она совсем рядом, но за нее нужно заплатить. Заплатить своим потраченным временем, нервами, ведь изучать что-то с нуля - действительно не самый легкий шаг. JavaRush помог мне сделать эти первые шаги с легкостью, и не я отвернулся от программирования в самом начале из-за кажущейся сложности и обилия теории. Таким образом я смог довести свою довольно безумную идею по кардинальной смене области профессиональной деятельности (еще и при отсутствии технического образования) до конца. И вы обязательно сможете.