Задумайтесь, сколько задач каждый день вы решаете с помощью различных приложений, установленных на вашем смартфоне? Общение, финансы, поиск мест и построение маршрутов, покупки, доступ ко всевозможным услугам. Мобильные приложения являются важным инструментом для бизнеса, позволяя компаниям взаимодействовать с клиентами, улучшать сервисы и увеличивать продажи.
Согласно ежегодному отчету Digital 2024, в России, как и в мире, большинство людей предпочитают пользоваться мобильными девайсами для выхода в Интернет. Так, мобильная доля веб-трафика выросла на 10,6% составила 42,30% в 2024 году. Причем лидирующее положение, безусловно, занимает Android — его доля составляет 70,99%. Количество скачиваний мобильных приложений достигло 5,62 миллиарда и продолжает расти, а расходы пользователей на приложения с 2023 по 2024 год составили 340,8 миллионов долларов. И этот огромный рынок крайне нуждается в разработчиках, предоставляя множество возможностей для профессионального роста и развития карьеры.
На заключительном этапе профиля «Разработка мобильных приложений» вашей команде предстоит создать программный продукт с клиент-серверной архитектурой, в котором клиент будет реализован в виде мобильного приложения для платформы Android.
Первый этап олимпиады состоит из предметного и инженерного туров. Оба тура выполняются участниками олимпиады индивидуально.
В рамках предметного тура участникам предстоит решать задачи по информатике и математике.
В рамках инженерного тура участники познакомятся с образовательными материалами по профилю «Разработка мобильных приложений» и будут индивидуально выполнять задания, связанные со следующими инженерными компетенциями:
1. Поиск и анализ информации, работа с документацией.
2. Установка программного обеспечения и работа с git-репозиторием.
3. Анализ исходного кода приложения.
4. Составление запросов к серверам и базам данных.
5. Сериализация структур данных.
Второй этап состоит из индивидуального и командного туров.
Задачи индивидуального тура второго этапа являются продолжением задач инженерного тура первого этапа. Задачи позволяют участникам продемонстрировать свои компетенции, развить их и подготовиться к решению задач заключительного этапа.
Индивидуальный тур будет содержать как общие задачи, так и задачи, присущие конкретной роли в команде, что позволит каждому прокачать компетенции именно своей роли в команде.
Тем, кто уже успел сформировать команду на втором этапе, смогут принять участие в командном туре, в котором будет предложена одна командная задача — создание прототипа программного продукта, состоящего из клиентской части (Android приложения) и серверной части.
На заключительном этапе профиля «Разработка мобильных приложений» командам предстоит создать программный продукт с клиент-серверной архитектурой, в котором клиент – это нативное Android-приложение, реализованное в IDE Android Studio с помощью языка программирования Kotlin или Java и Android SDK.
Конкретное техническое задание будет меняться каждый сезон олимпиады. Назначение продукта выбирается исходя из социальной или бизнес значимости в данный момент времени.
Для успешного выполнения кейса к заключительному этапу участникам команды необходимо освоить несколько прикладных областей разработки и технологий, необходимых для реализации приложения. Например, для реализации клиента необходимо освоить Android SDK и множество вспомогательных библиотек, нужно уметь проектировать интерфейс мобильного приложения в соответствии с каким-либо руководством, например, Material Design. А для реализации серверной стороны продукта понадобится знание одного из web-фреймворков, например, Spring Framework, а также навыки проектирования и администрирования базы данных.
Разработка мобильных приложений — абсолютно конкретное прикладное направление в разработке программного обеспечения, поэтому уже на старте участия в олимпиаде вы должны обладать некоторыми конкретными навыками, а к заключительному этапу каждый участник команды должен приобрести тяжёлый багаж hard skills, необходимых для создания Android-приложения.
Язык программирования: знать любой язык программирования в рамках школьного курса информатики 7–9 на отлично. Желательно владеть языками программирования Java и/или Kotlin.
Инструменты разработки: иметь навыки разработки и отладки в какой-либо среде разработки, желательно в одной из IDE от JetBrains. Иметь навыки работы с git.
Работа с данными: уметь составлять простейшие SQL-запросы к какой-либо реляционной базе данных.
API-разработка: уметь составлять запросы к web-серверу.
Роль «Android-разработчик»
Язык программирования: знание Java и/или Kotlin, как основных языков для разработки приложений под Android.
Android SDK: понимание и умение работать с Android Software Development Kit, включая библиотеки, инструменты и различные API, с помощью которых создаются нативные Android-приложения.
Инструменты разработки: умение использовать Android Studio и Gradle для разработки, сборки и развёртывания приложений.
Архитектура приложений: знание архитектурных паттернов (MVP, MVVM, Clean Architecture) для организации кода и улучшения его читаемости и поддерживаемости.
Работа с данными: опыт работы с SQLite, библиотекой Room или другими базами данных, а также навыки работы с RESTful API и JSON для обмена данными с сервером.
Роль «UI/UX дизайнер»
Инструменты дизайна: умение работать с инструментами для создания дизайна и прототипов, такими как Figma или Sketch.
Платформенные гайды: знание Android Material Design Guidelines, что позволяет создавать интерфейсы, соответствующие стандартам и рекомендациям платформы.
Вёрстка интерфейсов: владение XML или библиотекой JetPack Compose для создания макетов пользовательского интерфейса и определения ресурсов.
Инструменты для создания графики: владение Gimp и Inkscape или другими аналогичными растровыми и векторными редакторами для создания графических элементов и иконок, необходимых для приложений.
Роль «Бэкенд-разработчик»
Языки программирования: владение языками программирования, такими как Java, Kotlin или другими популярными языками, которые используются для написания серверной логики.
Базы данных: знание реляционных баз данных (например, PostgreSQL, MySQL) и нереляционных баз данных (например, MongoDB), а также умение создавать запросы.
API-разработка: опыт разработки и интеграции RESTful, включая создание и документирование эндпоинтов, а также обеспечение безопасности и производительности.
Фреймворки и библиотеки: знание серверных фреймворков и библиотек, таких как Spring Boot для Java, Ktor для Kotlin, которые облегчают разработку серверной части.
Архитектура приложений: понимание принципов архитектуры приложений, включая микросервисную и монолитную архитектуру. Способность проектировать системы с учетом масштабируемости и отказоустойчивости. Опыт работы с контейнеризацией и оркестрацией (Docker, Kubernetes) для развертывания и управления приложениями. Знание архитектурных паттернов, таких как MVC.
Роль «Тимлид»
Должен обзорно знать всё, что описано выше и кроме того:
Управление проектами и Agile: иметь опыт работы с инструментами управления проектами (JIRA, Trello). Знать и применять Agile-методологий (Scrum, Kanban).
Для участия в командном туре второго этапа и заключительном этапе вам понадобится команда, содержащая не менее 2 и не более 3 человек, которые должны будут взять на себя следующие роли.
Android-разработчик. В команде Android-разработчик отвечает за разработку клиентской части программного продукта (Android-приложение), которое будет взаимодействовать с сервером.
UI/UX-дизайнер. В обязанности дизайнера в команде входит проектирование интерфейса, создающего комфортный пользовательский опыт Android-приложения. Роли «Android-разработчик» и «UI/UX-дизайнер» могут совмещаться.
Бэкенд-разработчик. Бэкенд-разработчику в команде предстоит реализовать серверную часть программного продукта, которая будет предоставлять необходимую информацию Android-приложению.
Тимлид. Один из членов команды должен будет взять на себя роль Тимлида. Задача роли – координировать работу команды, а также коммуницировать с организаторами профиля «Разработка мобильных приложений».
В команде не может быть человека ТОЛЬКО с ролью Тимлида, эта роль всегда совмещается с перечисленными выше ролями «Android-разработчик», «UI/UX-дизайнер», «Бэкенд-разработчик».