JavaRush/Java блог/Архив info.javarush/Рождение программиста: за 9 месяцев с нуля до Java Develo...
hermanurikh
20 уровень

Рождение программиста: за 9 месяцев с нуля до Java Developer

Статья из группы Архив info.javarush
участников
Всем привет! Вот и закончился мой испытательный срок на новом рабочем месте, и теперь я могу наконец-то поделиться своей историей трудоустройства. Мне 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 помог мне сделать эти первые шаги с легкостью, и не я отвернулся от программирования в самом начале из-за кажущейся сложности и обилия теории. Таким образом я смог довести свою довольно безумную идею по кардинальной смене области профессиональной деятельности (еще и при отсутствии технического образования) до конца. И вы обязательно сможете.
Комментарии (42)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
jackf31
Уровень 8
13 ноября 2015, 23:46
Действительно мотивирующая статья, видно, что человек действительно трудяга и желает остальным успеха. Спасибо тебе за эти строки, потому что прочитал их когда устал от решения задач)) появились новые силы)
hermanurikh
Уровень 20
24 ноября 2015, 14:59
Спасибо, рад, что статья оказалась полезна в качестве мотиватора)
napeHb
Уровень 21
2 апреля 2015, 01:49
Красавец! У меня с 1С тож самое было) Сначала учился дома сутками на пролет, поднакопил знаний — устроился стажером(программист 1С) на зп в 5 раз меньше, чем получал инженером. Зато через 4 месяца уже стал получать больше, чем до 1С). Сейчас купил тут прем, решил освоить JAVA. Ну а тем, кто читает — главное цель и план. Цель вы себе ставите сами, план вам тут разжевали — мне то самому пришлось его разрабатывать. Осталось только приложить максимум усилий. И нужно помнить, есть люди более талантливые и менее. Но все придут к цели, если не остановятся — только последним нужно будет приложить больше усилий.
ЗЫ 1С поднадоел, но не уверен пока, что опять в стажеры ломанусь после курса:)
VvGoloshapov
Уровень 24
24 марта 2015, 18:31
А откуда знания английского?) И да поздравляю вас с успехами
hermanurikh
Уровень 20
24 марта 2015, 18:38
Спасибо!

Английский знаю с детства, мама — учитель, изучал его практически одновременно с русским.

Не думаю, однако, что это сильно повлияло) Уровня Intermediate для моей работы было бы достаточно.
AlexY
Уровень 40
24 марта 2015, 15:24
А можете рассказать в чем заключался сделанный вами в процессе обучения проект?
hermanurikh
Уровень 20
24 марта 2015, 15:31
Если приблизительно, то задание было создать личный кабинет сотового оператора.

Соответственно, есть два типа пользователей — администратор и клиент. Нужно реализовать их возможности, как то для админа — создание нового пользователя, тарифа, контракта, опции к тарифу, пополнение баланса, администрирование существующих пользователей и контрактов. Для пользователя — просмотр контракта, смена тарифа, подключение новых опций.

Как-то так.
grishin
Уровень 27
1 апреля 2015, 01:33
На курсах изучали только Java? HTML/CSS/Javascript учили? Используете их в работе сейчас?
hermanurikh
Уровень 20
1 апреля 2015, 11:01
Были лекции и по HTML, и по CSS, и по JS. Да, использую. Без их знания сейчас бы не потянул.

До стажировки не имел о них представления.
grishin
Уровень 27
1 апреля 2015, 11:28
Спасибо! Да, мне тоже говорят знакомые джависты, что без этих трех никак не обойтись. HTML/CSS уже выучил, javascript ещё предстоит.
adnim
Уровень 16
24 марта 2015, 13:38
Спасибо за мотивирующую статью, молодец! Тоже уволился, уже гдет месяц учу java..)
Также интересуют ответы на вопросы Turambar про английский, а так же какие у вас были знания по java при поиске работы, допустим взять план обучения на javarush, ваши знания были по 20 уровень (имею ввиду в основном те темы, что в них рассматриваются)? или намного обширней?
Хочу понимать, на каком этапе и при каком объеме знаний, уже можно пробовать устраиваться junior'om?..)
Сколько времени в день уделяли учебе? ежедневно? и были ли пропуски в обучении дни, недели, месяцы в течении этих 9 месяцев?)
Если можно, пример резюме в личку:)
И последний вопрос, длительность рабочего дня? и сколько дней в неделю?)
Заранее спасибо)
hermanurikh
Уровень 20
24 марта 2015, 14:10
Про английский выше ответил)

Мои знания были ровно 20 уровней по JavaRush. Дополнительно параллельно ничего не изучал. Именно из-за этого возникли сложности при собеседовании из-за отсутствия знания теории.

Я занимался в основном на работе, где-то по 3 часа в день — получалось 5 дней в неделю. Пропуски были (когда на работе надо было что-то сделать), но не часто. Зато я все время был в атмосфере, где меня могут дернуть и отвлечь по рабочему вопросу — если сидеть дома и заниматься, думаю, было бы намного продуктивней)
До 20 уровня я дошел где-то к июлю, т.е. я не все 9 месяцев занимался. С июля по начало стажировки (конец сентября) почти не изучал ничего, за исключением недели между первым и вторым собеседованием, когда я пытался выучить весь туториал Oracle)

Мне кажется, после 20 уровня уже стоит пробовать устраиваться. Даже если получится на бесплатной основе (например, первый месяц, как мне предлагали), это будет более эффективное дальнейшее развитие, чем дальше проходить уровни. Это мое мнение, связанное, прежде всего, с тем, что к 20 уровню основы Java SE более-менее затронуты и изучены, и дальше идет только углубление.

Насчет резюме — оно у меня пока не специфично-программистское, так как я его не переделывал под новую профессиональную область, поэтому не думаю, что будет смысл)

Рабочий день стандартный, 5 дней по 8 часов.
Kishuomi
Уровень 22
23 марта 2015, 17:56
Потрясающая история успеха! Приятно читать.
Turambar
Уровень 19
23 марта 2015, 17:32
Очень мотивирующая и интересная история! спасибо!!! Вопрос у меня такой — иностранная компания, а как со знанием англ(или другого) языка в ней? не требовалось ли? или изначально знания были обширные?
hermanurikh
Уровень 20
24 марта 2015, 14:02
Английский язык требовался на уровне Intermediate. Это проверялось на втором этапе (все компьютерное тестирование было полностью на английском).
Gradus
Уровень 27
23 марта 2015, 09:14
Спасибо большое за то, что оставил написал свою историю!
Подскажи, пожалуйста, как компания называется (можно в личку), я тоже сейчас на пути устройства в иностранную компанию, довольно известную, и там тоже, скорее всего речь будет идти о 2 месяцах стажировки.
hermanurikh
Уровень 20
23 марта 2015, 13:39
Ответил в личку.
4e4el
Уровень 34
22 марта 2015, 15:30
Круто, мои поздравления и наилучшие пожелания в карьерном и личностном росте! Такой вопрос: у вас остались учебные материалы с курсов? Сам собираюсь в ближайшее время работу искать и буду благодарен любой помощи :)
hermanurikh
Уровень 20
22 марта 2015, 15:35
Спасибо!

Учебные материалы остались, но, к сожалению, не уверен, что имею право ими делиться. Если будут какие-то конкретные вопросы или темы, по которым нужна будет помощь — пишите)
4e4el
Уровень 34
22 марта 2015, 15:45
Ок, я понял вас. Тогда подскажите с чего начинать и в каком порядке двигаться в освоении enterprise? Глядя на стэк технологий просто глаза разбегаются и просто не понятно за что браться в первую очередь…
hermanurikh
Уровень 20
22 марта 2015, 16:40
Есть один блог — www.journaldev.com/tutorials
С помощью этого блога во время стажировки я осваивал Java EE.
Мне кажется, в нем доступно и с нуля разъясняются основные темы.

Попробуйте ознакомиться с этой статьей — www.journaldev.com/1854/java-web-application-tutorial-for-beginners
В ней происходит знакомство с контейнером сервлетов, с основными принципами отображения JSP-страниц и использования тегов для вывода контента в браузер.

Дальше можно изучить сервлеты более подробно — www.journaldev.com/1877/java-servlet-tutorial-with-examples-for-beginners

Затем можно подключить базу данных и освоить взаимодействие с ней. На том же ресурсе можно найти статьи по JDBC / JPA / Hibernate.

После этого можно перевести фронтенд на какой-нибудь фреймворк — JSF или Spring MVC.

Все это есть в этом блоге, и все разъяснено доступно и с нуля)
4e4el
Уровень 34
22 марта 2015, 16:44
Спасибо за помощь, отличный ресурс :)
grishin
Уровень 27
1 апреля 2015, 11:52
Попробуйте ознакомиться с этой статьей — www.journaldev.com/1854/java-web-application-tutorial-for-beginners
В ней происходит знакомство с контейнером сервлетов, с основными принципами отображения JSP-страниц и использования тегов для вывода контента в браузер.
Я сейчас изучаю сервлеты и JSP по книге Head First Servlets and JSP. Не сравнивал этот ресурс с этой книгой? По чем лучше учить?
hermanurikh
Уровень 20
1 апреля 2015, 13:12
Не слышал об этой книге. Мне кажется, лучше учить там, где удобно искать конкретные темы, интересующие вас. Если книга удобна, почему бы и нет.
KuVa
Уровень 29
22 марта 2015, 02:58
Мои поздравления. Можешь поделиться пожалуйста названием компаний? Тоже живу в Петербурге интересно)