Как стать android программистом? Интервью с android программистом.

Автор: Петр Арсентьев


Interview

Как стать android программистом? Интервью с android программистом.


В этой статье я приведу мое интервью с android программистом. Повествование будет содержать три блока: вопрос, ответ, мое пояснение. В конце статьи я сделаю краткий итог и выскажу свое мнение.

Это интервью состоялось в 2016 года. На тот момент Алексей (интервьюируемый) уже имел больше года опыта работы на позиции android программиста. Сейчас он работает на Luxoft на позиции серверной разработки (Java EE).

Ответы Алексея выделены курсивом.

1. Сколько тебе лет?

Мне 22 года.

На самом деле возраст не важен. Я про это неоднократно повторял в видео и в статьях. Главное, чтобы кандидат был полезен фирме. Для примера: недавно у меня устроился ученик, которому было 51 год. Другой пример, ученику было 18 лет. Сейчас все успешно работают.

2. Как давно ты занимаешься программированием?

Программированием занимаюсь 10 месяцев, начал где-то перед новым годом 2015 года. Это значит, я сел и начал относится к программированию, как к работе, уделяя в день не менее 10 часов, и по сей день. До этого были попытки программировать на JS, но я быстро погас (через два дня).

Отличный пример достижения цели. Ему нужно было 10 месяцев. Это отлично демонстрирует, чтобы стать программистом нужно всего лишь один год регулярных занятий. Вам не нужно было программировать со школы или как обещают курсы по программированию сделать Вас за две недели программистом. Нужен один год усердных занятий. У меня на курсе ученикам хватает от полугода до года, чтобы освоить необходимый материал и устроиться на работу.

3. Чем занимался до этого?

До программирования я занимался интернет-маркетингом (в основном это настройка контекстной рекламы, поиск клиентов), спустя год работы, я понял что удовольствия я от этого не получаю, и решил уйти.

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

4. Есть у тебя высшее образование, если да то какое? Без указания вуза. Просто специальность.

Я учился в ВУЗе, на инженера электро-механика, но проучившись два года, понял, что этим я не хочу заниматься остаток своей жизни. Не то что бы я имел против этой профессии, просто интереса особого не было. В итоге я бросил универ, и пошел работать … на стройку (Первая работа после универа).

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

5. Почему изначально выбрал android направление?

Изначально я выбрал как раз таки серверную разработку. Но после успешно проваленных тестовых заданий и собеседований, я в панике начал рассылать свое резюме и на android направление, хотя я еще не написал даже простое приложение «Hello World» :) . Смешной был момент, когда мне позвонила девочка HR, и начала проводить собеседование по телефону на тему андроид-разработчика, задавала вопросы, и в конечном итоге я ей говорю, та ничего сложного нету в ЭТОМ ANDROID фреймворке, а она мне — так это ж не фреймворк, а платформа… Было очень не ловко)

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

6. Сколько времени потребовалось от начала изучения до трудоустройства?

Мне потребовалось 4 месяца на обучение, что бы стать junior android developer, но напомню, что в день я сидел за компом от 10 до 15 часов каждый день, иногда даже на улице не выходил несколько дней.

Алексей целеустремленный человек. Он поставил себе цель и шел к ней каждый день. Это очень важный момент в освоении чего-либо. Из своей практики обучения, я могу сказать, что каждый 3 ученик у меня отваливается из курса из-за проблемы с дисциплиной. Если человек хочется заниматься программированием он должен делать это каждый день. Эта деятельность должна стать его хобби. Я советую заниматься, каждый день. Даже когда на это нет время, ученик может найти 15 минут хотя бы почитать книгу. Помните про это. Дисциплина – залог успеха.

7. Какая численность населения города?

Численность города перевалило за 1 000 000 жителей.

Здесь нужно было понять, как сложно зайти на рынок труда. Алексей живет в большом городе, поэтому там много вакансий.

8. Какое количество вакансий?

Количество вакансий на должность андроида 7 за 30 дней, в то время как на java разработку 9 вакансий за 30 дней. Как-то так.

Вакансии есть, но их не так много. Скорее всего, Алексей приводит здесь статистику по Junior позициям. Я советую всегда брать планку чуть выше. Это даст возможность быть более конкурентно-способным. То есть отправляйте свое резюме и на позиции middle разработчиков тоже.

9. Сколько собеседований было?

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

Как мы видим, вначале Алексей получал отказы, но это его не останавливалось. Здесь важно не сломаться, если вам отказали 10 раз, то на 11 будет успех. Главное после каждого собеседования составлять вопросы и заново подготавливаться. Любое собеседование – это лотерея. Любой результат – это опыт. И его нужно использовать.

10. Какие вопросы и тестовые задания давали?

В телефонном режиме спрашивали за sql запросы, а точнее какие виды связей бывают, какие бывают JOIN-ны, как обычн, чем отличается ArrayList от LinkedList. В случае положительного ответа на все вопросы скидывали тестовое, в основном какие-то алгоритмы — нахождение кратчайшего пути в лабиринте, и подобные. Однажды дали тестовое на написание сайта, где был перечислен целый список технологий, среди которых Spring MVC, Hibernate, HSQL, Apache Tiles, Spring Security, JPA Anotation, Bootstrap. Я справился за две недели, хотя мне дали неделю. К сожалению меня туда не взяли, было много правок по моему коду, да и время я профукал. Хотя точно помню, что те две недели были самые продуктивные из 4-х месячного моего обучения)

Как мы видим, список тем очень обширный. Но мы можем выделить те темы, которые спрашивают всегда: SQL, Collection, Multithreading, Spring, Hibernate. По ним нужно готовиться в первую очередь.

11. Какими материалами, курсами и книгами пользовался?

Так как я хотел пойти в серверную разработку, пошел на курсы (реклама), где изучил синтаксис java. Из книжек читал Гилберта Шмидта(java 8, полное руководство), Хаббибулина - самоучитель java.

Здесь очень важно подчеркнуть, то что Алексей сначала учил Java и делал упор на нее, а не сразу стал изучать Android-платформу. Начинающие программисты делают серьезную ошибку, когда сразу начинают изучать особенности платформы Andriod. Вначале сосредоточьтесь на базовые вещи – Java SE.

12. Какие задачи выполняешь сейчас на работе? Примеры.

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

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

13. Почему решил сменить направление и перейти на серверную разработку?

Когда я устроился на андроидчика, я понятия не имел своих повседневных задач, а это как правило верстка разных экранов приложение под разные девайсы, очень часто бывает что на всех девайсах все работает, а на одном каком-то — баг! И ты весь день тратишь на поиски решения. А если просто — хочется больше писать логики, и меньше верстать.

А это главный минус этого направления. Много задач будет связано с версткой. Я лично не большой фанат верстки.

14. Пробовал проходить собеседования на позицию серверного разработчика?

9 из 12 собеседований были на позицию серверного разработчика, но на тот момент порог входа был намного выше, чем порог входа на должность андроид разработчика.

Алексей правильно отметил, что на тот момент была такая ситуация на рынке. На рынке Android и Java EE конкуренция одинаковая и она высокая. От тех и других будут требовать, как знания Java, так и знания платформ JavaEE, Android.

15. Какие отличия от собеседований от андройд?

Андроид собеседование проходит в два этапа, первый это проверка знаний java, а второй уже проверка знаний самой платформы android, а так же проверка опыта разработки, спрашивают как работает Service, что такое многопоточность(так оно в андроиде играет большую роль, все вьюхи рисуются в главном потоке), спрашивают за опыт работы с сервером, то есть парсинг данных, вывод их на экран, какие бывают viewgroup(по простому layouts). Как передаются данные из activity в fragment or service. Что-то в этом роде.

Аналогично, как и на позицию серверного разработчика. Проверяют все знания. Нужно быть готовым ко всему.

16. Как считаешь, почему не получилось устроиться на позиции серверного программиста?

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

Алексей отмечает, что можно сделать лучше. То есть после провалов он получить опыт и знает над чем работать. Отличный пример самоанализа.

17. Какой бы ты дал совет людям, которые еще не выбрали в каком направлении развиваться андроид или серверная разработка.

Судя по моему опыту, если вы еще не определились, нужно попробовать себя и в том и в следующем. Что бы потом не было сомнений, что вы сделали что-то не так. В этом случаи вы будете знать наверняка, что больше вам подойдет, как к примеру я. Сначала я учил фреймворки под серверную разр., но были сомнения что андроид лучше, попробовал, теперь я знаю наверняка что мне надо. А что если бы я не попробовал, сомнения и дальше бы грызли мою душу… этого я уже не знаю. Я только верю в то что я сделал правильный выбор. Но вы можете ускорить мой опыт путем создания тестового приложения в андроиде, и тестового сайта к примеру в серверной разработке. И что вам больше понравится — туда и идите, там вас ждет успех.

В конце давайте я отвечу на этот же вопрос.
У Андройд разработки два больших плюса по сравнению с серверной разработкой. Давайте их отметим.
В большинстве случаев весь проект разрабатывает программист в одиночку.
Это позволяет делать в проект все, что хочется. Использовать новые библиотеки, внедрять шаблоны проектирования, переписывать код.
Этот плюс так же можно отнести и к минусу. Когда программист пишет код в одиночку, он вариться в своей каше. То есть не может получить обратную связь по своему коду, как если бы, если он работал в команде программистов.

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

К минусам можно отнести то, что многие задачи будут касаться вертки и адаптации приложения под различные устройства. Львиная доля времени будет потрачена на адаптацию формочек, которые на одном устройстве отображаются корректно, а на другом криво.
Так же в большинстве приложений будет очень простая логика работы. Здесь не будет Big Data и высоконагруженных алгоритмов.

Подводя итог, я советую вначале сосредоточиться на Java SE, а после этого выбрать направление андроид или серверная разработка.

Даже если вы научитесь писать приложения в андроид студио, то все равно на собеседовании вас будут гонять по коллекциям, многопоточности и SQL. Сосредотачивайтесь на фундаментальных вещах, а после переходите к специфике.