← Назад к вопросам

Каким проектом гордишься?

1.0 Junior🔥 211 комментариев
#Опыт и софт-скиллы

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Проект, которым я горжусь: медиаплатформа для инвалидов по зрению

Одним из наиболее значимых проектов в моей карьере стал Android-клиент для специализированной аудиобиблиотеки и социальной сети для незрячих и слабовидящих людей. Это был не просто коммерческий продукт, а социально-ориентированное приложение, которое реально меняло качество жизни своей целевой аудитории.

Суть проекта и технические вызовы

Задача стояла амбициозная: создать максимально доступное, удобное и функциональное приложение для пользователей, которые в основном взаимодействуют со смартфоном через скринридер (TalkBack на Android, VoiceOver на iOS). Основной функционал включал:

  • Прослушивание огромного каталога аудиокниг (свыше 100 тыс. единиц).
  • Социальные функции: лента, сообщения, комментарии к книгам.
  • Синхронизация позиции прослушивания между мобильным приложением и веб-версией.

Ключевые технические сложности и решения:

  1. Глубокая кастомизация Accessibility (a11y): Стандартного поведения TalkBack было катастрофически мало.

    // Пример: кастомная реализация AccessibilityNodeInfo для сложного кастомного View
    override fun onInitializeAccessibilityNodeInfo(info: AccessibilityNodeInfo) {
        super.onInitializeAccessibilityNodeInfo(info)
        info.contentDescription = customDescriptionForScreenReader
        info.addAction(AccessibilityNodeInfo.AccessibilityAction(
            AccessibilityNodeInfo.ACTION_CLICK,
            resources.getString(R.string.label_play_pause)
        ))
        // Важно было правильно управлять фокусом и очередностью обхода
        info.isScreenReaderFocusable = true
    }
    
  2. Специфическая навигация и жесты: Мы разработали систему жестов, которая не конфликтовала с системными, но позволяла быстро выполнять частые действия (например, регулировка скорости воспроизведения двойным свайпом вверх/вниз).

  3. Фоновая работа и управление аудио:

    *   Реализация `MediaSession` и уведомления с расширенными действиями (`MediaStyle Notification`).
    *   Корректная работа `MediaBrowserService` для интеграции с автомобильными системами и умными часами.
    *   Продвинутое кэширование аудиопотоков для экономии трафика.

  1. Многомодульная архитектура: Проект был разбит на feature-модули (:feature:player, :feature:catalog, :feature:social) и core-модули (:core:network, :core:audio, :core:database), что позволило эффективно работать команде из 6 Android-разработчиков.
    // build.gradle.kts :feature:player
    dependencies {
        implementation(project(":core:audio"))
        implementation(project(":core:ui"))
        // ...
    }
    

Чем я особенно горжусь в этом проекте?

  • Социальный эффект: Мы получали письма от пользователей, для которых приложение стало "окном в мир". Один пользователь написал, что впервые смог самостоятельно, без помощи родных, найти и начать слушать новую книгу.
  • Инновации в доступности: Мы провели десятки usability-тестов с реальными незрячими пользователями. Их фидбэк напрямую влиял на дизайн и логику интерфейса. Мы создали ряд решений, которые позже стали де-факто стандартом в нишевых приложениях для слабовидящих.
  • Техническое качество:
    *   Внедрили полноценный **CI/CD** с автоматическим прогоном accessibility-тестов с помощью **Espresso** и **AccessibilityChecks**.
```kotlin
@RunWith(AndroidJUnit4::class)
class PlayerScreenAccessibilityTest {
    @get:Rule
    val activityScenarioRule = activityScenarioRule<MainActivity>()

    @Test
    fun playerScreen_validateAccessibility() {
        onView(withId(R.id.player_root)).check(matches(isDisplayed()))
        // AccessibilityCheck автоматически проверит множество критериев
        onView(withId(R.id.player_root)).perform(AccessibilityChecks())
    }
}
```
    *   Построили отказоустойчикую **офлайн-работу**: пользователь мог продолжать слушать книгу и просматривать кэшированный каталог без связи.
    *   Добились плавной работы интерфейса (по метрикам **Choreographer** и **Systrace**) даже на слабых устройствах, что критически важно для нашей аудитории, не всегда имеющей возможность покупать топовые модели.

Этот проект стал для меня мощным уроком: технологии — это не цель, а инструмент для решения человеческих проблем. Он научил смотреть на код не только с точки зрения эффективности и красоты архитектуры, но и с точки зрения его конечного воздействия. Опыт глубокой работы с Accessibility API и осознанный пользовательцентричный подход, выверенный до мелочей, — вот что я считаю главным достижением в этой работе.