Никите Ермакову 26 лет, раньше он жил в Старом Осколе Белгородской области и работал резчиком металла на металлургическом комбинате. Программирование начал изучать менее года назад, а сейчас — Junior-разработчик Java в компании EPAM Systems. Это крупнейший производитель заказного ПО в мире.
Первую работу в IT Никита получил в процессе обучения. Но были на пути и сомнения, и проваленное собеседование, и интересные учебные проекты.
— Привет, Никита! Ты уже завершил обучение или еще продолжаешь?
— Привет. Сейчас идет последняя четверть. Из-за нагрузок на работе пришлось временно притормозить обучение, но как только появляется свободное время — наверстываю упущенное: смотрю один-два новых вебинара, выполняю практические задания, чтобы закреплять навыки. Я обязательно закончу учебу, просто немного позже остальных.
— Чем сейчас занимаешься в EPAM?
— Работаю над проектом, который был написан довольно давно, так что многие инструменты, используемые в нем, мы на уроках в GU не затрагивали. Например, Tomcat Vault, Axis2 или Sybase. Естественно, приходится все это изучать уже самостоятельно.
Стоит учитывать, что спрос на джунов сейчас на рынке невелик и масштабных задач сразу никто не даст. А я-то переживал, что придется рвать с места в карьер.
Наверное, мне повезло. Читал несколько историй, где новичкам приходилось в режиме белки в колесе быстренько разбираться с новой информацией и инструментами. Мое начало оказалось более гладким.
— Как ты нашел эту работу? На каком этапе обучения?
— Работу я начал искать примерно в середине третьей четверти, и поначалу с вакансиями было совсем глухо. Я постоянно отслеживал предложения на сайтах типа HeadHunter. Еще попробовал «Мой круг», но там вакансий для начинающих Java-разработчиков не оказалось.
Я прошел весь путь ищущего работу студента: откликался на вакансии, выполнял тестовые задания, дистанционно решал кейсики со Дня карьеры в GeekBrains.
В принципе, открытых вакансий хватало, но из-за отсутствия опыта меня нигде не ждали. Тогда я решился на более агрессивный ход: начал рассылать свое резюме в интересные мне организации, даже если у них на тот момент не было открытых вакансий.
Собственно, в результате этой рассылки я и попал на первое собеседование. И успешно его провалил. 🙂 Надо понимать, что когда в компании нет открытой вакансии, то заинтересовать рекрутеров гораздо сложнее. По сути, меня пригласили «поговорить за жизнь» и посмотреть, что я из себя представляю.
Конкретно о разработке и своих знаниях я в тот раз говорил меньше, чем на любом из последующих собеседований. Да и причины отказа были, как я сейчас понимаю, не критичными. Уже не вспомню, на чем конкретно «засыпался», но, по ощущениям, в компаниях, которые действительно ищут сотрудника, не отказали бы из-за такого пробела в знаниях.
Что было делать дальше? Я посоветовался со знакомым Java-программистом, который работал в EPAM. Он помог мне составить новое резюме на вакансию в компании. Я читал, что подобная практика широко применяется в Google и других крупных западных компаниях: сотрудники могут приглашать на вакансии своих знакомых и друзей. В моем случае это сработало.
— Как выглядит хорошее резюме в EPAM? Чем оно отличалось от предыдущего?
— Я старался сделать резюме лаконичным, без воды. Всю информацию о себе распределил по разделам. Об учебных проектах писал в общих чертах: суть приложения, стек использованных технологий и пару слов о том, какие навыки я получил в итоге. Описал три-четыре самых толковых проекта. Я бы не советовал добавлять все подряд — только самое актуальное и удачное.
Тем же принципом руководствовался в рассказе о своих навыках. Честно указывал только то, в чем хорошо разобрался, и даже не упоминал инструменты, которыми пользовался пару раз.
Тестовое задание и собеседование
Мне ответили и предложили выполнить тестовое задание. Нужно было написать консольную программку типа CRUD.
Как мне показалось, работодателя больше интересовала архитектура программы, нежели ее конкретная реализация. Главным было показать, что умеешь практически подходить к задаче и создавать гибкий код, в котором можно что-то быстро заменить. После курса по фреймворку Spring я уже понимал, как это должно выглядеть. Да и книга «Совершенный код» очень помогла разобраться в таких вещах. В плане инструментов оказалось достаточно простого Java Core.
Предложенное мной решение подошло — пригласили на собеседование.
Это было уже третье приглашение к тому моменту — до этого я получил два от других компаний. После двух успешных собеседований на третье я уже не пошел. Решил, что лучше всего мне будет в EPAM. Уже упомянутый выше товарищ рассказал о возможностях для саморазвития внутри компании. Например, здесь есть специальные обучающие программы, курсы и вебинары для сотрудников, своя библиотека.
Все это позволяет по-новому взглянуть на темы, которые мы разбирали на занятиях в GU, узнать дополнительные нюансы.
Кроме того, устроиться в транснациональную компанию — значит получить перспективу работы за рубежом, что я считаю заманчивым.
Оба собеседования — в EPAM и другую компанию — оказались не слишком сложными. Я понял, что главное — не зажиматься. Если попался вопрос, на который не знаешь ответа (а такой обязательно будет), стоит хотя бы порассуждать вслух. Интервьюер прощупывает твои знания и хочет понять, где они заканчиваются. Ему интересно посмотреть, как ты реагируешь на незнакомую задачу. Покажи, что ты не теряешься, а спокойно перебираешь варианты решения.
Насколько понимаю, в новичках оценивают прежде всего потенциал. Принимать на работу джуниоров обычно накладно на первом этапе, но это окупается, когда сотрудник вырастает в толкового специалиста, «заточенного» под компанию.
Когда готовился к собеседованиям, обогнал программу обучения GeekUniversity: раньше времени разобрался в паттернах проектирования, одолел половину книги о Spring. Помимо занятий и методичек читал и смотрел сторонние источники. Все решает мотивация.
— Переезд из Старого Оскола в Москву был связан с работой?
— Да, я переехал именно ради этого. В Москве намного больше вакансий, чем в моем родном городе и в среднем по стране. Хотя, если честно, я еще рассматривал варианты в Питере, потому что мне больше нравился этот город. В итоге остановился на EPAM и Москве.
Перемены в своей жизни я планировал давно и предыдущая работа была скорее временной. Пока я был на перепутье и размышлял, чем заниматься дальше, нужно было как-то зарабатывать.
Планировал искать варианты трудоустройства после того, как завершу обучение и пройду стажировку в GeekUniversity. Хотел выйти на старт с увесистым багажом знаний. Но личные обстоятельства сложились так, что с металлургического завода я уволился.
Очередной временный вариант подбирать не стал — с банком вопрос об оплате обучения к тому моменту уже решился и у меня была необходимая финансовая «подушка безопасности». Я понял, что стоит попробовать устроиться по специальности, которую изучаю.
Не секрет, что рынок перенасыщен джуниорами и на старте приходится брать его брутфорсом (буквально — «грубой силой»). Это тоже подталкивало к раннему поиску работы.
Переезд
Переезд оказался практически беспроблемным: в пределах одной страны нет особой волокиты с документами. Разве что по ценам на жилье могут быть вопросы, но это до первой зарплаты. 🙂
Сориентироваться в городе мне помогли знакомые. Если не уходить в загул, можно быстро наладить жизнь на новом месте. Ключевые два вопроса — работа и жилье, причем первый ты решаешь до переезда. Остальное не так волнует и прикладывается со временем.
— Почему ты решил идти в разработку и выбрал язык Java?
— Оглядываясь назад, думаю, что предпосылок заняться программированием было две. Первая — с детства с компьютерами дружу. Конечно, сначала это было связано с игрушками, но я и обработкой изображений в Photoshop увлекался, и ролики монтировал в Sony Vegas, и в 3D-моделировании успел получить минимальный опыт — делал игровые карты для Counter-Strike 1.6. Разные бытовые вопросы с «железом» и «софтом» тоже сам старался решать, когда нужно было поднять домашнюю сеть, модернизировать или настроить оборудование, побороть «синий экран смерти», очистить ПК от вирусов и их последствий.
Вторая составляющая моего интереса к программированию — мне нравилось решать логические задачки. И тоже с детства. Помню, когда учился в третьем классе, часто покупал газету, где были японские кроссворды во всю страницу. Получалось их решать в том возрасте. Да и образование у меня высшее техническое — по специальности «металлургия черных металлов». С математикой дружу. Все как бы намекало, что у меня получится заниматься программированием.
Выбор языка
Когда я планировал учиться, посоветовался с товарищем, о котором уже рассказывал. Он предложил для начала попробовать Python либо Java.
Про Java я к тому моменту чаще слышал, так что интуитивно был настроен на этот язык. Позже я познакомился и с другими: С++ и JavaScript. Пробовал на них писать и понял, что с первоначальным выбором не ошибся. Я хоть и люблю производительные приложения и переносимость, работать с Java мне приятнее. Это дружественный человеку язык программирования, что для меня важно.
— Над какими проектами ты работал за время учебы? Расскажи немного о самых интересных.
— Сначала я создал сетевой чат. Программа очень проста по возможностям, но когда впервые создаешь что-то сложнее «Hello, world!» — и тем более что-то полезное на практике, — испытываешь эйфорию!
Дальше я работал над облачным хранилищем. Захотелось добавить имитацию окошек Windows средствами Swing, и получилось интересно. Это привнесло в процесс каплю творчества — а творчество я люблю.
Дальше была разработка мобильной игры на Android. Этот проект затянул меня по-настоящему! Иной раз я приходил с работы и, вместо того чтобы поесть, садился за компьютер — пытался реализовать идеи, которые пришли в голову в течение рабочего дня, а их было немало. Отрывался только на сон или когда приходило время снова идти на работу.
Немного о самой игре. Это классический космический shoot ‘em up: летим вперед и крушим всех на своем пути. Жанр и тематику мы выбрали на первом занятии, в качестве движка использовали LibGDX. По итогам курса достаточно было сдать что-то типа бесконечного уровня с несколькими типами противников, но мне захотелось большего.
Я добавил в игру три локации с разными фонами и наборами противников. Для каждой сделал четыре уровня и отдельного финального босса. Тактика нейтрализации босса всякий раз отличается — одними быстрыми нажатиями кнопки выстрела тут не обойдешься.
Чтобы игра лучше выглядела, я доработал интерфейс, добавил полоски с уровнем здоровья, закрепил рекордные суммы баллов в главном меню. Еще я создал систему сохранений на основе SQLite. Чтобы прикрутить ее к LibGDX, пришлось повозиться не один час. Также реализовал три уровня сложности и режим Survival, в котором каждую минуту возрастает число врагов, наносимый ими урон и скорость полета снарядов.
Ресурсы частично брал из материалов урока, частично собирал и делал сам. Сначала я находил базовые изображения в Google, затем редактировал их в Photoshop — обрезал, склеивал, подгонял по цветовой гамме.
В общей сложности на проект ушло около полутора месяцев. Конечно, хотелось бы загрузить игру в Google Play Market и посмотреть, как она себя покажет, но для этого пришлось бы заменить часть контента: шрифты, многие изображения и всю музыку не пропустят из-за нарушения авторских прав. Пока речь шла об учебном проекте, это было не принципиально, но для массового распространения — сами понимаете.
Я бы выделил этот проект как самый интересный из всего, что я уже сделал за время обучения в GeekUniversity. Здесь было больше всего творческой работы.
Позже я занялся разработкой новостного портала — мы делали его на курсе по фреймворку Spring. Этот курс был, пожалуй, самым сложным. Без знания Spring Boot в большом проекте легко запутаться и что-то неправильно настроить.
Прямо сейчас в GU идет курс командной разработки. Мне очень хотелось бы в нем участвовать, но время не позволяет — нужно углубляться в изучение инструментов, которыми пользуюсь на работе.
Тем не менее я внимательно слежу за проектом одногруппников: мотаю на ус, с какими проблемами они сталкиваются. Наверное, самое интересное пропускаю. 🙂
— Какие впечатления от GeekUniversity?
— Обучение под присмотром наставников очень экономит время. Потому что самостоятельное развитие с нуля подразумевает, что ты не только смотришь и читаешь источники, но сам ищешь и выбираешь их.
Курс, который я прохожу, знакомит с инструментами профессионального Java-разработчика — технологиями, востребованными у работодателей.
Особо хочу отметить обратную связь со стороны преподавателей. Она работает. Если я что-то недопонял, мне помогут с этим разобраться или подскажут, где можно найти ответ на мой вопрос, а заодно углубиться в тему. Даже если курс по предмету уже завершен, преподаватель все равно откликнется и поможет. Это очень радует.
Сложно подобрать команду, в которой абсолютно каждый доходчиво объясняет свой предмет. Я с этим еще в вузе столкнулся. Можно быть профессионалом высокого уровня, но не суметь донести какие-то вещи до каждого ученика с первого раза. Это нормально, и такие ситуации были.
Я не всегда удачно рассчитывал время на подготовку домашних заданий и временами не укладывался в сроки. С другой стороны, в процессе обучения у меня появилась полезная привычка делать все заранее и соблюдать дедлайны. Так что в целом впечатления положительные.
— Какие перспективы видишь для себя в профессии? В каком направлении хочешь развиваться дальше?
— Перспективы вижу не только по нынешней специальности, но и в смежных. Самостоятельно доучиваться придется на протяжении всей карьеры, ведь на каждом проекте свои задачи и стек технологий.
Когда я готовился к собеседованиям, просмотрел 24-часовой курс по Java, который записал Yakov Fain по своей книге. Яков — очень умный человек, в свое время компания Sun Microsystems присвоила ему титул Java Champion. Меня этот курс очень вдохновил — захотелось как можно скорее набрать опыта, стать бывалым разработчиком, возможно, получить какие-то награды.
На сегодняшний день моя программа-минимум — получить должность уровня Senior. А дальше посмотрим. Я думаю, когда занимаешься делом, которое действительно нравится, карьерный рост — это вопрос времени. Сейчас мне нравится писать код. С возрастом вкусы меняются, но в IT столько разных направлений, что в случае чего у меня будет выбор.