Всем привет! Меня зовут Миша Вассер. Я руковожу мобильной разработкой в AGIMA, а ещё я наставник и автор на курсе «Android-разработчик» в Яндекс Практикуме. Помню то время, когда я начинал заниматься разработкой, — материалы были в основном на английском, а специализированных курсов было маловато, поэтому приходилось всё искать и практиковаться самостоятельно.
Сегодня постараюсь помочь начинающим мобильным разработчикам и расскажу, как можно прокачивать свои знания и применять их на практике.
Почему это важно
Когда мы получаем знания из разных источников, будь то книги, видео на Youtube, курсы по разработке, Хабр и т.д., мы что-то понимаем и периодически даже запоминаем. Через пару дней информация вылетает из головы, а применить её уже через две недели на проекте будет совсем проблематично.
Тут нам на помощь приходит практика. Когда мы реализуем что-либо с помощью полученных знаний, например элементы UI, работа с сетевой библиотекой или многопоточка. Мы сталкиваемся с вариантами реализации, копаем вглубь, пробуем делать свои надстройки — вырабатываем навык работы с тем или иным инструментом.
Через пару месяцев на реальном проекте, когда нужно подвинуть очередную кнопку на 2 пикселя влево или написать свой редактор фотографий, мы уже можем это реализовать. Благо в мире мобильной разработки у нас огромное количество возможностей для практики. Давайте разберёмся, что можно делать.
Пет-проекты
В разработку мы приходим по разным причинам. Я, например, пришёл, потому что хотел делать свои стартапы, которые Тим Кук когда-нибудь покажет на очередной презентации Apple. У многих из нас есть идеи мобильных приложений, которые мы хотим реализовать и выложить в сторы для миллионов пользователей. Так вот, пет-проекты — отличное поле для практики.
Начните с решения повседневных задач. Каждый день забываете закинуть вещи в стиральную машину? Напишите приложение с красивым UI, которое будет напоминать вам об этом! Каждую пятницу пьёте вино и забываете, какое вам понравилось? Создайте приложение «Винный дневник».
Вы можете использовать как локальные базы данных, так и создавать свои на базе Firebase. Сейчас простейшие базы данных делают в два клика, и вам необязательно знать, как устроен бэкенд и как писать на Python.
Окей, с сервером понятно, а как быть, если я не дизайнер, макеты сами себя не нарисуют? Рекомендую посмотреть в сторону открытых источников. Например, dribbble.com или behance.net — тут вы сможете найти огромное количество макетов, которые могут быть полезны в вашем пет-проекте.
Вроде бы звучит неплохо, с бэкендом разобрались, с дизайном тоже. А что делать, если идей нет, но попрактиковаться хочется? Рекомендую прибегнуть к способу, которым часто пользуются компании при составлении тестового задания для кандидатов, — найдите открытую API и попробуйте на основе данных придумать мобильное приложение!
Например, можно сделать приложение, которое будет выводить всех героев «Звёздных войн». Ещё одна нестареющая классика — приложение, показывающее погоду. В сети доступно большое количество открытых API, поэтому, просто почитав их документацию, вы точно найдёте то, что вам будет интересно.
Главное — не останавливайтесь на одинаковых реализациях, пробуйте разные подходы, архитектуры, библиотеки, реализовывайте сложный UI — это поможет набраться разнообразного опыта.
Известные приложения
Ежедневно мы пользуемся приложениями: заказываем такси, еду, переводим деньги, покупаем на маркетплейсах. Наверняка есть приложения, которые вам нравятся: их дизайн, реализация, плавность.
Хорошей практикой будет попробовать скопировать эти приложения (конечно, не всё целиком, например главный экран или какой-то пользовательский путь). Скорее всего, тут вы больше будете работать с UI, поэтому старайтесь выбрать что-то более сложное — нестандартные view, сложные анимации. Например, можно посмотреть в сторону Яндекс.Go, Uber; на приложения, связанные с медитацией или с изучением языков.
Кстати, можно попробовать реализовать свою версию этих приложений, что-то в них видоизменив или добавив своей логики. Тут плавно перейдем к «контрибьюшну».
Вклад в Open Source
В мире разработки есть тысячи библиотек, реализующих тот или иной функционал. Как правило, исходный код этих самых SDK представлен в Github. Разработка проекта — нескончаемый процесс, всегда есть поле для доработок или фиксов проблем, так же и в библиотеках.
Если зайти в github-репозиторий библиотеки и открыть раздел issues, там будет достаточное количество багов или доработок, которые вы можете сделать, отправить на ревью создателю библиотеки.
Так, во-первых, вы сможете внести вклад в сообщество, во-вторых, попрактиковаться разбираться в чужом коде — важный навык для программиста. Советую начать с менее популярных библиотек. Скорее всего там будет больше недоработок, которые вы сможете найти сами или в issues. Плюс сможете быстрее разобраться в коде и сделать улучшения.
Хакатоны
Это соревнования, в которых участники работают над решением конкретной задачи или проекта в течение ограниченного времени. Список таких мероприятий достаточно легко загуглить. Например, российские хакатоны можно найти на сайтах Хакатоны.рус и Хакатоны.рф, а также следить за хабом на Хабре. Тут можно почерпнуть новые идеи для своих проектов, проявить себя, повеселиться. И конечно, попрактиковаться, а может, даже выиграть главный приз или попасть в компанию мечты!
Тестовые задания
К тестовым я отношусь скептически, как и многие разработчики. Но если речь идёт о начинающем программисте — это может быть даже полезно.
Часто, откликаясь на разные вакансии уровня стажер или junior, вы можете получить тестовое задание. Это тестовое задание – отличный способ попрактиковаться. Задачу уже придумают за вас, дадут разные материалы, возможно даже шаблон кода — то есть проведут всю подготовительную работу.
Если удачно сделали задание — супер, сможете пройти интервью и, возможно, получить оффер в компанию. Если не пройдёте — сможете сохранить себе тестовое задание и развивать его дальше, продолжая свою практику и внедряя новые решения.
Стажировки
Очевидный, но всё же хороший способ практиковаться на боевом проекте — пройти стажировку. Тут появляется чуть больше ответственности, чем в тестовом задании, но и плюшек побольше.
Во-первых, если вы уже попали на стажировку, значит, вероятность дальнейшего трудоустройства в компанию значительно увеличивается. Во-вторых, стажировка — практика не на проекте в вакууме, а на реальном продукте.
Ещё добавляется и работа в команде, погружение в процессы разработки, новые знакомства! Рекомендую следить за стажировками на карьерных сайтах крупных компаний и в телеграм-каналах по мобильной разработке.
Решение алгоритмических задач
Есть такая штука в мире разработки — алгоритмические задачи. Ими часто пренебрегают, а зря. Такие задачи помогут вам структурировать свои мысли во время решения разных проблем и изучить оптимальные способы этих решений. Пожалуй, самые популярные ресурсы — Leetcode и HackerRank.
Портфолио на Github
Последний совет, который хочу дать: выкладывайте все свои пет-проекты и практики в Github (конечно, не проекты под NDA). Это определённо поможет в дальнейшем трудоустройстве. Вы сможете накопить портфолио и показать тому, кто рассматривает вашу кандидатуру, что вы имеете представление о разных технологиях и умеете применять их на практике и не стоите на месте.
Если вы только начинаете свой путь в мире мобильной разработки, уделите немного времени моей статье про ресурсы и материалы, которые помогут вам на старте.