Курс разработки под Android: никаких секретов

Сегодня мы поговорим с одним из преподавателей курса Junior Android Developer Евгением Сорокиным.

Расскажи о себе. Чем увлекался в школе? Какие хобби есть сейчас?

Как ни странно, в школе с информатикой были проблемы. Такого предмета у нас просто не существовало. Однако уже в 8 классе я выбрал для себя вуз, в который хотел бы поступить – НГТУ. Мне нравились технические специальности, которые включали в себя математику, физику. Также я интересовался компьютерами и всем, что с ними связано. Поэтому пошел на «Информатику и вычислительную технику». Когда нам начали преподавать программирование, я вдохновился. Посвящал этому практически все свое свободное время.

На данный момент я разработчик под Android в компании Arello Mobile. Посещаю тренажерный зал, помимо профессиональной читаю художественную литературу, играю на гитаре. Сейчас веду уже второй курс Junior Android Developer.

Евгений, расскажи, как ты начал заниматься программированием и почему выбрал именно мобильную разработку под Android?

Так сложилось исторически:) Мое знакомство с мобильной разработкой началось с хакатонов (хакатон – (англ. hackathon, от hack (см. хакер) и marathon – марафон) – собрание программистов, дизайнеров, менеджеров для работы над решением поставленной задачи из разных областей разработки программных продуктов). В один прекрасный день мы с друзьями, не имея навыков работы ни с Android, ни с какой-либо другой мобильной ОС, узнали о хакатоне от Google в Новосибирске. Захотелось сходить и попробовать. Так как у большинства в нашей команде были девайсы с Android, решили писать именно под него. Поработали, пообщались со специалистами. Приняли участие и в других хакатонах, заняли призовые места. Я увидел для себя  перспективы, поэтому решил развиваться в этом направлении и дальше.

Поделись собственными секретами мобильной разработки. Расскажи о самых интересных проектах.

Секретов у меня нет. На самом деле все просто. Как и в любой другой отрасли, самое главное – неподдельный интерес к тому, что ты делаешь, и желание развиваться. Если в эту формулу добавить еще и наставника – правильного человека, с которым можно посоветоваться, и высокий уровень обучаемости, то в достаточно короткие сроки можно добиться отличных результатов.

На своем примере могу сказать, что одного наставника у меня не было. Я общался со многими людьми, которые имеют опыт в данной отрасли. Это были и преподаватели, и специалисты на хакатонах, и друзья. Когда я устроился на свою первую работу, то получил очень много знаний и опыт. Сам старался посещать различные мероприятия по данной теме.

Теперь про проекты. Приведу в пример пару последних. Начнем с мобильного приложения дистанционного управления системой очистки и вентиляции воздуха. Есть базовая станция, которая управляется с мобильного устройства. Можно задать уровни концентрации углекислого газа, пыли и т.п. Управляется базовая станция как через сервер (используется подключение к интернету), так и напрямую (udp-пакеты по локальной сети). У нее собственный протокол и приходилось заниматься низкоуровневыми вещами.

Еще один проект – приложение для сети ресторанов Великобритании и США. Здесь использовались самые передовые технологии: MVP, Moxy, RxJava, приемы из Clean Architecture. Также интерес вызывает дизайн, который  выходит за рамки популярного и продвигаемого Google направления Material Design. Было очень интересно. В этом приложении можно заказывать еду на вынос, оплачивать позиции в ресторане, делить счет и многое другое.

Насколько актуальна сейчас разработка под Android?

Ни для кого не секрет, что спрос на специалистов значительно превышает предложение. Это только лишний раз подтверждает, что сфера актуальна и популярна. В настоящее время рынок не может удовлетворить все потребности работодателей. Если представить себе S-образную кривую развития системы, то разработка под Android как раз находится на этапе бурного роста. Стоит отметить, что мобильное направление не ограничивается  девайсами, смартфонами, Android’ом или iOS’ом. Отсюда можно без проблем перейти и в другие отрасли. Сейчас, например, активно развивается виртуальная реальность и все, что с этим связано. Молодые люди, которые выбирают для себя эту сферу, определенно не прогадают.

Замечаешь ли ты, что все больше молодых людей пробуют себя в мобильной разработке? Как считаешь, с чем это связано?

Направление молодое, значит и молодых людей в нем больше. Ведь основное отличие молодежи – возможность экспериментировать и выбирать ту сферу, которая активно развивается.

Какие задачи могут выполнять разработчики под Android? Насколько востребованы такие специалисты у работодателей?

Если рассматривать конкретно мобильные приложения, то тут список задач практически ничем не ограничен. Он зависит только от опыта и квалификации разработчика. Если брать именно процесс работы, то тут тоже есть свои тонкости. Когда человек приходит в профессию, он выполняет простейшие задачи под присмотром опытных товарищей. С течением времени таких задач становится больше, они усложняются. Специалист учится взаимодействовать с дизайнерами, менеджерами проектов и т. д. На выходе он способен самостоятельно разрабатывать структуру для нового проекта, делегировать часть работы, оценить качество выполненных этапов и многое другое. Не хочу, чтобы вы думали, что программирование под Android – это приговор, что-то изолированное и очень специфичное. Напротив, кроме всего перечисленного, вы сможете (если вам вдруг надоест мобильная разработка) перейти на Java Enterprise, например.

Какие сейчас требования выдвигаются для вакансий уровня junior?

Отмечу, что  в зависимости от компании требования могут отличаться. Но, прежде всего, junior должен хорошо знать теорию: основы программирования, мобильной разработки, языка Java. Большим плюсом станет опыт ведения собственных проектов, который вы сможете применить на рабочем месте.

Сколько будет зарабатывать начинающий разработчик под Android? Как быстро он сможет вырасти в профессиональном плане и увеличить свой доход? Какой уровень мастерства сейчас у тебя и как долго ты к нему шел?

Опять же цифра может разниться от работодателя к работодателю. В среднем начинающий разработчик в Новосибирске может рассчитывать на 20-30 тысяч рублей. Карьера специалиста может развиваться стремительно. Было бы желание:) Хочу отметить, что курса занятий по мобильной разработке и стабильной работы для развития будет мало. Всегда нужно параллельно заниматься чем-то своим, задавать вопросы, разбирать ситуации, находить решения, проявлять инициативу. Только так вы заработаете опыт, и вас заметят. Не стесняйтесь интересоваться у тимлидов своими успехами, зарплатой. Нужно поддерживать собственный уровень в тонусе. Рекомендую периодически мониторить рынок вакансий и даже посещать собеседования. Причем делать это не обязательно с целью смены места работы, а для проверки собственных возможностей, навыков и умений.

Достаточно  много людей уезжает работать за границу. Если нет проблем с английским, то на любом этапе (junior, middle или senior) вы можете проходить интервью в зарубежных компаниях. Среди моих знакомых есть молодой человек, который совсем недавно закончил университет (или еще заканчивает), и у него все в порядке с английским. Его прособеседовали, пригласили работать в США и даже предложили оформить эмиграцию.

Имея 2,5 года опыта работы, я оцениваю свой уровень как middle+. Первое в своей жизни тестовое задание на должность программиста я делал вместе с друзьями в общежитии. Потом была экстренная подготовка к собеседованию, которое я чудом прошел. Ну а дальше я начал максимально впитывать в себя новые знания и прокачиваться.

В чем специфика разработки под Android?

Специфики очень много, пожалуй, как и в любом другом направлении программирования. В процессе работы, вы постепенно познакомитесь со всеми деталями. Отмечу, что Android – это мультиплатформенная операционная система. Очень много девайсов, которые работают на ней. Их также много, как и вариаций самой ОП. Каждая компания внедряет огромное количество настроек, думая, что делает тем самым систему лучше. Но потом со всем этим приходится бороться разработчикам. Это, наверное, одна из самых главных «болей» Android. Еще одна сложность – фрагментация. Относительно недавно была анонсирована 7 версия данной ОП. К сожалению, не все компании могут своевременно подтягивать версии на своих устройствах до актуальной, так как делают надстройки. Поэтому, работая над приложениями, нужно учитывать все виды девайсов, все действующие версии Android, разрешения экранов и многое другое.

Как ты понял, что готов делиться знаниями и решил преподавать? О твоем курсе очень много хороших отзывов, как ты считаешь, почему людям нравится у тебя учиться?

После переезда в Москву техлида компании, в которой я работаю, образовалась вакансия преподавателя. Он порекомендовал меня, и я в свою очередь решил попробовать. Мне было интересно поделиться собственными знаниями, мнением, опытом. Параллельно на работе возникла задача найти разработчика под Android в штат. Преподавательская деятельность – это отличная возможность подготовки кадров «под себя».

По поводу отзывов о курсе. Я придерживаюсь нескольких принципов в обучении: 

1. Я не выступаю в роли лектора, как в университете. Никогда не разделяю себя с группой на роли «преподаватель – студенты». Если ученики не против, общаюсь с ними на «ты». Позиционирую себя обычным человеком с определенными  знаниями, которые нужно передать остальным.
2. Помогаю студентам в свободное от занятий время, отвечаю на вопросы. Общаюсь с учениками из предыдущего набора, помогаю им.

Опиши занятие. В каком формате оно проходит?

Предыдущий курс проходил в онлайн-формате. У нас был общий чат в Skype куда я скидывал тему предстоящего занятия, список литературы, которую стоит предварительно почитать.

В день занятия через специальную платформу я рассказываю краткую лекцию по теории, показываю презентацию, демонстрирую практические примеры реализации, отвечаю на возникающие  вопросы в процессе рассказа. В конце занятия студенты получают задание, связанное с пройденным материалом. В начале следующего урока мы разбираем особо интересные и сложные моменты. На практических занятиях у каждого обучающегося был собственный проект, над которым он работал. После каждого теоретического занятия  ребята дописывали свои приложения.
Планируем запустить курсы и в режиме офлайн, будем встречаться в аудитории. Формат занятий, соответственно, будет другой.

Насколько нужно быть подготовленным, чтобы начать изучение мобильной разработки под Android и прийти на курс? Откуда можно перейти в мобильную разработку по данному направлению?

Прежде всего, у желающего пройти курс по разработке под Android должно быть достаточно свободного времени. Заниматься программированием придется не только на занятиях, но и дополнительно.
Знания, которые нужны: основы JavaScript, объектно-ориентированного программирования, принципы работы системы контроля версий, технический английский. Именно основы, не углубленные знания.
Идеальный ученик – выпускник технических специальностей, который никогда не занимался разработкой под Android или занимался, но исключительно для себя (то есть у него есть общее представление, но базы нет). Либо человек, которые недавно окончил курсы по Java. В таком случае процесс переориентирования пройдет более гладко и быстро. Также перейти будет удобно с любого высокоуровневого языка программирования: C#, C++ и т. д.

Какие навыки и знания получит выпускник твоего курса? Будет ли работа над собственным проектом в течение занятий?

Он узнает все необходимое, чтобы получить должность разработчика под Android уровня junior: основы Android Framework, базовые знания ООП, навыки командной разработки. Также мы рассмотрим распространенные практики в архитектуре приложений, познакомимся с современными технологиями, которые применяются в данном направлении. Обязательно разберем процесс собеседования. Вы узнаете, что нужно подготовить, на какие вопросы придется отвечать.

Почему ты советуешь учиться на курсах, а не самостоятельно?

Все просто, на курсах вы получите актуальные знания, основанные на реальном опыте. Мы разберем многие подводные камни. Также я смогу консультировать не только во время занятий, но и после них.

Есть ли что сказать новичкам?

Все зависит от вас самих. Очень рекомендую задавать вопросы, проявлять интерес, не бояться разбираться в сложных ситуациях. Только так можно совершить максимально эффективный и качественный старт в профессии.

По поводу трудоустройства. Учитесь на чужих ошибках. В моей жизни был случай, когда в процессе выбора места работы я обратил внимание только на зарплату. Это решение сыграло со мной злую шутку. В компании не было возможности для развития и карьерного роста, серьезно хромала система обучения и обмена опытом. Поэтому, когда вы выбираете работу, тем более, если это первое в вашей жизни место для самореализации, обращайте внимание на перечисленные мною факторы. Смотрите не только на зарплату, но и на количество знаний, которое вы сможете получить. Ведь это вложение в долгосрочную перспективу: рост квалификации, а значит и рост заработка.