Topjava — онлайн-школа по обучению программированию на самом популярном в мире языке Java
Первое занятие бесплатно
Success does't come to You,
YOU GO TO IT
Владимир Калиниченко
Учился на курсе TopJava
Всем привет!

Подошёл к концу 2018 год и я, как все приличные люди, решил раздать долги. А должен я слова благодарности тем, кто так или иначе помог мне изменить свою жизнь и стать программистом.
Моя история могла бы показаться довольно заурядной среди историй других учеников, даже не смотря на мои 38 лет (на момент принятия на работу), если бы не один факт, который, как мне кажется, выделяет мою историю среди других.

Дело в том, что большая часть прочитанных мною историй о том, как люди становились программистами, так или иначе имела следующий контекст: автор писал, что с детства мечтал стать программистом, но что-то в жизни пошло не так или демонстрировал те или иные задатки к программированию, но опять же не судьба. То есть были, что называется (никого не хочу обидеть), «латентными» программистами. В моём же случае, всё было не так.

В детстве, юности и даже большую часть зрелости я и думать не думал о карьере программиста, более того, я, что называется, классический гуманитарий. В школе более-менее хорошие оценки были только по гуманитарным предметам, точные науки давались с трудом, едва натягивал на тройки (по пятибалльной системе). Информатики у меня не было в школе, равно, как и в институте от слова совсем. То есть в программе она была, но, то учителей не могли найти, если находили, то те постоянно были на больничных, в общем могу вспомнить аж три урока информатики за всю школьную программу. Институт я тоже закончил по специальности юриспруденция, короче, я определённо не технарь по складу ума.

Это, так сказать предыстория, вводные данные. Но обо всём по порядку.
Я был довольно успешным менеджером среднего звена с зарплатой в 1000 у.е. У меня было всё отлично, но периодически посещали мысли из разряда
«А что дальше?»
Впервые мысль стать программистом посетила меня в далёком 2013 году. На тот момент я был довольно успешным менеджером среднего звена с зарплатой в 1000 у.е. У меня было всё отлично, но периодически посещали мысли из разряда «а что дальше?». Тогда-то мне и попалась на глаза мотивационная статья от автора JavaRush о том, что программистом может стать любой неглупый человек. Глупым я себя не считал, но были довольно серьёзные сомнения в своих силах в виде полного отсутствия каких-либо фундаментальных знаний в этой сфере. И тут должна быть моя первая благодарность: автор так убедительно излагал свои мысли и аргументировал в своём цикле статей, что именно благодаря ему и его таланту, мысль о программировании поселилась в моей голове и в конце концов дала всходы. Спасибо вам, автор JavaRush!

Однако не смотря на интерес, активных действий по реализации задуманного, с моей стороны было не особо много. Главным образом я ковырял лекции и задачи на пробных 10 уровнях JavaRush. Многое было не понятным, какая-то магия из таинственных заклинаний, однако следуя совету опять же вышеупомянутого автора, я вчитывался в лекции снова и снова, пытаясь решить очередную задачу, ведь мне обещали, что пазл рано или поздно сложится (забегая наперёд – он таки сложился!). Прогресс был довольно вялым не только потому, что многое было не понятно, но и потому, что как я ранее писал, у меня всё и так было нормально: ЗП и работа довольно интересная (на тот момент), переходить в перспективе с 1000 у.е. менеджера на 500-700 у.е. джава джуна было как-то не вдохновляюще. Потом конечно был возможен рост, причём значительно выше чем я мог в принципе рассчитывать будучи менеджером, но то были далёкие перспективы, а тут зона комфорта и все дела.
Я потерял работу, а с ней и зону комфорта и моя ЗП стала соответственно пониже, порядка 700 у.е.
Ситуация поменялась в том же году. Я потерял работу, а с ней и зону комфорта. Учитывая, что я был довольно узкопрофильным спецом и вакансий по профилю я не смог найти, пришлось спуститься в ту область, где я тоже неплохо разбирался. Но там конкуренция повыше и моя ЗП стала соответственно пониже, порядка 700 у.е. (а это уже сопоставимо с ЗП джуна). Не будучи уверенным, что потяну один разобраться с Java я решил, что онлайн образование — это конечно круто, но выучиться офлайн намного реальнее (это было ошибкой). Купил курс в одной из школ, предлагавших изучить Java и полный надежд начал обучение. В процессе выяснилось, что после окончания курса, я не смогу претендовать на джуна, поскольку помимо знания синтаксиса и core нужно ещё довольно много всего (я тогда и аббревиатур типа SQL не знал) и это прямо очень сильно демотивировало, поскольку денег за курс заплатил нормально и ожидал, что вложение окупится довольно скоро. Фиг бы там. Нет, обучали в принципе неплохо и определённые знания я получил, но по окончании первой половины курса, я понял, что офлайн я получу ориентировочно тот же объём знаний, что и онлайн, но дороже. Поэтому решил не платить за вторую половину курса, а купить по новогодней скидке подписку на Java Rush.

Сказано-сделано. Но и тут всё было не очень гладко (даже совсем). Учился я в основном после работы, выделяя от часа до двух-трёх на учёбу. Это были тёмные времена: уставший после работы, в голову особо ничего не лезет, плюс сам по себе язык даётся с трудом (я ж гуманитарий). И хотя семья меня поддерживала (жена и ребёнок), тяжело было выкраивать время и на учёбу, и на семью, и на себя. Как следствие – лютая прокрастинация. Бывало бросал учёбу на полгода, играл в онлайн игры (зло, за которое приготовлен отдельный котёл), но рано или поздно возвращался, читал чужие истории успеха и начинал сначала. Также ситуация существенно отягощалась наступившим политическим, а потом (как следствие) и экономическим кризисом. Из-за того, что ЗП не была привязана к доллару, а национальная валюта девальвировала, по факту я стал получать 400-500 у.е. и мне стало совсем грустно.
Получил от авторов письмо счастья, об очередном наборе на стажировку (прим. Spring 5/JPA Enterprise - Topjava)
Так или иначе, я честно дошёл на Java Rush до 21 или 22 уровня и, наверное, проходил бы и дальше, но получил от авторов письмо счастья, об очередном наборе на стажировку (прим. Spring 5/JPA Enterprise - Topjava). Ничего особенного, стажировки набирали регулярно, но в этот раз меня уведомили, что по моей подписке это будет последняя бесплатная, после – только за дополнительные средства. По условиям участия в стажировке, на тот момент, нужно было достигнуть 30 уровня и сделать тестовое задание. Поскольку задачи от уровня к уровню становились всё тяжелее и тяжелее и надеяться достигнуть 30 уровня за месяц я не мог и мечтать (не забываем, что нужно ещё было сделать тестовое), я решил схитрить. У меня оказалось достаточно чёрной материи, чтобы открыть уровни вплоть до 30-го, без необходимости решать задачи. Итак, первую преграду миновал – 30-й уровень взят. Получаю тестовое и понимаю, что мои проблемы только начинаются: Spring, Hibernate, SQL, JSP. Да, нужен простейший CRUD, но, когда у тебя даже core не особо уверенный, сами понимаете. Я честно пытался освоить указанные технологии в оставшееся время, но не особо успешно. Как минимум, недостаточно для прохождения на стажировку. Хитрость номер два: нагуглить по гитхабу рабочее решение тех ребят, кто уже прошёл на стажировку, проверить работоспособность у себя, внести косметические изменения и выдать за своё решение. Таким вот совсем нечестным способом я и заскочил на подножку уходящего поезда последней бесплатной стажировки. Мне стыдно до сих пор, но ни о чём не жалею (кроме того, что мог учиться лучше и усерднее).

Стажировка тоже не показалась лёгкой прогулкой, однако познакомила меня с фреймворками и библиотеками, которые требуются в реальной жизни, на реальных проектах. Пользуясь случаем выражаю благодарность Григорию Кислину, автору проекта TopJava, на который меня и отправили парни из Java Rush в качестве онлайн стажировки. К слову, стажировку я с первого раза тоже не прошёл (не хватило знаний и навыков), но поскольку повторное участие в стажировке бесплатное, то при последующих прохождениях, мои знания и навыки всё возрастали.
Я наткнулся на новость, что один из лидеров рынка набирает студентов на очередные курсы по Java и эти ребята не ставили ограничений по возрасту
Однажды, проглядывая Junior Digest на одном известном и уважаемом ресурсе, я наткнулся на новость, что один из лидеров рынка набирает студентов на очередные курсы по Java. В отличие от других крупных компаний, эти ребята не ставили ограничений по возрасту (типа только студенты последних курсов), за что им мои слова благодарности. Условия простые: пройти отборочное тестирование, собеседование на английском, и ты на внешних курсах (около 3-х месяцев), после пишешь и защищаешь свой проект и, если ты достаточно хорош – попадаешь на внутренние курсы (от 1 до 6 месяцев), после которых можешь попасть на один из боевых проектов компании (а можешь и не попасть). На самом деле, вариант курсов от компаний с последующим трудоустройством – самый оптимальный и не ресурсозатратный путь в it-сферу, однако есть два нюанса: очень высокий уровень конкуренции и второе - никаких гарантий трудоустройства (можете не пройти по софт-скилам, например, или слабый английский). По поводу конкуренции напишу из своего опыта: на тестирование подалось более 450 человек, на курсы попало порядка 50, на внутренние прошло менее 20, сколько получило оффер – не знаю, но что получают не все – факт, основанный на инсайдерской информации.

В общем на тестирование я записался ни на что, особо не рассчитывая, но поскольку это лучше, чем не делать ничего, я решил попробовать. К тестированию я готовился на quizful, что мне реально помогло, как я считаю. Тесты были наподобие, но на английском. Каково же было моё удивление, когда через некоторое время меня уведомили, что я прошёл первый этап отбора и меня приглашают на второй этап – собеседование на английском. Радости не было предела, хоть и были сомнения насчёт английского. И я начал готовиться: попросил жену провести со мной несколько собеседований на английском, плюс подготовил и заучил ответы на типичные вопросы, которые с большой долей вероятности зададут на собеседовании (рассказать о себе, предыдущий опыт, почему к нам и т.д.).
Я презентовал проект устно, потом запустил приложение, демонстрируя функционал. Получил массу вопросов, как теоретического, так и практического содержания
Собеседование я тоже успешно прошёл и меня пригласили на курсы. Поскольку это был реальный шанс попасть на работу, я, посовещавшись с женой и заручившись её поддержкой, решил бросить работу и полностью сосредоточиться на курсах, то есть пошёл ва-банк.

Внешние курсы в основном вызвали у меня разочарование: мы начали с самых основ, бегло проходя по всему core. Уровень преподавателя также вызвал у меня сомнения, поскольку он был довольно косноязычным (мягко казано) как для преподавателя университета (а по совместительству, преподаватель курсов от лидера рынка и, по его словам, ещё и преподаватель платных курсов от одной офлайн школы). Иногда было сложно понять лекцию не потому, что сложная тема, а потому, что подача информации была ужасной. Также серьёзно подпортило впечатление происшествие на одной из лекций: один из студентов задал вопрос по теме и получил ответ от преподавателя. Проблемой же было то, что ответ был неверный. По всей видимости, преподаватель, чтобы не ударить при всей группе лицом в грязь, не зная ответа, решил, что лучше будет сымпровизировать, а не честно признать, что не знает/не помнит ответ. Так уж получилось, что я и мой сосед по парте ответ знали и поправили преподавателя, но сам факт имевший место быть, лично у меня серьёзно подорвал авторитет преподавателя. К счастью, ближе к концу курса нас начал вести другой преподаватель, значительно лучше знавший, как предметную область, так и обладавший практическими навыками. Да и подача информации была не в пример лучше.

Как и всё в жизни, всё рано или поздно заканчивается и внешние курсы тоже. Я написал свой выпускной проект и стал готовиться к защите, надеясь пройти на внутренние. Несмотря на то, что я не входил в топ учеников, я полагал, что шансы есть, считая себя твёрдым середняком. К сожалению, или к счастью, в происходящее вмешался его величество случай. На защиту я пришёл ранним утром. Я презентовал проект устно, потом запустил приложение, демонстрируя функционал. Получил массу вопросов, как теоретического, так и практического содержания. С разной степенью успешности ответив на вопросы, я получил обязательное дополнительное задание и удалился в отдельную комнатку для решения. Через некоторое время, решив задание, я вернулся к собеседующим. К этому времени состав собеседующих почти полностью сменился. После того как я представил своё решение, мне сообщили, что я не так понял задачу и предложили переделать. Я удалился снова. Когда я решил задачу опять, выяснилось, что от тех ребят, которые собеседовали меня с начала, не осталось никого. Те, кто были вместо них, проверили моё задание и сообщили, что поскольку никого из них на моём собеседовании не было, то они уточнят по мне у тех, кто был. В общем, не знаю кто и как уточнял, и как собирали отзывы о моей защите у разных людей, но по факту мне сообщили, что я не прошёл. Это был провал. Правда мне сообщили, что я могу попробовать защититься через 3 месяца со следующим набором, единственное условие – подготовить полностью новый проект для защиты. Поскольку выбора у меня не было, я согласился. Неудача повергла меня в серьёзное уныние, ведь надежда была на то, что я месяца через три уже буду работать, а тут только через три месяца повторная защита, без каких-либо гарантий. Напомню также, что я уволился с работы, поставив всё на кон, что также не добавляло оптимизма. Правда результатом курсов был и позитивный момент: я понял, что знаю и умею уже довольно многое, вполне способен написать работающее приложение с довольно сносным фронтом. Но по-прежнему не было уверенности, готов ли бизнес платить за эти навыки деньги.
После 12-14 интервью я получил свой первый оффер от одной небольшой компании с ЗП даже выше средней по рынку
Итак, я начал усиленно готовиться к повторной защите, но помимо этого сделал ещё один важный (и как оказалось позже, верный) шаг: я разместил на разных ресурсах своё резюме и начал ходить по собеседованиям. Предложений было не сказать, чтобы много, но 1-2 в неделю обычно бывало. Уровень собеседований тоже был разный, от довольно провальных, когда сам чувствовал, что проявил себя довольно посредственно, до таких, где я проходил техническое интервью, но по каким- то причинам не проходил дальше. Я не унывал, помня чей-то афоризм, что ещё никому не отказывали двадцать раз подряд и подтягивал те слабые места, которые выявляли собеседования. Так прошло порядка двух месяцев и около 12-14 интервью. После очередного из них я и получил свой первый оффер от одной небольшой компании с ЗП даже выше средней по рынку. На деталях первых дней, недель и т.д. работы останавливаться не буду, из этого может получиться ещё один лонгрид, просто скажу, что я успешно прошёл испытательный срок и работаю в этой компании по сей день, очень доволен коллективом и современным стеком технологий. Скоро буду отмечать год работы и, хотя почти каждый день сталкиваюсь с новыми вызовами, на работу хожу с удовольствием, ведь занимаюсь любимым делом.

Такой вот вышел длинный пост. Пользуясь случаем, ещё раз благодарю создателя Java Rush за то, что убедил меня коренным образом изменить свою жизнь, команду Java Rush за толковую реализацию идеи и Григория Кислина за его курс. И хотя я полностью так и не окончил ни один, они мне дали необходимую базу и веру в свои силы, для того чтобы найти свою первую работу в качестве программиста.

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

И напоследок: чем раньше вы начнёте ходить по собеседованиям – тем лучше. Вы никогда не будете чувствовать себя готовыми, но только получив н-ное количество отказов, сможете получить оффер. Помните, ещё никому не отказали 20 раз подряд, проверено!

Владимир Калиниченко, 05/01/2019