🗣 «Учиться придется интенсивно и постоянно»

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

Что подвигло вас заняться программированием?

Мобильной разработкой я занимаюсь около полутора лет. Раньше работала ассистентом руководителя в IT-компании. К решению стать разработчиком я пришла в 32 года: захотелось освоить востребованную техническую специальность и сменить работу. Меня очень вдохновила история хорошего знакомого, который примерно в этом же возрасте с нуля начал осваивать Android-разработку, а спустя 4 года получил предложение о работе в лондонском офисе компании Google, где и трудится по сей день.

Я стала самостоятельно изучать язык программирования Java по вечерам после работы и в выходные, писала свои небольшие консольные приложения. Позже я начала осваивать язык Kotlin и мобильную разработку; свой код я выкладывала в открытый репозиторий на GitHub. Мне повезло: в моем окружении много программистов, поэтому было к кому обращаться за советом и помощью. Свои пет-проекты я показывала коллегам, просила проверить код и указать на недочеты. Это очень помогло.

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

Почему вы выбрали именно мобильную разработку?

Это очень интересная и перспективная сфера программирования. Мобильные приложения затрагивают почти все сферы человеческой жизни: с их помощью можно оплачивать товары и услуги, играть, отслеживать прогресс в занятиях спортом, изучать иностранные языки и другие предметы, знакомиться с новыми людьми и т.д. Я, например, активно пользуюсь мобильным приложением Stepik для изучения программирования. Приложения очень упрощают современную жизнь, делают ее более комфортной, и мне очень хотелось принимать участие в разработке таких продуктов.

Что нужно знать человеку, который решил заняться мобильной разработкой?

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

Второе – нужно изучать английский язык. На англоязычных ресурсах очень много информации по Android-разработке. Пример – сайт developer.android.com, где содержится вся актуальная справочная информация.

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

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

Я пользовалась следующими ресурсами:

Java

  • Книга «Изучаем Java» серии Head First. Авторы: К. Сьерра, Б.Бейтс. Я очень люблю все книги этой серии за доступный игровой стиль изложения. В книге «Изучаем Java» доступно изложены понятия об основных свойствах объектно-ориентированного программирования, синтаксисе языка Java, работе с многопоточностью, дженериках, лямбда-выражениях и пр.
  • Видеокурс «Java. От простого к сложному». Автор: Александр Васько. 106 лекций отменного качества в записи.

Kotlin

  • Книга «Kotlin» серии Head First. Авторы: Дэвид Гриффитс и Дон Гриффитс. Отличное пособие для начинающих изучать язык Kotlin. Как и во всех книгах этой серии, материал изложен увлекательно и доходчиво.
  • Сайт kotlinlang.ru содержит много полезной информации о синтаксисе языка Kotlin, функциях и лямбда-выражениях, корутинах (сопрограммах) и т.д.

Android

  • Книга «Программирование для Android» серии Head First. Авторы: Дэвид Гриффитс и Дон Гриффитс. В этой книге объясняются ключевые концепции: основные компоненты Android-приложения, работа с базой данных, проектирование интерфейсов и другие важные вещи. Есть множество заданий для самопроверки, примеры кода на языке Java.
  • Книга «Android для профессионалов. 4-е издание». Авторы: К. Марсикано, Б. Гарднер, Б. Филлипс, К. Стюарт. Это – новейшее издание книги, вышедшее на русском языке в ноябре 2020 года. Я бы рекомендовала ее всем начинающим разработчикам, желающим писать Android-приложения на языке Kotlin.
Авторами книги поэтапно объясняется создание нескольких разных приложений. Среди прочего, рассказывается о модульном тестировании. Очень доступно объясняются концепции различных архитектурных шаблонов. Освещается актуальный стек технологий: Room и LiveData (для работы с базой данных), ViewModel (для сохранения состояния интерфейса при вращении экрана), WorkManager (для планирования фоновой работы) и т.д. Я бы рекомендовала не просто читать книгу, а внимательно переписать все приложения вслед за автором. Подробнее о книге можно прочитать на Хабре.

Алгоритмы

  • Книга «Грокаем алгоритмы». Автор: А. Бхаргава. Мне очень понравился доступный и легкий стиль, в котором написана эта книга. Простым языком объясняются сложные для меня, гуманитария, вещи: О-нотация, хеш-таблицы, поиск в ширину, жадные алгоритмы, динамическое программирование и т.д.
  • Также полезно будет прочесть книгу «Алгоритмы» под авторством С. Дасгупта, Х. Пападимитриу, У. Вазирани. Сейчас я открыла для себя еще один труд, посвященный алгоритмам: «Структуры данных и алгоритмы в Java». Автор – Р. Лафоре. Насколько я знаю, последняя книга рекомендована для подготовки к собеседованию на стажировку в Яндексе.
  • Курс лекций «Алгоритмы. Теория и практика. Методы». Курс бесплатный и доступен по ссылке: https://stepik.org/course/217/syllabus.
  • Продолжение: «Алгоритмы. Теория и практика. Структуры данных». Курс доступен по ссылке: https://stepik.org/course/1547/syllabus.

Авторы этих курсов рекомендуют сначала посмотреть курс про методы и только потом переходить ко второму – про структуры данных.

Шаблоны проектирования

  • Книга «Паттерны проектирования. Юбилейное издание» серии Head First. Авторы: Э. Фримен, Э. Робсон.

Многие программисты решают похожие задачи, и вместо того, чтобы изобретать велосипед, можно использовать готовый шаблон проектирования (singleton, factory и т.д.). Мой знакомый из Google считает, что эту книгу нужно обязательно прочесть каждому разработчику.

Каким было Ваше первое мобильное приложение?
Мое первое опубликованное в Google Play приложение было написано на простом шаблоне-конструкторе AppsGeyser вообще без использования кода и выложено еще до того, как я глубоко погрузилась в изучение мобильной разработки. Это – викторина с вопросами по семи книгам о Гарри Поттере. Мне было интересно разобраться, как зарегистрировать аккаунт разработчика, как работать в консоли и готовить приложение к публикации. Все эти навыки мне потом пригодились. Позже я сделала викторину с теми же вопросами, но уже на языке Kotlin.

Что следует изучать начинающему Android-разработчику?

Несмотря на то, что полтора года назад я начала изучение программирования с языка Java, и на Kotlin перешла через некоторое время, сейчас, в 2021 году, я бы советовала сразу учить Kotlin. В компаниях используются разные стеки технологий, но в целом требования к начинающим разработчикам похожи: важно знать синтаксис языка программирования, коллекции, разбираться в теме многопоточности, уметь работать с запросами в сеть, знать систему контроля версий Git и т.д. Чтобы узнать, какие конкретно технологии необходимо изучать, достаточно зайти на любой сайт по поиску работы, найти актуальные вакансии и посмотреть, что требуют работодатели.

Почему вы советуете начинать изучение программирования сразу с Kotlin, а не с Java?

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

Нужны ли начинающему разработчику знания алгоритмов?

Я считаю, что навыки решения алгоритмов, безусловно, надо развивать и оттачивать каждому разработчику. Чтобы набить руку в решении алгоритмических задач, отлично подходят следующие ресурсы: leetcode.com и www.hackerrank.com. Я стараюсь ежедневно разбирать хотя бы одну задачу, однако на первых порах можно поставить цель: освоить основные актуальные технологии, используемые в мобильной разработке, и найти первую работу, а после – тренировать навыки решения алгоритмов.

Что еще можно посоветовать начинающему Android-разработчику?
Заводить полезные контакты: создать профиль на LinkedIn и подписаться на телеграм-канал @Android Broadcast. Там публикуются интересные новости мобильной разработки и вакансии для Android-разработчиков. Много полезного я почерпнула для себя и на канале «Мобильный разработчик», который ведет Алексей Гладков, руководитель мобильной разработки в компании «Леруа Мерлен».
***

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

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

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

Курс подходит как junior, так и middle-разработчикам.

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

admin
29 января 2017

Изучаем алгоритмы: полезные книги, веб-сайты, онлайн-курсы и видеоматериалы

В этой подборке представлен список книг, веб-сайтов и онлайн-курсов, дающих...