🗣 «Учиться придется интенсивно и постоянно»
Наш корреспондент побеседовал с Анной Наумовой, разработчиком мобильных приложений для Android. Анна рассказала, легко ли переквалифицироваться из гуманитариев в программисты и освоить новую профессию с нуля за полтора года.
Что подвигло вас заняться программированием?
Мобильной разработкой я занимаюсь около полутора лет. Раньше работала ассистентом руководителя в IT-компании. К решению стать разработчиком я пришла в 32 года: захотелось освоить востребованную техническую специальность и сменить работу. Меня очень вдохновила история хорошего знакомого, который примерно в этом же возрасте с нуля начал осваивать Android-разработку, а спустя 4 года получил предложение о работе в лондонском офисе компании Google, где и трудится по сей день.
Я стала самостоятельно изучать язык программирования Java по вечерам после работы и в выходные, писала свои небольшие консольные приложения. Позже я начала осваивать язык Kotlin и мобильную разработку; свой код я выкладывала в открытый репозиторий на GitHub. Мне повезло: в моем окружении много программистов, поэтому было к кому обращаться за советом и помощью. Свои пет-проекты я показывала коллегам, просила проверить код и указать на недочеты. Это очень помогло.
После полугода регулярных занятий я создала резюме начинающего Android-разработчика, стала ежедневно просматривать актуальные вакансии и откликаться на них, выполняла тестовые задания, ходила на собеседования. К каждому отклику я прикрепляла сопроводительное письмо с кратким рассказом о себе и ссылкой на свой репозиторий с кодом. Еще через два месяца я получила предложение о работе: меня взяли на проект по разработке мобильного приложения, которое информирует клиентов о различных промо-акциях, проводимых компанией.
Почему вы выбрали именно мобильную разработку?
Это очень интересная и перспективная сфера программирования. Мобильные приложения затрагивают почти все сферы человеческой жизни: с их помощью можно оплачивать товары и услуги, играть, отслеживать прогресс в занятиях спортом, изучать иностранные языки и другие предметы, знакомиться с новыми людьми и т.д. Я, например, активно пользуюсь мобильным приложением Stepik для изучения программирования. Приложения очень упрощают современную жизнь, делают ее более комфортной, и мне очень хотелось принимать участие в разработке таких продуктов.
Что нужно знать человеку, который решил заняться мобильной разработкой?
Первое и самое важное, что нужно усвоить – учиться придется интенсивно и постоянно. Обучение не заканчивается ни после получения предложения о работе, ни после прохождения испытательного срока. Программист всегда занимается самообразованием. Конкуренция среди начинающих разработчиков очень высока, а технологии активно развиваются. Нужно следить за трендами. Тот, кто перестает изучать новшества IT-сферы, становится менее востребованным на рынке труда. К примеру, еще несколько лет назад во многих занимающихся мобильной разработкой компаниях писали код только на языке Java, а сейчас, если открыть любой сайт по поиску вакансий, можно увидеть, что хорошее знание языка Kotlin – обязательное требование для Android-разработчика.
Третье – лучше заниматься понемногу, но каждый день, чем делать большие перерывы и потом сидеть за учебниками все выходные, пытаясь наверстать упущенное. Залог успеха в освоении любого навыка – это постоянство. Заниматься нужно упорно и интенсивно, но не стоит перегружать себя, иначе можно просто перегореть и потерять всякий интерес к программированию.
Какими ресурсами для обучения вы пользуетесь?
Я пользовалась следующими ресурсами:
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.
Алгоритмы
- Книга «Грокаем алгоритмы». Автор: А. Бхаргава. Мне очень понравился доступный и легкий стиль, в котором написана эта книга. Простым языком объясняются сложные для меня, гуманитария, вещи: О-нотация, хеш-таблицы, поиск в ширину, жадные алгоритмы, динамическое программирование и т.д.
- Также полезно будет прочесть книгу «Алгоритмы» под авторством С. Дасгупта, Х. Пападимитриу, У. Вазирани. Сейчас я открыла для себя еще один труд, посвященный алгоритмам: «Структуры данных и алгоритмы в Java». Автор – Р. Лафоре. Насколько я знаю, последняя книга рекомендована для подготовки к собеседованию на стажировку в Яндексе.
- Курс лекций «Алгоритмы. Теория и практика. Методы». Курс бесплатный и доступен по ссылке: https://stepik.org/course/217/syllabus.
- Продолжение: «Алгоритмы. Теория и практика. Структуры данных». Курс доступен по ссылке: https://stepik.org/course/1547/syllabus.
Авторы этих курсов рекомендуют сначала посмотреть курс про методы и только потом переходить ко второму – про структуры данных.
Шаблоны проектирования
- Книга «Паттерны проектирования. Юбилейное издание» серии Head First. Авторы: Э. Фримен, Э. Робсон.
Многие программисты решают похожие задачи, и вместо того, чтобы изобретать велосипед, можно использовать готовый шаблон проектирования (singleton, factory и т.д.). Мой знакомый из Google считает, что эту книгу нужно обязательно прочесть каждому разработчику.
Что следует изучать начинающему Android-разработчику?
Несмотря на то, что полтора года назад я начала изучение программирования с языка Java, и на Kotlin перешла через некоторое время, сейчас, в 2021 году, я бы советовала сразу учить Kotlin. В компаниях используются разные стеки технологий, но в целом требования к начинающим разработчикам похожи: важно знать синтаксис языка программирования, коллекции, разбираться в теме многопоточности, уметь работать с запросами в сеть, знать систему контроля версий Git и т.д. Чтобы узнать, какие конкретно технологии необходимо изучать, достаточно зайти на любой сайт по поиску работы, найти актуальные вакансии и посмотреть, что требуют работодатели.
Почему вы советуете начинать изучение программирования сразу с Kotlin, а не с Java?
Я считаю, что выбирая язык программирования нужно ориентироваться на требования рынка труда. Конечно, неплохо сначала хорошо освоить Java, а потом переходить на Kotlin. Но сейчас все больше занимающихся мобильной разработкой компаний ведут свои проекты на Kotlin и от разработчиков требуют хорошего знания этого языка. Если начинающий программист не хочет растягивать поиск первой работы на длительное время, лучше, наверное, сразу начинать с изучения Kotlin.
Нужны ли начинающему разработчику знания алгоритмов?
Я считаю, что навыки решения алгоритмов, безусловно, надо развивать и оттачивать каждому разработчику. Чтобы набить руку в решении алгоритмических задач, отлично подходят следующие ресурсы: leetcode.com и www.hackerrank.com. Я стараюсь ежедневно разбирать хотя бы одну задачу, однако на первых порах можно поставить цель: освоить основные актуальные технологии, используемые в мобильной разработке, и найти первую работу, а после – тренировать навыки решения алгоритмов.
Хочу освоить алгоритмы и структуры данных, но сложно разобраться самостоятельно. Что делать?
Алгоритмы и структуры данных действительно непростая тема для самостоятельного изучения: не у кого спросить и что-то уточнить. Поэтому мы запустили курс «Алгоритмы и структуры данных», на котором в формате еженедельных вебинаров вы:
- изучите сленг, на котором говорят все разработчики независимо от языка программирования: язык алгоритмов и структур данных;
- научитесь применять алгоритмы и структуры данных при разработке программ;
- подготовитесь к техническому собеседованию и продвинутой разработке.
Курс подходит как junior, так и middle-разработчикам.