Досье
  • Кто: Илья Альтерович
  • Кем работал: промышленный альпинист
  • Возраст на момент старта обучения: 35
  • Место жительства: Одесса, Украина
  • Первая работа программистом: через 1 год и 8 месяцев (февраль 2015 года) – в 37 лет.
  • Кем работает сейчас: по-прежнему программист, сменил одну компанию=)
  • Оригинал истории
Если вам уже 35 лет, — это ещё не повод не начинать учёбу! Конечно, когда у тебя за спиной годы ценного опыта в другой отрасли это не так просто, но вовсе не безнадежно. У нас есть прекрасный пример — Илья из Одессы решил переквалифицироваться из промышленного альпиниста в промышленного программиста именно в этом возрасте. И ему это удалось. Читайте одну из самых увлекательных и основательных историй успеха на JavaRush!

Предыстория

Хочу поделиться своей историей, ибо чувствую на себе моральные обязательства перед замечательными людьми, создавшими этот ресурс, и перед сообществом, которое он породил. Создателей хочется хоть как-то отблагодарить, а «джаварашовцев», ещё пока не достигших своей заветной цели, — подбодрить, и подкрепить хорошей порцией мотивации! Суть: уже две недели я работаю программистом, и это во многом благодаря JavaRush.
Мне 37 лет, женат, двое детей 6 и 3 лет. Последние 15 лет я работал промышленным альпинистом (высотником). Работа, как понимаете, связана с программированием чуть менее, чем никак.
По большому счёту — работа неплохая, свежий воздух, заставляет поддерживать себя в «форме», хватает свободного времени, сам себе хозяин. Да и по деньгам неплохо (в сезон). НО:
  • Имеет ярко выраженную сезонность. То есть 3-4 месяца в году работы практически НЕТ.
  • Перспектив НЕТ. Проработав 15 лет на этом поприще, я понял, что в следующие 5 – 10 лет очень навряд ли что-то поменяется (по крайней мере в лучшую сторону).
  • Дети стали подрастать, и денег стало явно не хватать…
  • Попросту стало надоедать… 15 лет — очень большой срок, тут что угодно надоест.
Итак, в мае 2013, я взвесил все «за» и «против» пришёл к выводу что пора менять работу… Причём на ту, что лишена недостатков предыдущей. То есть:
  • работа есть круглый год;
  • хорошие перспективы роста;
  • значительно выше зарплата (если и не сразу, то в перспективе);
  • интересная работа, к которой у меня имеются склонности.
Склонности к программированию у меня были. Правда на практике это выразилось в лишь том, что я в школе немного писал на бейсике, ещё меньше — на ассемблере (на ZX – Spectrum, он же Sinclair был когда-то такой культовый комп). Минусы «высотки» во время учёбы для меня вылились в плюс: всё свободное время, которого у меня имелось в избытке весной и особенно зимой, я мог потратить с пользой на изучение программирования. Программирование – понятие растяжимое. Я «погуглил», взвесил перспективы… и выбор мой пал на её величество Java.

Учёба

Первой моей книжкой по Java стала «Программирование на Java для детей, родителей, дедушек и бабушек» Якова Файна. Не уверен, рекомендовать ли эту книгу начинающим, возможно, есть книги и получше, но на тот момент читать её было интересно и довольно понятно. практические примеры, приведённые там, я тщательно проработал, что дало мне необходимый минимум практических навыков для дальнейшего продвижения. Книжку дочитал, решил поискать курсы. Очные курсы были дорогими, да и не было уверенности, что они того стоят. И в этот момент я вспомнил, что во время работы над книжкой, где-то (на habrahabr, кажется) натыкался на статьи про JavaRush. И всё завертелось… После прочтения и проработки книжки первые 10 – 12 уровней я отщёлкал как семечки, было даже слишком легко. Но всё равно интересно. Дальше стало сложнее и ещё интереснее.
Проходил уровни я строго последовательно, т.е. читал лекцию, и пока свежо её понимание решал задачи к ней, и к следующей лекции не переходил до тех пор, пока все предыдущие задачи не были решены, за очень редким исключением. Так я добрался до 20 уровня с 3-5 нерешёнными задачами.
При возникновении проблем с решением задач, конечно очень помогает общение на форуме, и в то же время, помогая другим форумчанам, ты сам прокачиваешь свои навыки! Где – то через полгодика я решил, что пора уже попытать счастья и попробовать себя на собеседовании. Погуглил примеры резюме, несколько примеров резюме прислали мне знакомые, также написал Зеппу (глава JavaRush, прим. ред.) и он мне дал несколько советов и шаблонов для резюме. Я его составил и переслал на проверку Зеппу; он высоко его оценил. Далее я разместил резюме на популярных сайтах поиска работы, составил список адресов HR-отделов крупнейших IT-компаний Одессы, в которых были вакансии Java Developer (не только «джунов»). Их оказалось порядка 20. Половину я на всякий случай сразу отложил на случай, если везде облажаюсь, а на другую половину разослал резюме.

Первые собеседования

Не скажу, что меня засыпали приглашениями, но в конечном итоге за месяц-полтора я сходил на полдесятка собеседований. Какие-то оказались более или менее удачными, какие-то — не очень. Было два или три тестовых задания, которые я выполнял с переменным успехом и одно собеседование по разговорному английскому. Его я прошёл успешно, но до технического собеседования не дошло: опередил другой претендент. Ещё я едва не попал на так называемый «бенчмарк» в Luxsoft: прошёл тесты, собеседование, но в последний момент, когда прочитал контракт, одумался и отказался. Если вкратце, то три месяца они тебя учат, и платят стипендию 300$. Если ты им понравишься, они предлагают работу джуном (500$). Через 9 месяцев они могут поднять зарплату, но, как выяснилось из договора, если ты не будешь посещать курсы или после курсов захочешь в течение то ли года, то ли двух, сменить место работы, ты обязан выплатить им компенсацию за обучение в размере 2500$. Я счёл такие условия неприемлемыми, и отказался. Ещё от одной вакансии я тоже сам отказался: мне показалось, что там у меня не будет перспектив.
Но главное: я приобрёл очень ценный опыт прохождения собеседований. После каждого собеседования я уже гораздо лучше представлял, что меня ждёт на следующем, какие приблизительно вопросы мне будут задавать, и каких будут ждать ответов… Не то, чтобы на всех собеседованиях задают одни и те же вопросы, но многие вопросы задают почти всегда.
Да и после каждого собеседования я составлял себе маленький списочек вопросов, в которых я «плавал», и потом находил на них чёткие ответы. В общем, ходить на собеседования — действительно полезно, независимо от результатов…

Стажировка

Приблизительно в это же время (осень — зима 2013 года), мне написали в личку JavaRush с предложением поучаствовать в «Реальном проекте». Честно говоря, после того как мне перечислили технологии, используемые в нём (Spring, Hibernate, GWT, MySQL, Maven, Git), я слегка испугался, так как по большей части я слышал эти слова краем уха, а то и вовсе в первый раз. Я подумал, что терять мне нечего, время на участие есть, и согласился.
Поначалу было действительно ТЯЖЕЛО, но через недельку-вторую, я, почитав книжки и статьи, вник в работу уже имеющегося кода достаточно глубоко, чтобы уже самому что-то написать, и сделать свой первый коммит.
С ребятами на проекте мне очень повезло. Нас было четверо Тимур (Timur), Женя (Groomsh), Серёга (SergeyKandalintsev) и я. Курировали наш проект непосредственно из JavaRush. Тимур занимался по большей части бекэндом, Женяфронтэндом, Серёжабазой данных, янемного фронтэндом, немногобекэндом. Через пару месяцев мы стали первой командой, которая успешно выполнила настоящий «Реальный проект», которым сейчас пользуются все джаварашевцы – это проект «Рейтинги» (в новой версии JavaRush этот проект уже не используется). Сказать, что «Реальный проект» дал мне очень многое — это ничего не сказать! Помимо очевидного прироста ценных знаний, ко мне пришло ещё более важное понимание: Java — далеко не единственный необходимый навык, хотя и основополагающий. Java — это азбука программирования, но кроме азбуки нужно знать правила правописания, грамматику, синтаксис, правильно строить предложения, иметь богатый словарный запас… А в программировании необходимо знать и уметь применять множество фреймворков, паттернов и инструментов разработки, а ещё — знать, где искать решение возникающих проблем и ответов на свои вопросы. После реального проекта я стал интересоваться более продвинутыми технологиями, и углублять свое понимание уже известных мне… Мои интересы вышли за пределы «чистой» Java Core. А ещё — в моем резюме появился новый, солидный, пункт в графе «Опыт работы» с описанием крутых и модных технологий, которые были использованы в проекте.

Дальнейшие мытарства

Стажировка закончилась, у меня начался новый трудовой сезон по высотке… Свободного времени стало мало, вопрос смены профессии отошёл на второй план. Тем не менее, почти всё свободное время я уделял программированию: писал различные «мини-проектики», иногда решал задачки на JavaRush, мониторил вакансии, а в конце осени записался на бесплатные курсы в IT-контору DataArt. Cами курсы оказались слишком обзорными: почти ничего полезного я там не узнал. Зато в рамках этих курсов студентам предложили разбиться на команды и написать «Проект». Проект заключался в написании онлайн-системы тестирования, с регистрацией пользователей, пользовательской частью (прохождение опросников), и админкой (создание опросников и управление аккаунтами). Я оказался в одной из четырёх команд, а в последствии получилось, что проект я писал практически сам. Примерно за месяц (параллельно работая на высотке) я сам написал вполне сносное, как мне кажется, веб-приложение, основанное на тех же технологиях и паттернах которые мы использовали на стажировке JavaRush (плюс jsp, Spring Security, и ещё кое что). Если кому интересно, могу кинуть ссылку на открытый репозиторий с исходниками проекта…

Высота взята!

В декабре меня пригласили на собеседование в одну контору. Мне сказали, что позвонят, когда примут решение… «Ну вот, всё как обычно, — подумал я тогда. — Если сразу не взяли, то надежды мало». Но через месяц, уже после Нового года, я написал HR-менеджеру этой компании, и поинтересовался моей судьбой. К моему удивлению она ответила, что вакансия ещё открыта и решение ещё не принято…
Прошёл еще месяц, и вот, уже в конце января, она позвонила мне с вопросом, актуален ли для меня поиск работы, на что я «непринуждённо» ответил, что да, пока что ищу. На что она мне ответила, что я её уже нашёл, так как я им подхожу!
Ощущение, конечно, непередаваемое, когда тебе сообщают такое по телефону, просто крылья вырастают! Чтобы это понять, нужно самому испытать. Чего вам и желаю в ближайшем будущем! Моя первая работа — участие в разработке крупного проекта ERPприложения, долгостроя. В приложении оказалось очень много специфических нюансов, поэтому киевской компании-разработчику понадобился программист неподалёку от заказчика — в Одессе, где я живу. Приложение написано на GWT + ExtGWT + Spring + Hibernate + MySQL, и ещё куча вспомогательных второстепенных библиотек. Так уж получилось, что это как раз тот стек технологий, которые я изучал и имею какой-никакой опыт. Из минусов упомяну, что проект старый, и в нём использованы старые версии библиотек и устаревшие подходы проектирования, причём устаревшие настолько, что обновлению уже практически не подлежат. А еще оказалось, что допиливать результат 3-4 лет работы других программистов я буду в одиночестве! Разумеется, я ожидал, что ко мне, как к любому джуниору будет приставлен более опытный тимлид, он же наставник-советчик, который будет меня направлять и проводить ревью моего кода. Но судьба распорядилась иначе, мне доверили работу, рассчитанную на опытного самостоятельного разработчика. «Раз такое дело, — подумал я, — то неплохо бы сходу и прибавку к зарплате попросить». И поднял первоначальную цифру на 200$. Никаких возмущений с их стороны это не вызвало. конкретных цифр не буду называть, лишь упомяну, что размер зарплаты ощутимо превзошёл мои ожидания. К тому же у меня получился всего один (а не три, как обычно) месяц испытательного срока. Оформили меня, как обычно, через СПД (для программистов это — обычная практика).

Технологии, которые вам пригодятся в работе: личный опыт

Очень желательно, даже пожалуй НЕОБХОДИМО знание баз данных, SQL (MySQL), jdbc, Hibernate, Jpa, сетевых технологий html, jsp, servlets, xml, Tomcat. Обязательно знание основных JavaSE-паттернов (так называемые GOF паттерны), так же ОГРОМНЫМ плюсом будет хотя бы поверхностное знание Spring, SpringMVC, сборщика проектов Maven, логирования log4j, юнит-тестирования JUnit. Нужно уметь работать с системами контроля версий, Git например. Иногда спрашивают или дают тестовые задания по веб-сервисам (SOAP, REST). Наряду со всем этим знание Java core должно быть если не безупречным, то, по крайней мере, очень уверенным.

Первые впечатления

По истечении первых двух недель я начал вникать в код, и теперь знаю, что всё получится…
Хочу сразу заметить, что работа программистом – это всё-таки не курорт, это прежде всего работа, на которую нужно утром вставать и вечером возвращаться. Но эта работа — гораздо лучше многих других. В ней есть и интерес, и деньги, и перспективы. А особенно приятно, когда ты смог этого добиться сам, своим умом, трудом и настойчивостью. Смог изменить свою жизнь, что всё-таки во многом ты сам хозяин своей судьбы.
Единственное чего я боюсь, это того, что надо мной возобладает лень. Что добившись определенного результата я обленюсь, и перестану расти в профессиональном смысле. Но всё-таки очень надеюсь, что этого не произойдёт. Ещё раз хочу поблагодарить создателей этого замечательного ресурса! А тебе, джаварашовец, хочу пожелать настойчивости и терпения на избранном тобой пути, как говорил дедушка Ленин: «Пгавильной догогой идёте товагищи!» =) и ещё не потакать собственной лени, и главное «NEVER GIVE UP». Дорогу осилит идущий!

Послесловие: два года спустя…

…решил написать продолжение моей «Истории успеха». Причин тому три:
  • меня попросила администрация=);
  • Я по-прежнему считаю, что именно этот ресурс сыграл ключевую роль в моём «войти в айти»;
  • Я по-прежнему уверен в том, что мотивация — это так же один из ключевых факторов в этом деле, а один из лучших мотиваторов — это истории успеха реальных людей, которые были в такой же точно ситуации, как и ты, джаварашевец. Ибо по себе знаю, что временами просто руки опускаются… и у многих уже больше не поднимаются. Это действительно непростой путь, но он того стоит!
Так что вот мои ответы на вопросы: Как вообще изменилась ваша жизнь после того, как вы устроились на новую работу и что вы чувствовали в тот момент? Нуу, изменилась конечно… В первую очередь поменялся извечный баланс «время-деньги». Денег стало ощутимо больше, времени — существенно меньше… На «хлеб насущный», наконец-то, стало хватать, но откладывать на «чёрный день» пока не получаетсяJ. Хотя, уверен, если чуть-чуть напрячься, то получится откладывать 200-500$ в месяц (это при том, что я один работаю в семье из 4 человек, жена имеет возможность спокойно заниматься детьми). Стабильность, уверенность в завтрашнем дне, или, по крайней мере хоть какая-то их иллюзия появилась…  Опишите свою работу. Чем вы занимаетесь, что изучаете, как проходят процессы взаимодействия с командой? В настоящее время я работаю уже во второй компании, «Electric Cloud». Это американская компания, продукт — непростой — инструмент DevOps для Continious Integration/Continious Delivery, что-то вроде Jenkins, только гораздо крупнее, и сугубо коммерческий продукт. К тому же, уже достаточно древний, полный легаси-кода (устаревший код, прим. ред.), который нужно поддерживать, фиксить баги, иногда писать новые фичи. Словом, зоопарк технологий такой, что мама не горюй! Приходится иметь дело в большей или меньшей степени с Java8, GWT, JS, PHP, Perl, HTML, CSS, Spring, Hibernate, JUnit, Mockito, Maven, Perforce и это только основные… Первые несколько месяцев прозревал просто, потом — привык. Условия работы стандартные. Пять дней в неделю, 18 рабочих дней в году — отпуск (плюс все государственные праздники). График по большому счету свободный, если есть желание, можно работать из дому. Однако я предпочитаю офис, там обстановка более рабочая. Чаще всего работаю с 12 до 19-20 часов. Ежедневно у нас проходят Scrum-апдейты (Scrum — методология гибкой разработки ПО, прим. ред.), разок-другой в неделю — митинги по вечерам с нашим американским тимлидом. Каких высот в карьере вы уже сумели достичь и какие еще горы планируете свернуть? Время от времени посматриваю на хорошие вакансии, в интересующих меня конторах. Очень редко, но всё же бывает, хожу на собеседования. Я уже понял, что найти место с хорошей зарплатой проще, чем место с хорошим проектом. А чтобы и то, и другое — так это нужно очень постараться. А ещё, я всё чаще осознаю, что в эту профессию не по случайному стечению обстоятельств, а заслужил это своим трудом и настойчивостью, хотя некоторая степень удачливости, особенно поначалу, наверняка должна иметь место, и ещё: я очень сомневаюсь, что буду её менять. К февралю моему опыту коммерческой разработки стукнет два года. Если оценивать мой уровень по общепринятым понятиям, мне кажется, это что-то вроде Strong Junior или Regular Middle. Однако эта оценка очень субъективна, разве что я уверен, что пока не Senior. Какие-нибудь напутствия тем, кто ещё в начале (или середине) пути? Всем, кто верит в свои силы, от души желаю достичь своей цели, и, надеюсь, мой пример тому поспособствует. Повторюсь: это не простой путь, что бы вам кто ни говорил, и достигают своей цели наверняка очень немногие, из тех, кто начал. Но способно это сделать гораздо большее количество людей! Просто большинству чего-то в середине пути не хватает: мотивации, желания, настойчивости, веры в себя и свои силы. Многие придумывают изощренные оправдания и цели уже не достигают… Так что верьте в себя, не сдавайтесь на полпути (небольшие передышки конечно не в счёт =)), и всё у вас получится! Как говорили древние греки, «Не боги горшки обжигают». «Программистами не рождаются», помним об этом (девиз JavaRush, прим. ред.)? И напоследок — ещё один совет: проходите СОБЕСЕДОВАНИЯ! Это самая прямая дорога. Как-то я слышал на ИТ-ивенте фразу: «я ни разу не встречал человека, который сходил на 20 собеседований и его никуда не взяли». На скольких собеседованиях уже побывал ты? Я знаю, что ты можешь мне ответить:
  • Я ещё не готов, нужно ещё подучиться…
  • Та, меня что-то никто не зовёт…
Так вот: это всё тоже гнилые отмазки! Я устроился на свою первую работу (на з/п 1100$) после 21 уровня! Правда, у меня на тот момент уже был небольшой опыт по GWT, Hibernate и Spring, почерпнутый из стажировки JavaRush. Но на собеседовании об этом не спрашивали, почти все вопросы, были по Java Core и немного SQL. Так что не бойтесь, ищите вакансии, ходите на собеседования! Зарегистрируйтесь на LinkedIn, на «Джине», сайтах по поиску работы — везде, где только можно! Отслеживайте свежие вакансии, откликайтесь на них! «Стучитесь — и вам откроют», завалите все IT-конторы в своём городе письмами со своим резюме, и долго ждать приглашения на собеседование не придётся. Вариантов масса! Так что кратчайший план действий таков:
  1. Закончил 20-30 уровней JavaRush, плюс подучил немного SQL, JDBC. если ещё и основы Spring и Hibernate есть, то ты вообще в шоколаде.
  2. Накатал резюме по примерам, зарегистрировался на профильных сайтах, выложил его, затем засыпал все IT-конторы спамом со своим резюме. Поверь, без обратной связи ты не останешься, многие просто отпишутся что будут иметь тебя ввиду, а кто-то обязательно пригласят на собеседование.
Каждое собеседование, даже полностью провальное, значительно приближает тебя к цели! Ибо на каждом следующем ты будешь чувствовать себя более подготовленным и уверенным. А вопросов процентов 80% почти везде задают одни и те же.