Хочу стать Android Developer. Что, где и как учить
Это статья для тех, кто хочет стать Android-разработчиком, и в целом для всех, кто желает работать программистом. Несмотря на то, что все примеры касаются Android, есть много общих советов, которые будут полезны специалистам разных направлений.
Я уже помог нескольким друзьям начать карьеру разработчика, и периодически мои бывшие коллеги и друзья спрашивают у меня совета. Почти всех волнует вопрос, какие должны быть первые шаги, и страх неудачи. Именно поэтому решил написать статью, чтобы у вас был четкий план действий.
Данная тема очень обширна, и о ней можно говорить много и долго. В материале расскажу кратко о самых главных моментах, которые необходимо знать на старте карьеры разработчика.
О себе
У меня почти 8 лет опыта Android-разработки, сейчас я Senior Android Developer в ThredUp. После университета 11 лет работал CG Generalist Artist. CG это Computer Graphics, а Artist — художник. Достиг отличных результатов в этой сфере, последний проект — работа для мини-сериала «Мотыльки». Примеры вы можете увидеть в Inseparable (original title — Мотыльки) | Making Of | VFX. Дальше эти модели были проданы HBO для сериала Chernobyl. Тот самый вертолет, который падает на середину реактора, сделал я. Как и много моделей и текстур построек, реактора и бэкграунда.
Начальные знания
Минимальные знания, которые вам необходимы:
- английский;
- основной язык программирования. В нашем случае — Java и Kotlin;
- Android SDK, Android-библиотеки;
- Git, SQLite.
Английский
На первых порах вам будет нужен английский на уровне чтения технической документации. Это Elementary — Pre-Intermediate level. Навряд ли на Junior-позиции вы будете участвовать в митингах, хотя и такое бывает. Но читать документацию и делать уроки придется много. И вот тут другая ситуация: без курсов английского или преподавателя, особенно сначала, будет сложно.
Чаще всего английский проверяют простыми вопросами: расскажите о себе, своих достижениях, о последнем проекте. И так далее.
Вот несколько полезных ресурсов: LinguaLeo, Urban Dictionary, чтобы понимать, что такое AFA, IK, LGTM, TIL, TL;DR и прочие абракадабры.
Отличные переводчики, которые показывают и контекст с примерами. Старайтесь больше переводить в них, а не просто в Google Translate: Reverso Context, The dictionary by Merriam-Webster.
Java
Когда я учил Java, то выделил для себя два самых лучших ресурса:
- «Java. Библиотека профессионала, том 1. Основы». Читать все, кроме глав о Swing и апплетах (в моем издании это
7–10). Android-программисту это знать не нужно. Кстати, эту книгу мне посоветовали после собеседования, за что я очень благодарен интервьюеру. - И, конечно же, Java official documentation.
Остальные книги на фотографии тоже обязательны к прочтению. Читать стоит слева направо — в порядке, как они выложены у меня.
Kotlin
У Koltin шикарнейшая официальная документация: Learn Kotlin. Стоит, конечно же, начать с Getting Started и идти дальше по списку. Multiplatform Programming, JavaScript, Native можно пропустить. Также советую Learn Kotlin for Android from Google.
Android
Говорить о ресурсах по Android можно бесконечно, но рекомендую начать с ниже перечисленных. Еще о полезных источниках вы можете узнать в Telegram-каналах, которые будут в пункте Subscriptions. В конечном итоге желательно уметь выполнить тестовое задание, о котором будет дальше.
- Start Android — один из самых первых сайтов по обучению Android, про который я узнал. Он появился еще в 2011 году. Поэтому какая-то информация может быть не совсем актуальна, но все же там подробно и хорошо изложены азы, тем более на русском.
- Сейчас появились разные замечательные Android Academy. У которых, кроме офлайн/онлайн-занятий, есть YouTube-каналы с видео для начинающих. Например: Android Academy Global, Android Academy Minsk.
- Официальная документация от Google. Большую часть времени стоит уделить именно ей:
- Developer Guides — документация по Android framework.
- Android Jetpack — унифицированное решение от Google для часто встречающихся задач. Сейчас это уже стандарт для многих решений.
- Architecture components samples — Architecture components — это часть Android Jetpack. В этом репозитории найдете примеры, как их использовать.
- Android Architecture Blueprints v2 — примеры реализации архитектур от Google.
Рекомендую вначале освоить основы Android. Дальше выбрать, какое тестовое задание вы хотите сделать, и изучать те вещи, которые нужны для этого. Таким образом вы не будете изучать то, что в ближайшее время вам не пригодится.
Дополнительные технические навыки
Git
Git необходим в повседневной работе для синхронизации кода группы разработчиков, которые занимаются одним проектом. Он позволяет просматривать изменения, которые были сделаны, вести параллельную разработку и многое другое.
Рекомендую хороший урок об основах гита Learn Git.
У компании Jetbrains есть отличная встроенная поддержка Git, и чаще всего я использую ее прямо с Android Studio. Jetbrains, на мой взгляд, выпускает самые лучшие среды разработки, и на базе их продукта IntelliJ IDEA основана Android Studio.
SQLite
SQLite — это реляционная база данных. База данных — это набор значений, состоящий из строк и колонок. Слова «реляционная» бояться не нужно :) Оно происходит от relation — связь, означает, что в разных таблицах базы данных есть общее значение. И вы можете на основе нескольких таблиц построить какую-то другую.
Навряд ли вам придется писать сложные SQL-запросы, так что основ должно быть вполне достаточно. Начать изучение SQL можете с этого курса.
Курсы
Многие меня спрашивают про толковые курсы. И очень огорчаются, когда я советую учиться самому. На это есть ряд причин:
- Программист — это специальность, где учиться и развиваться самому — чуть ли на самый важный навык, который будет необходим в течение всей карьеры.
- Многие приводят аргумент: «Вот заплачу, и будет стимул ходить». Но если вы не будете успевать за программой курса, можете выпасть из графика и забросить полностью занятия. К сожалению, это не редкость.
- Высокая стоимость. Как по мне, лучше эти деньги потратить «на жизнь» и несколько месяцев только учиться.
Если все-таки очень хочется на курсы, рекомендую попробовать платные онлайн. Программа будет на 90% такой же, но стоить это будет в разы меньше и вы всегда сможете продолжить в удобное вам время.
Subscriptions
Подпишитесь на почтовые рассылки Android Weekly, Kotlin Weekly, News from Kt. Academy и Telegram-каналы. Сейчас они почти полностью заменили форумы. Тут новости, общение и поиски ментора.
#protips: Чтобы не сойти с ума, используйте Chat Folders в Telegram.
Ментор
Ментор — это не просто человек, который пару раз ответит на ваши вопросы. Это наставник, который будет смотреть за прогрессом и корректировать усилия: что вам лучше сейчас учить и на что обратить внимание. К сожалению, у меня не было ментора, но мне очень помогли ответы на форуме. Есть разные ресурсы, где можно найти наставника, это — форумы, чаты, Android Academy. Возможно, даже среди ваших знакомых есть Android-разработчик, которому будет интересно побыть в роли ментора. В свою очередь, для него это тоже ценный опыт, который потом можно использовать на позиции тимлида. Или просто человек будет рад поделиться с вами знаниями.
Тестовое задание
Рекомендую вам сразу начинать делать типовое тестовое задание. В 98% процентов случаев это будет «отобразить какой-то список, по нажатию на элемент списка открыть его детали».
Начните с этого минимума (MVP) и дальше его улучшайте. Добавьте pagination, сохранение информации в базу данных для работы в фоне. Сохраните состояние при развороте экрана, чтобы заново не грузился список и сохранялась позиция списка. Загрузите картинку с экрана деталей, если, конечно, там есть картинка.
Разместите это тестовое задание на GitHub и включите ссылку в свое резюме.
Более конкретные примеры тестовых заданий, которые я встречал:
- Отображение погоды с поиском по городу. Вы можете использовать этот бесплатный бэкенд.
- Последние топ-новости Reddit с автоматической пагинацией и возможностью сохранить картинку.
Поищите уже готовые реализации, например sunflower от Google. Разместите ссылку репозитория с вашим тестовым заданием в Android-чаты и попросите людей сделать code review.
Резюме
Среди моих знакомых есть отличные специалисты. Но, глядя на их резюме, появляется ощущение, что это школьники, которые только вчера открыли текстовый редактор. Все в разнобой: шрифты, размеры, отступы. Но вы ведь не приходите на собеседование в рубашке, у которой один рукав закатан, а другой нет, на левой ноге кроссовок, а на правой — лыжный ботинок. Так почему же позволяете себе делать такие резюме?! Резюме — это самое первое впечатление о вас, как ваш внешний вид!
Тут вы найдете шаблоны резюме, можете выбрать любой понравившийся. Дальше рекомендую почитать креш-тесты. Также не забывайте читать комментарии — там часто дают дельные замечания. Плюс можно загуглить выпуски подкастов на эту тему.
Раньше уже писал, как быстро сделать красивое резюме и залить его на GitHub. Посмотрите мой пост в LinkedIn об этом.
Отклик на вакансии
Не стоит бояться, если вы чего-то не знаете из списка требований вакансии. Все равно советую откликаться на них. Конечно же, пробелы не должны быть по ключевым навыкам, но в остальных они допускаются. Вы сможете быстро подучить их в ходе работы.
Собеседование
Попросите кого-то вас прособеседовать. Например, вашего ментора, знакомых или кого-то из чата в Telegram-каналах. Также есть разные сервисы c fake/mock interview. Загуглите вопросы, которые задают на собеседованиях. Но не только технические, а и поведенческие от HR на первом интервью-звонке. И да, это действительно интервью-звонок :)
После собеседования важно попросить развернутый фидбэк. Зачастую HR просто говорят что-то вроде: «Мы вам перезвоним», «Извините, вы нам не подходите» или «Мы выбрали более сильного кандидата». Если попросите более развернутый фидбэк, будьте готовы, что он тоже может быть чисто формальным, чтобы вас не обидеть. Обратная связь может быть и вполне конструктивной и крайне ценной для вас, так как укажет на слабые места, которые нужно улучшить.
После собеседования сделайте работу над ошибками: вспомните вопросы, на которые вы не ответили или ответили плохо. Запишите их, пока помните. И конечно же, выучите. Эти знания пригодятся в дальнейшем. Скорее всего, вы услышите эти вопросы на следующих интервью и сможете уже классно на них ответить.
Что делать, когда не приглашают на собеседования или отказали
Это сложный моральный этап, но тут все довольно просто, нужно только лишь набраться терпения. Выберите себе какой-то промежуток времени, допустим месяц. И в течение него улучшайте технические навыки, свое резюме. А в конце опять ищите свежие вакансии и откликайтесь на них. Повторяйте так до тех пор, пока не найдете работу.
Soft skills
Мой коллега, который проводил собеседования, рассказал историю. На интервью есть ребята, которые отвечают хорошо, но все же что-то не знают. И вот был единственный кандидат, который ответил на 100% вопросов, и рекрутеру с радостью сказали «Нужно брать». А рекрутер подумал и ответил: «Нет, не берем, он какой-то неприветливый и вообще асоциальный».
Поэтому знания знаниями, но быть приятным в общении также очень важно. Ведь люди с вами на работе проводят бо́льшую часть своей жизни. Так что be nice :)
Наверное, вы уже поняли, что для того, чтобы стать Android-разработчиком, требуется немало усилий и терпения. Но тут самое главное — начать, и у вас все получится!