Android разработчик сколько учиться

Как стать Android-разработчиком с нуля: дорожная карта

Авторизуйтесь

Как стать Android-разработчиком с нуля: дорожная карта

Как стать разработчиком Android-приложений с нуля, с чего начать и куда развиваться — поможет понять дорожная карта:

Java или Kotlin?

Мы уже проводили сравнение Java и Kotlin, в ходе которого пришли к выводу, что оба языка важны. Так, без знания Java будет сложно разобраться в Kotlin, который всё ещё использует JVM. С другой стороны, Kotlin сделал большой шаг вперёд и ориентируется именно на Android-разработку, тогда как Java используется также для бэкенда, десктоп-приложений и Big Data.

Начало работы

Скачайте Android Studio и разберитесь с данной IDE.

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

Что Kotlin, что Java являются полноценными ООП языками, поэтому освойте принципы объектно-ориентированного программирования.

ОТР , Удалённо , По итогам собеседования

Изучите структуры данных и алгоритмы, подкрепите теорию практикой.

Скачайте систему автоматической сборки Gradle, потому как ручная сборка проектов с указанием нужных библиотек и фреймворков — процесс трудоёмкий.

Система контроля версий

Если вы ещё не работали с VCS, самое время начать. Изучите возможности и основные команды Git, выберите для себя один из веб-сервисов для хостинга проектов и попрактикуйтесь на первых репозиториях.

Android Architecture

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

  • MVVM (Model–View–ViewModel);
  • MVI (Model-View-Intent);
  • MVP (Model-View-Presenter).

Подробнее о них можно узнать из статьи.

Создание приложений

А здесь самое интересное.

Activity в Android — это по сути окно приложения. Простые приложения состоят из одного окна, сложные — из двух и более. Жизненный цикл Activity включает в себя шесть коллбэков:

  • onCreate() — создание активити;
  • onStart() — подготовку к отображению на экране;
  • onResume() — отображение на экране;
  • onPause() — приостановку процессов;
  • onStop() — состояние невидимости;
  • onDestroy() — завершение работы.

Далее изучите создание гибких интерфейсов с использованием фрагментов и начните выполнять отладку с помощью Android Studio Debugger.

Для работы с компонентами используйте такие инструменты, как Room, Navigation, WorkManager, LiveData, Data Binding. Из сторонних библиотек будут полезны Glide, Retrofit, GSON и Firebase.

Разберитесь с Intent для взаимодействия между объектами Activity и объектом Context, который предоставляет доступ к ресурсам и другим объектам, в том числе к Activity.

Ну и как стать Android-разработчиком с нуля без практики? Следуйте инструкциям из данного видеоурока и подключитесь к NASA через API, чтобы получить доступ к фотографиям из космоса:

Продвинутая разработка

Продолжайте развиваться, осваивая безопасную разработку. Для тестирования подойдут фреймворки JUnit и Espresso, для управления зависимости — библиотеки Dagger и Koin. Дополнительно почитайте о параллелизме и многопоточности, узнайте, что это и как используется в создании Android-приложений.

Заключение

Так как же стать Android-разработчиком с нуля? Определитесь с языком программирования, научитесь работать с Android Studio, Gradle и веб-сервисом для хостинга проектов. Вам предстоит разобраться в основных паттернах и их отличиях, изучить создание гибких интерфейсов, а также подключаться к другим сервисам через API. Продвинутая разработка предполагает тестирование, управление зависимостями, работу с параллелизмом и многопоточностью.

Читайте также:  Ios или android 4pda

Источник

Как я бросил всё и стал Android-разработчиком

Статья для тех, кто хочет найти новое призвание, но никак не может решиться.

Несколько лет я хотел стать программистом и каждый раз отказывался от этой идеи. Гуманитарию, который уже пошёл по другой дороге, не силен в математике, в 24 года менять направление развития казалось опасным начинанием, лишённым смысла. Ведь кто-то взялся за программирование ещё до школы!

С такими мыслями я просматривал ленту новостей, и моё внимание привлекла статья «Как сотрудник банка с гуманитарным образованием стал разработчиком мобильных игр». К заголовку я бы еще добавил «и спал по 3-5 часов, продолжая работать в банке, а, возвращаясь домой, сидел с ребёнком».

Если раньше моими кумирами были Шерлок Холмс и Тирион Ланистер из «Игры престолов», то теперь я решил равняться на этого супермена с гуманитарным образованием. Шутки шутками, но статья произвела на меня сильное впечатление, и я решил попробовать.

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

Чтобы дать представление о том, что я считаю «крайними мерами», приведу пример одного небольшого лайфхака. Начал я с того, что объединил два дела в одно: спорт и дорогу от метро до дома. Какой смысл ходить пешком, а потом бегать на беговой дорожке? Я перестал заниматься спортом, а вместо этого надевал на работу кроссовки… Ведь многие современные офисные работники уже пересели на велосипеды и самокаты — наверное, в будущем люди будут чаще возвращаться с работы бегом.

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

Под конец второй недели я заболел и заметил, что дома, с температурой, я изучил раза в три больше материала, чем за тот же час в метро.

Как я сфокусировался на месяц

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

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

Мне попадалось сообщение на форуме от студента, который ходил на курсы по программированию, в духе: «программистам приходится много работать, они должны работать ещё и дома… очень тяжелая профессия…» Сейчас я могу сказать, что этому человеку вряд ли нужно идти в разработчикиии. Потому что программист не ДОЛЖЕН, и ему не ТЯЖЕЛО — он ХОЧЕТ и ему ИНТЕРЕСНО. Конечно, я не могу назвать себя программистом, но рискну сказать, что если программист ДОЛЖЕН и ему НЕ ИНТЕРЕСНО, то либо он не в том проекте, либо не в той профессии. Когда я писал свои первые приложения, я как будто играл в игру — постоянно возникают новые задачи, и я должен их решать. Решения могут быть разными, простор для фантазии безграничен. Это поинтереснее Skyrim или GTA.

Читайте также:  Как отключить автозагрузку ватсап андроид

Как я обучался: шкатулка с инструментами

Как человек, который последние 2 года занимался вопросами памяти и запоминания, я знаю о некоторых минусах интенсивного обучения. Мной же написанные статьи (Горячее время в обучении: часть 1, часть 2) почти полностью противоречат тому, что я сделал.

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

Но всё пошло не так гладко, как раньше! Если обычно на повторение 50 карточек у меня уходило минут 5, то теперь на 5 карточек могло уйти минут 10. Первое время я мучился, стараясь запоминать всё чуть ли не дословно, но потом понял, что это бессмысленно. Программисту важно уметь быстро находить решения, а не помнить их буквально. Поэтому я начал делать карточки более объёмными и перестал запоминать их дословно. То есть я знаю, какие записи у меня есть, и быстро могу найти нужное по ключевым словам.

Приведу пример типичной карточки средних размеров:

Есть и другой тип — на понимание принципов. Здесь я отвечаю, не подглядывая в ответ.

Это намного удобнее обычного конспекта, потому что с программой для интервального повторения вроде Anki вы следите, чтобы ничего не потерялось. Если мне попадётся вопрос, который я почти забыл или не уверен в ответе, я просто отправлю его на небольшой интервал (через 3 дня в примере ниже).

На первых порах важно нестись вперёд семимильными шагами, иначе увязнешь и остановишься. Как только появляются трудности, нужно переходить на другой курс.

Например, я начал книгу Android Development и очень легко прошёл 200 страниц, а потом вообще перестал что-либо понимать. Тогда я отложил книгу и взял обычный учебник по программированию на Java, там застрял на 300-й странице. Затем перешёл на онлайн-курс по разработке под Android и проработал все уроки, кроме последнего — с ним я не справился. Когда вернулся к первой книге, прежние проблемы показались мне пустяком. Помимо этого я параллельно читал бумажный учебник по Java перед сном, а во время еды смотрел видеоуроки на телефоне.

Вообще я заметил, что все курсы по программированию построены так. Сперва тебе часами объясняют простейшие вещи:

А затем за несколько минут пытаются дать остальное:

— Хорошо, с = a + b, но зачем вам писать это каждый раз? Если вы перенесёте это в метод, то избавите себя от лишней работы. А вообще, вы могли бы реализовать абстрактный класс или интерфейс и через них уже решать подобные задачи. Попробуйте.
— Что?! Какой ещё абстрактный класс? Зачем использовать функцию? Зачем нужны интерфейсы и абстрактные классы. Похоже, программирование не для меня…

Примерно так это всё происходит.

Я, конечно, преувеличиваю, но совсем немного. Сначала создаётся впечатление, что это невероятно легко, а потом ты чувствуешь себя идиотом. Дело не в вас, а в программе обучения. Просто надо отложить её на время, и приниматься за другие материалы.

Начинайте решать практические задачи как можно раньше

Этот принцип заслуживает заголовка. Если вы решаете реальные проблемы, вам будет интересно. Вы научитесь именно тому, что нужно вам. На четвертый или пятый день, когда я ещё занимался в метро, я начал писать программу, которая считала интервалы для Anki. Меня интересовало, сколько карточек нужно будет повторять в день через полгода, если всего ты решишь выучить 500 штук.

Читайте также:  Mortal kombat mobile системные требования android

Графические интерфейсы я делать не умел, но смог ответить на интересовавший меня вопрос. Это было и интересно, и полезно, и вообще круто! Если вы программируете неделю, вы уже можете решать практические задачи!

Другой пример: позавчера я зашёл на КиноПоиск и обнаружил совсем другой сайт. Но мне нужен старый КиноПоиск. Вы видите тут возможность для обучения? Я увидел ии написал приложение Kinopoisk vote. Потому что проходить уроки и выполнять задания — скучно. Интересно делать проект. Пусть приложение получилось так себе, скачает его человек 20 и денег я с него не получу. Сейчас главное, что я многому научился, пока его писал, а писать его было интересно.

Основной проект, над которым я работал — это галерея с фактами. Я хотел пройти весь путь от начала до конца и написать полноценное приложение. Чтобы не повторяться, я решил пойти от обратного — если обычно пользователям нужно что-то «лайкнуть», то здесь им нужно определить, насколько им тот или иной факт не нравится. И если вдруг у меня заведутся пользователи, то будет забавно посмотреть на ТОП-список фактов, которые ненавидят. Сразу скажу, что я не рассчитывал сделать что-то серьёзное — я хотел просто научиться программировать.

Ресурсы, которыми я пользовался

Новичкам я бы посоветовал что-то очень простое и удобное. Такими мне показались книги серии Head first. Написаны они так, чтобы реализовать все возможные принципы эффективного обучения: постоянное повторение, использование эмоций, объяснение сложных концепций через обыденные примеры, инфографика и тому подобное.

Очень удобно читать комментарии рядом с кодом, а не перелистывать страницу, чтобы прочесть, что делает та или иная строчка.

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

Удобны курсы на Treehouse — тебя ведут за ручку с самого начала, всё подробно объясняют и дают промежуточные задания (я их, кстати, никогда не выполнял). Также можете посмотреть codecademy, codecombat, codebabes.

На мобильном прошел до середины: Изучаем java, Learn java. Ежедневно заходил повторять пройденное в Anki.

Когда приступил к написанию своего приложения, проходил туториалы по тем задачам, которые возникали.

Итоги марафона

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

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

Если бы можно было вернуться на месяц назад, я бы сделал всё точно так же: нет идеального пути, придётся наступать на грабли, допускать ошибки и на них учиться. Поэтому мне было бы интересно пофантазировать над другим вопросом — что если вернуться на два или три месяца назад? А если на год?

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

12 октября 2015, 15:00
Мнение автора может не совпадать с позицией редакции.

Источник

Оцените статью