Хабрахабр

Как стать Java разработчиком за 1,5 года

Мы занимаемся разработкой программного обеспечения для пивоварен оценки финансовых и кредитных рисков. Меня зовут Сергей, мне 40 лет и сейчас я работаю Java разработчиком в немецкой компании. До этого я работал в сфере IT-поддержки и системной интеграции. Это моя первая работа в качестве разработчика. закончился мой шестимесячный испытательный срок, и у меня на руках бессрочный контракт. Первого февраля 2019 г. Я хочу поделиться своим опытом, как можно самостоятельно выучить Java так, чтобы получить работу.

Пить пиво в рабочее время у нас разрешено, мы же в Германии 😉 Это мой рабочий стол.

И особенности поиска работы в маленьком городе Германии, когда ты уже там» Моя первая статья: «IT-эмиграция с семьей.

Моя вторая статья: «Получить работу в Германии станет проще».

Disclaimer

Нет никакой красной таблетки, чтобы быстро попасть в матрицу. Скажу сразу, что всякие варианты «выучи яву за 10 дней» (21 день, 30 дней и т.д.) – это утопия. Но за год-два параллельно с основным местом работы – вполне реально.

Что у меня было в активе, прежде чем я начал изучать Java

Я ведь пришел в программирование не из совершенно другой области, а из IT. Сначала я хотел назвать статью «Как стать Java разработчиком за 1,5 года с нуля», но передумал. Вероятно, дальнобойщику будет не так просто повторить мои шаги, чтобы стать программистом. Но работал я не в разработке, а в поддержке. Хотя, если у моей жены получится в свои 34 переквалифицироваться из чистого гуманитария в разработчика (или тестера), то напишу еще одну статью.

Ничего особенного или каких-то глубоких знаний. Стоит сказать о том, что я уже умел, когда решил стать разработчиком.
В университете в течение 2-х семестров мы изучали программирование на Си и С++. Далее, будучи студентом, я писал какие-то простенькие программы на Delphi для себя. Сдали – забыли. Это было более 20 лет назад. И всё.

Дальше моя карьера выглядела так:

  1. Системный администратор
  2. Системный инженер
  3. Зам. руководителя отдела
  4. Руководитель
  5. Инженер тех. поддержки

Непосредственно программированием я вообще не занимался.

Онлайн-курсы.

Я начал со следующих специализаций на coursera.org:

Java Programming and Software Engineering Fundamentals – 4 месяца

Я прошел следующие онлайн-курсы:

Последний capstone-проект я не сделал. После этой специализации я уже более-менее разбирался в языке, но писать самому программы было еще нереально. И у меня, честно говоря, пропал энтузиазм. Мне было сложно. Я сделал перерыв.

Object Oriented Java Programming: Data Structures and Beyond– 5 месяцев

Я пошел на специализацию из пяти курсов: Через месяц я решил всё-таки вернуться к занятиям снова.

Но предпоследний курс в списке «Mastering the Software Engineering Interview» помог мне неплохо подготовиться к последующим собеседованиям. Последний capstone-проект я также не осилил. Уже было неплохо, но не впечатляло. А еще я смог написать свой первый простенький парсер простого сайта на чистом HTML.

How to Code – 3 месяца

Следующим шагом были эти два странных курса на edx.org:

Авторы курса используют специальный язык программирования Beginning Student Language (BSL). Я написал «странных», потому что там вообще речь не идет о Java. Наверное, эти два курса помогли мне лучше понять некоторые приемы написания программ и стали хорошим подспорьем для написания Unit-тестов в реальной работе. Я где-то прочитал, что они мега-полезные. Но, если быть честным, их можно пропустить.

Data Structures and Algorithms – 2 месяца

Потом я снова вернулся на coursera.org и начал новую специализацию, сотоящую из следующих четырёх курсов:

На остальные даже не стал записываться. Но осилил только первых два. Параллельно с этими курсами я начал читать книгу OCA, о которой речь пойдет дальше.

Топтание на месте

Прохождение новых курсов не давало такого ощутимого количества новых знаний, как это давали первые. В тот момент я понял, что топчусь на месте. знания вроде прибавляются, но это никак не приближает меня к получению работы. Т.е. Я всё также не мог написать ничего, что было бы сложнее парсера. Я не понимал, как с такими знаниями можно вообще найти на работу. Я даже пытался написать свой сервис парсинга сайтов с блэк-джеком и путанами, но уже после недели разработки мой проект превратился в кашу из классов. Ну как так-то?!?!? Кроме того, мне всё ещё были непонятны некоторые аспекты функционирования языка. И я уже сам не мог разобраться в том, что я там понаписал. Двенадцать онлайн-курсов и целый год времени, Карл, вы только вдумайтесь в это. И это после того, как я уже потратил примерно год на все этих курсы!!! Я был уверен, что за год я смогу стать разработчиком благодаря этим курсам. На самом деле, это был провал. Мне нужен был план Б. Я заблуждался.

Альтернатива

Но ничего толкового не было, либо стоило приличных денег. Я стал искать курсы, которые бы помогли мне получить какие-то практические навыки, востребованные в реальной работе. Я не был готов к таким расходам. Те же курсы от отуса стоят 50000 за шесть месяцев и отзывы на них противоречивые. В итоге все онлайн-курсы, которые мне попадались, делились на две категории: Я был готов впахивать самостоятельно и искал, как это можно сделать бесплатно или совсем недорого.

  • Первая рассчитана на новичков или людей с нулевой подготовкой. С их помощью ты достигаешь уровня «три с минусом». Это я! Это про меня!
  • Вторая для «хорошистов» с опытом работы, которые хотят стать «отличниками». Вроде таких: «Как писать микросервисы на Java для высоконагруженных проектов с использованием WildFly Swarm». Что это вообще такое???

Ну где я и где все эти микросервисы??? А между ними зияющая пустота. Или есть, но за хорошие деньги. Получалось, что для «троечников» вообще ничего нет. И как стать «хорошистом» бесплатно, без регистрации и СМС, вообще непонятно.

Сертификация Oracle

Потому как фраза «Я профессиональный программист на Java» звучит очень круто и должна сразить будущего работодателя наповал!!! Тогда я решил стать сертифицированным разработчиком на Java. Во всяком случае, тогда я так наивно думал.

OCA: Oracle Certified Associate Java SE 8 Programmer – 2 месяца

Для этого я купил книгу:

Она реально открыла мне глаза на многие аспекты и заставила понять, как работает язык в деталях. На освоение этой книги у меня ушло примерно 2 месяца. Но не в поиске работы, а в понимании языка Java. Это было хорошее продвижение вперед. Я набрал 84% при необходимых 65%. На экзамен я шел с уверенностью, что сдам его хорошо, и я его сдал. Я был безмерно горд собой.

В России он стоит немного дешевле. Стоимость экзамена $245.

Оцените стоимость официального тренинга от Oracle для подготовки к этому экзамену

OCP: Oracle Certified Professional Java SE 8 Programmer – 4 месяца

Я с энтузиазмом принялся за вторую книгу тех же авторов:

И это оказалось реально сложно. На освоение второй книги я потратил уже 4 месяца. Также меня убивало обилие классов для ввода и вывода. Два раза я делал перерывы по одной неделе, потому как понять лямбда выражения или многопоточность мне было действительно непросто. Что там базовый класс, что производный? Все эти NIO и NIO2, которые так похожи и которые нужно было знать. В итоге я назначил дату экзамена за месяц, потом перенес его на две недели, потом еще на две. Это был настоящий кошмар. И мне нужен был этот сертификат. Меня поджимали сроки, на горизонте маячило собеседование. В отличие от первого экзамена, я уже не был уверен в хорошем результате. Я не стал переносить экзамен в третий раз и пошел с тем, что имел. От былой гордости не осталось и следа. Я вообще не был уверен, что смогу его сдать. Но я сдал и этот экзамен. Объем информации для понимания и запоминания во второй книге раз в пять больше чем в первой. Но это был прорыв… для меня. К счастью, тестовые задания в книгах оказались сложнее, чем те, которые были на экзамене. Прорыв в плане знаний и понимания того, как работает язык и какие инструменты он предлагает.

Стоимость экзамена также $245.

Но я не знаю, смог ли бы я вообще сдать эти экзамены, если бы не прошел предварительно курсы. Могу сказать, что эти две книги мне дали больше, чем все те онлайн курсы, что я прошел ранее. И это было уже что-то. С помощью этих экзаменов я перешел на уровень «три с плюсом». WTF???? Но я всё также не был способен самостоятельно реализовать какой-нибудь интересный проект.

Более того, я понимал, что мои знания, которые я с таким трудом получил, без практики очень быстро улетучиваются. Я понял, что я достиг максимума от того, что я мог получить сам, и изучать язык дальше было бессмысленно. Тянуть было нельзя, и я занялся подготовкой к собеседованию и приобретением навыков, которые могут потребоваться при устройстве на работу.

Что нужно, чтобы получить работу?

Про подготовку к собеседованию писать не буду. Нужно пройти собеседование и техническое интервью! Напишу только про те знания, которые нужны, чтобы пройти техническое интервью. Это тема для отдельной статьи.

Подготовка к интервью – 1 месяц

Я купил следующую книгу:

Она поможет подготовиться к техническоой части собеседования. Настоятельно ее рекомендую. Многие задания были непонятны, поэтому я нашел еще один экземпляр на русском, и когда мне было совсем непонятно, я смотрел в него. На неё я потратил примерно месяц.

Дополнительные навыки

У них была вакансия Java Developer. К этому моменту я уже активно мониторил рынок вакансий в своём городе и выбрал компанию, в которой хотел бы работать. Мне не нужны были глубокие знания всех этих технологий, мне нужно было простое понимание, что это такое и как оно работает. В вакансии в числе желаемых навыков стояли знания Oracle SQL, GWT, Eclipse, SVN, Maven, Jenkins. Чтобы на собеседовании можно было сказать, мол да, я знаком, но не глубоко.

Oracle SQL – 1 неделя

Но это был T-SQL от Microsoft, а тут требовался SQL от Oracle. SQL я уже неплохо знал, так как по долгу службы приходилось делать много произвольных отчетов для руководства. Пришлось купить книжку, чтобы вспомнить основные моменты и понять разницу.

И понял, что я на 70% готов сдать еще один экзамен. Эту книжку я пробежал быстренько за неделю. Но мне было уже не до этого.

SVN – 1 неделя

GIT или SVN используется в большинстве компаний, которые занимаются разработкой ПО. SVN распределённая система управления версиями. Я даже подумал, что если спросят про SVN, то скажу, что имел дело с GIT. Курсов по SVN я не нашел, поэтому решил взять короткий курс по GIT: «Version Control with Git», чтобы быть в курсе темы. Если вдруг будет что-то непонятно, то всегда можно будет сказать, что в GIT это немного по-другому. А потом на месте сориентируюсь. И это, кстати, сработало.

GWT – 3 дня

Потратив несколько дней на поиски информации, я понял, что с этим Фреймворком от Google мне просто не разобраться. Следующая технология из списка – GWT. Слишком всё круто. Если упрощенно, то можно писать сложные сайты на Java, а этот Фреймворк преобразовывает твой код в HTML + JavaScript и отображает в браузере без всяких надстроек и дополнений. GWT я решил пропустить.

Eclipse – 3 дня

Каких-то специальных курсов я не брал. Eclipse — среда разработки, основной инструмент разработчика, с которым я имею дело каждый день. Попробовал всё сам руками. Посмотрел несколько видео на youtube, понял основные приемы.

Maven, Jenkins – 15 минут.

Собеседование было уже утром, поэтому я просто прочитал 2 статьи в википедии и лёг спать. На эти две вещи времени просто не осталось.

Время

Этим я занимался по вечерам, тратя 1-3 часа в будние дни. Мной было потрачено примерно 18 месяцев, 2 недели, 6 дней и 15 минут на получение знаний и навыков, необходимых для получения места разработчика. И около 5-6 часов на выходных.

Деньги

Но потратить их всё же пришлось. Я готов был тратить свое время и не готов был тратить деньги.

Курсы:

  • Все онлайн курсы я прошел бесплатно Бесплатно. Как это сделать на coursera.org я писал тут.

Книги:

Экзамены:

Дополнительные расходы:

  • Проезд в другой город на экзамены, т.к. в моем нет сертификационных центров – 120€.

Итого: 702€

Книги покупал на английском, т.к. Совсем бесплатно, к сожалению, не получилось. экзамен тоже на английском.

Результат

Я бы даже сказал, что их хватило с запасом. Этих знаний хватило, чтобы пройти собеседование и подписать контракт в достаточной крутой немецкой компании.

Их также хватило, чтобы пройти шестимесячный испытательный срок и получить постоянное место в штате разработчиков.

И ни от одной заявки я не отказался «потому что я не смог». За эти 6 месяцев работы в качестве разработчика я закрыл более 200 заявок на разработку, доработку и исправление ошибок в коде совершенно разных подсистем и модулей. Что-то я делаю медленно, но мне это интересно и процесс идёт. Да, мне приходилось и сейчас приходится разбираться в новых вещах, искать информацию, вникать в детали. А ещё за это хорошо платят!!!

Я самый простой парень, который просто решил изменить свою жизнь к лучшему. Но не надо думать, что я очень умный. А если смог я, то сможешь, и ты! Я такой же, как и ты.

Но это по моей собственной глупости (читайте об этом в моем телеграм-канале). На самом деле, чтобы стать разработчиком, у меня ушло не 1,5 года, а два. Но необязательно повторять мои ошибки. Непосредственно на яву я потратил 1,5 года. Выкидываем всё лишнее и получаем примерно такой путь: Думаю, что можно достичь того же результата за более короткий срок.

Часть первая – 5 месяцев

Берем следующие курсы специализации Object Oriented Java Programming: Data Structures and Beyond на курсере:

Параллельно читаем книжку:

По результатам сдаем экзамен.

Часть вторая – 2 месяца

Берем следующие курсы специализации Data Structures and Algorithms:

Параллельно читаем книгу:

Часть третья – 4 месяца

Читаем книжку:

По результатам сдаем экзамен.

Часть четвертая – 1 месяц

Плюс изучаем предметную область, в которой работает работодатель, его продукты, если есть и т.д. Смотрим, что конкретно хочет работодатель от соискателей, и тратим по одной неделе на каждую из 4-х самых нужных технологий, программ или Фреймворков (Git, Eclipse, Maven, Spring и т.д.).

За год – вполне реально. Итого год.

Пишу о том, как это было, что хорошо и что плохо в Германии, о планах на будущее. О том, как я изменил свою жизнь в 40 лет и переехал с женой и тремя детьми в Германию я пишу в своем телеграм-канале @LiveAndWorkInGermany. Присоединяйтесь – будет интересно. Коротко и по делу.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть