Студент факультета Android-разработки Александр Королев рассказывает, как в 19 лет нашел свой путь в IT. Как ушел в академ с первого курса вуза, чтобы учиться программированию в GeekBrains. Сохранил присутствие духа после 7 отказов на собеседованиях, а по итогам восьмого — получил оффер из Mail.Ru Group. Александр делится опытом реальных интервью и своей подборкой IT-ресурсов.
С чего все начиналось
Школа
Я всю жизнь занимался иностранными языками. Учился в гуманитарной школе с углубленным изучением испанского. С детства сфера IT была для меня чем-то загадочным. Есть «понятные» профессии: например, журналист. Ты примерно можешь себе представить, как писать текст. Но как писать код — сложно понять с ходу. Для меня это всегда было страшным и привлекательным. И я решил осознанно столкнуться с этими сложностями. В итоге затянуло, и стал развиваться в этом направлении.
В девятом классе во мне проснулся интерес к техническим наукам, особенно к программированию. Тогда я еще готовился к ГИА по информатике и узнал про алгоритмический язык. Экзамен я сдал хорошо — наверное, это можно назвать моим первым успехом в области IT и программирования. Это было несложно, но приятно. Дальше — больше: стал углубляться в тему, готовиться к ЕГЭ по информатике и поступлению в вуз. На подготовку ушел год: за это время я успел познакомиться с языком Pascal. С ЕГЭ я тоже справился, набрав 75 баллов — неплохо для гуманитарной школы.
Институт
Я поступил на бюджет в МАИ, на технический факультет. Был очень рад и думал, что буду изучать программирование в институте. По факту как таковой разработки оказалось очень мало, да и программа обучения была устаревшей. Мы изучали тот же самый Pascal, который, по сути, был нужен только для поступления — в реальной практике он почти не используется. Да и работу с ним не найти. Помню, что очень сильно расстроился из-за этого.
После первого семестра в вузе я четко осознал: пора браться за дело самому и не рассчитывать на институтскую программу. Поэтому стал заниматься самостоятельно и искать IT-курсы.
Курсы или самостоятельное обучение
Путь самоучки мне выбирать не хотелось. Личный опыт показал: при самостоятельном обучении есть риск пойти неверной дорогой изначально. Именно на старте мы чаще всего делаем ошибки. Здесь важно, чтобы кто-то мог обратить на них внимание, помочь предотвратить их в дальнейшем и указать нужное направление. Если такого человека рядом нет, есть риск закрепить неверные навыки и повторять ошибки снова и снова. Это может сбить с толку, и в итоге ты не понимаешь, что именно отдаляет тебя от намеченной цели.
Потому я решил, что заниматься нужно под руководством учителей, искал курсы и нашел GeekBrains. Меня привлекло описание учебной программы, и я пошел учиться сюда, будучи на первом курсе института. Я выбрал программу разработчика C# и прошел курс по HTML. Понравилась система преподавания, и как вообще работают эти курсы. Параллельно появились анонсы об открытии факультетов веб- и Android-разработки GeekUniversity. В то время в Mail.Ru проходила встреча Geekday–2. Я на нее пришел, впечатлился условиями труда в IT и еще раз понял — хочу работать здесь.
Убедившись, что намерен продолжить обучение в GeekBrains, я начал осваивать курс Android-разработки. Отнесся к этому серьезно: вовремя сдавал домашние задания, читал дополнительные материалы и смотрел видеокурсы. Я очень много занимался: как на курсах GB, так и самостоятельно. Все это меня быстро затянуло. У нас был отличный преподаватель по Java — Александр Фисунов. Его хочется отметить. Он во многом привил нам любовь к программированию. Я стал двигаться дальше, много учиться, развиваться.
Переломный момент
Решающим месяцем в моей карьере стал февраль этого года — произошло два важных события.
Я устроился на свою первую работу почти через полгода после начала обучения.
Все произошло на удивление легко. Я разместил резюме на HeadHunter, и мне ответили из небольшой компании. Моего относительно скромного опыта хватало, чтобы работодатель взял меня Junior Android-разработчиком. Я делал простые Android-приложения и был очень этому рад: найти любую работу практически через полгода с начала обучения — это уже большой успех. Ощущение того, что навыки начинают приносить деньги, стало для меня стимулом двигаться вперед.
Получил дополнительную возможность для повышения квалификации, поступив в «Тинькофф Финтех Школу»
Конкурс был довольно жесткий. Раньше набирали человек по 30–40, а в мой поток — всего 20. Чтобы поступить, надо было сдать сложные экзамены, продемонстрировать хорошее знание Java и сопутствующих Android-разработке языков программирования, а также сделать лабораторную работу. У меня это получилось лишь со второй попытки: пробовал поступить полгода назад, но пролетел. Но я не отчаялся, работал над собой, продолжал учиться в GB, после чего попытался поступить еще раз — получилось.
Сложности
Поскольку я стал очень много учиться и параллельно работать, в институте пришлось взять академ. В дальнейшем я продолжил учиться в вузе, но перевелся на заочное. Институт пришлось отодвинуть на второй план, потому что захотелось заниматься IT.
Путь был тернистым. Сложности возникали довольно стандартные. Было непросто хорошо выучить язык Java — это основной инструмент в Android-разработке. Я потратил очень много времени, чтобы изучить справочники, видеоуроки и документацию. Усиленно работал над собственными проектами. Я планомерно шел по программе GeekBrains: она насыщенная, но занятий как таковых недостаточно — материал нужно всегда повторять самому. Писал один и тот же код по несколько раз, чтобы все хорошо запомнилось.
Например, в Android есть такой компонент для отображения списков — Recycler View. Когда ты пишешь его сам впервые, вообще не понимаешь, что происходит. Но на одиннадцатый раз уже полностью осознаешь, как работает Recycler, и пишешь спокойно, без посторонней помощи. В Андроиде так: очень много вещей, которые не понятны с первого взгляда. Оглядываясь назад, я вспоминаю эмоции, которые испытывал в самом начале — то чувство, когда уверен, что это невозможно выучить. Сейчас все иначе. Я осознаю, что уверенно владею необходимым материалом. Но это осознание приходит только после того, как ты повторишь все несколько раз.
Собеседования и польза от провалов
Мое первое собеседование оказалось на удивление простым, как и сама работа. Требования были несложными, график — гибким, атмосфера — спокойной. На рабочем месте я мог параллельно заниматься, учиться чему-то. Поэтому это собеседование я не считаю. На своем первом месте я проработал чуть более полугода. Компания постепенно разрасталась: когда я пришел, в коллективе было всего 15 человек, когда уходил — около 40.
Но я не привык сидеть на одном месте: хотелось развиваться дальше и устроиться в крупную IT-компанию. Всегда мечтал работать в Mail.Ru. Это место было для меня каким-то вдохновляющим: я живу неподалеку и каждый раз, проходя мимо офиса, заглядывал внутрь, чтобы полюбовался на свою мечту. Но эта перспектива по-прежнему казалась мне слишком далекой.
Развиваясь на своей первой работе, я параллельно искал новые возможности и в скором времени начал ходить по собеседованиям. Хотелось изучить, что еще есть на рынке IT-специалистов, и попробовать выйти на новый карьерный уровень. Все это длилось полгода, и могу сказать, что поиск работы — дело далеко не простое.
У меня было около 7 неудачных собеседований. Поражения даются тяжело, но на интервью я советую ходить постоянно. Это такой момент, когда ты можешь узнать о своих пробелах или недостатках и почерпнуть для себя что-то новое. Ты понимаешь, какие знания выветрились из головы, на что нужно обратить внимание. Здесь важно уметь делать выводы и работать над собой после каждого провала, чтобы не повторять ошибки в будущем. Я извлекал огромную пользу из собеседований — это тоже опыт. С каждой новой неудачей я выявлял, чего мне не хватает, и старался это исправить. Из важных вещей, которые проверяли на собеседованиях, могу выделить следующие:
- Знание языка Kotlin, который вышел не так давно. О владении им спрашивают практически на каждом собеседовании. На нем сейчас разрабатывается большинство проектов, потому что он более быстрый, удобный и красивый, чем Java. Начинать, конечно, стоит все же с Java — это основа Android-разработки. Но в дальнейшем я рекомендую изучать Kotlin. Мой переход на этот язык занял примерно три недели. Я изучал документацию, смотрел видеоуроки. Со знанием Kotlin мне стало намного удобнее писать;
- Аndroid-библиотеки, такие как RxJava или Dagger-2;
- Основные базовые компоненты Java;
- Принципы объектно-ориентированного программирования. В частности, 5 принципов SOLID. В тему ООП важно углубляться, потому что об этом спрашивают везде;
- Архитектурные решения. Советую повторить, как правильно выстраивать архитектуру ПО и какие существуют паттерны проектирования;
- Английский — must have для каждого программиста. На некоторых собеседованиях проверяли уровень владения языком. Например, в компании Yota Devices у меня даже была небольшая часть собеседования на английском. Ведь основной материал, в том числе техническая документация, написан именно на нем.
Когда опускаются руки
Я ходил как в крупные, так и в небольшие компании, но найти работу так и не получалось. К сожалению, вакансий junior-разработчиков в Москве оказалось не так уж много. В основном нужны специалисты с опытом от года, и этот год надо было где-то наработать. Было довольно сложно: где-то я понимал, что мне не хватает навыков, а где-то, наоборот, был уверен в себе и уже рассчитывал на оффер, но работодатель выбирал другого кандидата по каким-то неведомым мне причинам.
Это самое неприятное: когда ты полностью уверен в себе и не понимаешь, почему тебе отказали. Многие даже не пытаются объяснить, почему ты им не подошел. Когда ты прошел собеседование успешно и тебе отказали — начинаешь винить все вокруг. В такие моменты реально опускаются руки. Это тебя демотивирует. Из-за этого состояния у меня бывали дни, когда я занимался разработкой без желания и делал все «на отвали». Иногда и вовсе впадал в отчаяние, думая: «Я делаю то, что никому не нужно… Возможно, я выбрал неправильный путь?»
Тогда очень помогла поддержка близких. Друзья говорили: попробуй еще раз, и у тебя все получится! А я думал: «Ничего страшного, найдется место и получше».
Что пригодилось
Можно сказать, что GB сыграл для меня решающую роль. Все навыки пригодились на собеседованиях и при трудоустройстве. Учебная программа построена на практике и направлена на то, чтобы студент получал максимальную пользу от приобретенных знаний. Это было важно для меня, так как пришел я совсем новичком — знал только Pascal, и то не понимал, где его применять.
В самом начале я понадеялся на GB, рассчитывая, что наставники помогут мне на пути в профессию. И не прогадал: учителя были с нами на связи почти 24 часа в сутки и в любой момент были готовы помочь, ответить на вопросы. Самое крутое — меня погрузили в мир профессиональной разработки, показав, где именно можно использовать новые знания. Чего не скажешь об институте, где ты пишешь уравнение и не знаешь, что с этим делать.
Безусловно, без самостоятельного изучения материала далеко не уедешь — все должно быть в комплексе. Вот список ресурсов, которые показались мне полезными:
- Книги: Г. Шилдт — «Java 8. Полное руководство» и Б. Харди, Б. Филлипс, К. Стюарт, К. Марсикано — «Android-программирование для профессионалов»;
- Видео-курсы: Udacity и официальный YouTube-канал по Андроиду;
- Документация по языку Kotlin: нет лучшего источника знаний, чем отлично написанная документация от разработчиков языка. Переход на Kotlin с Java занимает примерно 2–3 недели при ее ежедневном изучении.
Еще советую подписаться на тематические паблики в соцсетях — например, «ВКонтакте» — и включить уведомления. Так вы сможете оперативно замечать обучающие мероприятия, тренинги и митапы и быть всегда в курсе новостей. Лично я почерпнул много полезного из групп GeekBrains и Mail.Ru Group для образования, а также паблика /dev/null с забавными мемами и новостями.
Встреча с мечтой
И вот я наконец решился попытать удачу в Mail.Ru. К тому моменту как раз открылась позиция младшего Android-разработчика. Через какое-то время со мной связался HR-менеджер и провел небольшое собеседование по телефону. Разговор длился примерно полчаса. Я рассказал о себе и своих навыках, скинул ссылки со своими работами на GitHub.
Спустя день меня позвали на техническое собеседование в офис. Оно заняло примерно два часа. Я общался со своим потенциальным руководителем в присутствии HR-менеджера. Собеседование было в каком-то смысле уникальным. Меня попросили решать задачи. На других интервью тоже просили, но не в таком количестве. Для меня сложность была в том, чтобы написать код ручкой на бумаге. Когда делал это, мне предоставили распечатанные классы. Нужно было решить задачи, связанные с Java-коллекциями. Это очень важная часть: надо знать, как они работают, какую из них и в каком случае лучше выбрать. Просили написать про hashCode() и метод equals().
Проверяли, насколько мои знания соответствуют современным тенденциям. Например, есть ежегодная конференция — Google I/O, которую рекомендуется смотреть или посещать всем Android-разработчикам, чтобы быть в курсе крупных нововведений. Меня спрашивали об архитектурных компонентах, которые Google анонсировал за последнее время. В частности, как организовывать фоновую работу в Android, чтобы не съедался заряд аккумулятора. Для этого мы рассматривали разные решения: что можно использовать вместо стандартного компонента Service для асинхронной работы в Андроиде, что нужно для работы с сетью и так далее. Спрашивали про принципы ООП SOLID, а также про Android Job: JobScheduler, WorkManager и прочие инструменты для организации плановых действий в Андроиде.
Было очень сложно, но довольно интересно. Честно сказать, я даже не думал, что справлюсь. Когда шел на собеседование в Mail.Ru после полосы неудач, то сказал себе, что это будет моя последняя попытка. Провалю — значит буду кардинально менять специальность и пробовать себя в другой области. Но мне повезло: в итоге я получил работу мечты и не сдался в самый ответственный момент. Уже через неделю мне сообщили: «Александр, добро пожаловать в команду Mail.Ru!» Получилось. Работа мечты — done.
Комментарии