Как стать Android разработчиком с нуля, по шагам

312
Как стать Android разработчиком с нуля, по шагам
Как стать Android разработчиком с нуля, по шагам

Как стать Android (андроид) разработчиком, этапы становления в профессии.

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

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

Дисклеймер: здесь не будет философских размышлений на темы «Надо ли менять специальность?», «Чем специальность андроид разработчика лучше других?», «Зачем становиться программистом?», «Какой язык программирования выбрать?». Считается что читатель уже ответил себе на эти вопросы, сделал свой выбор и готов посвятить будущие три года (если он полный ноль в программировании, каким когда-то был я) изучению разработки андроид приложений.

База

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

Математика

Часто так бывает когда учишь математику в школе, то из головы не уходит одна мысль «Неужели действительно я буду это использовать на практике, когда стану взрослый?» и на этот вопрос, даже некоторые учителя отвечают «НЕТ!». А правда такова, что именно математика, как таковая не так часто нужна при разработке, но владение ею приучает наш мозг решать задачи особым образом. Те кто только начинают изучать программирование будут постоянно слышать напоминания об «особенностях нашего мозга». Так вот абсолютно всем будет полезным проверить свои школьные знания и подтянуть забытое.

Слепой набор текста

Не существует ни одного современного американского блокбастера о хакерах, в которых бы программисты писали код двумя пальцами глядя на клавиатуру. Здесь нечего добавить, без умения писать вслепую о программировании можно вообще забыть. Есть много ресурсов в интернете для быстрой помощи тем у кого с этим проблемы, но я лично посоветую тот ресурс который советовали, сам пользовался и остался в восторге https://typingstudy.com/

Английский язык

Так случилось, что программирование это сфера, которая просто не терпит стабильности и поэтому вынуждена стремительно меняться. А самое страшное то, что с каждым годом изменений становится все больше и обновления просто невозможно успевать переводить на другие языки. Переведенная техническая документация или книга о новинках в каком-либо конкретном языке программирования, уже через месяц может начать терять свою актуальность. Такой порядок вещей привел к условному согласию, что почти все в ИТ сфере пишется на английском языке. Это печально, но надо посмотреть правде в глаза, просто выучить английский язык до нужного уровня, сдать экзамен и все, больше никогда в жизни не будет проблем из-за такой банальной проблемы. Что я имею в виду под достаточным уровнем? Большинство ИТ компаний по всему миру условно согласились приравнять такой уровень к оценке не менее 6.0 по международному экзамену по английскому языку IELTS.

Можно ли не зная английского языка стать крутым программистом? Как ни странно, но, конечно, можно. По неизвестной причине, многим людям просто не заходит изучение нового языка, а страсть к программированию настолько безумная, что люди становятся очень крутыми специалистами в своей сфере, не умея связать и двух простых предложений на английском. Эту проблему легко решают скрам-мастера и проджект-менеджеры ИТ компаний, выполняя роль переводчика.

Но зачем унижаться, когда можно просто взять себя в руки и забыть об этом недостатке навсегда? Для особо хронических случаев у меня есть личная методика, как решить эту проблему, которую я, конечно, не буду рассматривать в этой статье, но, в любом случае, могу предупредить читателей, что почти все ресурсы рассмотренные ниже будут на английском языке. Предложенный путь к специальности андроид разработчика без английского языка на этом этапе завершается и мне больше нечего предложить.

Книга по ИТ

Пожалуй, этот пункт не обязателен здесь, но я все же не могу его обойти, потому что, как мне советовали и я с этим полностью согласен, в жизни каждого программиста должна быть такая первая книга, которая будет первой ступенькой на его нелегком пути и предоставит общее представление того, с чем он будет иметь дело.
Из тех книг что советовали мне, на сегодня я склоняюсь к тому что такой книгой должна быть «Code: The Hidden Language of Computer Hardware and Software» написанная Charles Petzold под издательством Microsoft Press.

Онлайн и оффлайн курс «Основы программирования»

Здесь я ничего конкретного советовать не буду, нет такого святого курса по основам, который бы был лучше других. Курс «Основы программирования» можно найти банальным поиском в интернете. Офлайн курс нужен для живого общения и поиска единомышленников, а онлайн-курс, для того чтобы получить один из важнейших умений — «гуглить».

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

Git

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

Здесь, у меня тоже особых советов нет, я лично просто нагуглил и прошел первый попавшийся онлайн-курс посвященный этой теме на udacity.com.

Компьютер или лэптоп

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

Но! Все последующие ресурсы будут тесно связаны с программированием, которое имеет некоторые требования к «железу» и отсутствие личного мощного помощника на этом этапе превратит обучение в пытку.
Так какие же советы от программистов по выбору компьютера или лэптопа? На самом деле однозначного согласия относительно того, что это должно быть «Windows», «Linux» или «Mac OS», а также это должен быть лэптоп или настольный компьютер, нет. А вот где нет разногласий то это обязательно должен быть HP, Dell или MacBook Pro, должно быть минимум 4 ядра и 8 (или даже лучше 16) ГБ оперативной памяти.

Java

На сегодня уже отходят приложения написанные на языке Java во вчерашний день и пишется все на Kotlin. Но, как бы это парадоксально не звучало, для того чтобы стать андроид разработчиком надо выучить язык Java (хотя сравнивая с человеческими языками слово «выучить» здесь не самое подходящее, но ничего лучшего не придумали для того, чтобы описать одним словом способность программиста читать, писать код и понимать что там происходит). Здесь я, наверное, должен был бы привести убедительные доводы к тому, зачем тратить время на язык, которым, возможно, и не придется никогда пользоваться на практике, но я не буду, слишком много ненужного текста будет, поверьте на слово или погуглите.

Офлайн-курс по Java

На этом этапе важно иметь возможность отправлять кому-то все неудобные вопросы, которые возникают во время выполнения домашних заданий и первых шагов при ознакомлении с IntelliJ IDEA.

Онлайн курс по Java

Курсы по легче:

«Java Tutorial» на сайте https://www.sololearn.com/learning/1068,
Цикл курсов «Java Programming Basics» и «Object Oriented Programming in Java«.

Книга по Java

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

Из тех книг, которые советовали, мне лично зашла «Head First Java«(O’Reilly Publishing, 2022)  написанная Kathy Sierra и Bert Bates.

Head First Java, 3rd Edition
Head First Java, 3rd Edition

Другой такой книгой является «Core Java, Volume I: Fundamentals, 12th Edition» написана Cay S. Horstmann в 2021 году, среди менторов чрезвычайно популярна, но мне лично такая сухая и не практическая информация пока не помогает.

Core Java, Volume I: Fundamentals, 12th Edition
Core Java, Volume I: Fundamentals, 12th Edition

Java-Android

После основ Java логическим продолжением должно быть создание первого тривиального приложения, как ни странно написанного на языке Java. Сделать его надо публичным, добавить в свое портфолио на github.com или gitlab.com, а потом стыдиться глядя на него спустя годы. Но без этого шага никак, как говорил Reid Hoffman «If you’re not embarrassed by the first version of your product, you’ve launched too late». А в помощь для выполнения этой задачи будут полезными следующие ресурсы.

Офлайн-курс по Java-Android

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

Онлайн курс по Java-Android онлайн курс по Java-Android

Для того, чтобы разработка приложений казалась детской забавой на «udacity.com» есть серия курсов посвященных плавному погружению студента в рабочие моменты, пройдя которые, будет уже не так страшно переходить к действительно серьезным вещам.

How to Install Android Studio
Android Basics: User Interface
Android Basics: User Input
Android Basics: Multiscreen Apps
Android Basics: Networking
Developing Android Apps
Firebase in a Weekend: Android

Есть также туториалы для начинающих с более чем понятным объяснением, даже сложных тем на сайте codinginflow.com.

Из онлайн-курсов также очень часто советуют сайт startandroid.ru

Книжка з Java-Android

Head First Android Development, 3rd Edition написана Dawn Griffiths, David Griffiths, 2021

Head First Android Development, 3rd Edition
Head First Android Development, 3rd Edition

Базы данных

Онлайн курсы по базам данных онлайн

Здесь только основы. На практике в андроид разработке обычно используют так называемые «библиотеки» Room и Realm. Но перед тем как начать их изучать лучше ознакомиться с тем как все работает под капотом.

SQL Fundamentals
Android Basics: Data Storage

Kotlin

Онлайн курсы по Kotlin

Kotlin Bootcamp for Programmers
https://developer.alexanderklimov.ru/android/kotlin

Книги по Kotlin

По Kotlin самой полезной считается книга написанная одним из создателей языка, Dmitrii Zhiemierov, называется «Kotlin in Action«. Но информация предоставлена в ней настолько сухо, что я остался не в восторге.

Jemerov Kotlin in Action
Jemerov Kotlin in Action

Мне лично понравилась «Head First Kotlin: A Brain-Friendly Guide» написанная Dawn Griffiths и David Griffiths 2019.

Head First Kotlin
Head First Kotlin

Kotlin-Android

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

Онлайн курсы по Kotlin-Android

Из простеньких курсов могу посоветовать «Developing Android Apps with Kotlin«.
Другие онлайн-курсы я еще не проходил, поэтому советовать пока не буду, но простым поиском в гугле их можно найти множество.

Ментор

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

Первая работа

Последний этап, возможно, самый тяжелый, по крайней мере психологически. Здесь шаги для успеха достаточно очевидны.
Подавать заявки на позицию Trainee Android Developer

Искать вакансию с требованиями которые бы соответствовали имеющимся на этом этапе навыками и опытом бесполезно. Обычно вакансии выглядят следующим образом:

Agilie team is looking for Strong Junior (!!!) / Middle Android Developer to join Dnepr team on a full-time basis.
Main requirements: — 1,5+ years (!!!) of experience in developing high-quality code for Android…

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

Пройти тестовое задание от работодателя

Несмотря на то, что Trainee Android Developer никому не нужны, а вакансии нет даже для сеньора, компании обычно охотно присылают в ответ тестовое задание. Эти тестовые задания и являются первым настоящим испытанием студента, которое помогает понимать пробелы в знаниях, и направление, в котором надо продолжать развиваться. Несмотря ни на что, однажды тестовое задание удастся выполнить и приглашение на работу будет получено.

Работать в качестве Trainee Android Developer пока не станешь Junior Android Developer

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

Работать в качестве Junior Android Developer пока не станешь Android Developer

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

Теперь Вы можете смело назвать себя Android Developer.

Возможно вам будет интересно:

Оптимизируем Java-приложения с помощью GraalVM