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

Был ли случай когда остальные не принимали твою идею о переходе на новые технологии

1.3 Junior🔥 72 комментариев
#Другое#Опыт и софт-скиллы

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

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

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

Случай с переходом на новые технологии: опыт и уроки

Да, безусловно, в моей практике был показательный случай, когда команда изначально не поддержала предложение о миграции на новую технологию. Это произошло в одном из проектов около 5 лет назад, когда я предложил перейти с классического подхода REST API + ручного парсинга JSON на GraphQL для нашего Android-приложения, работающего с большим объёмом сложных данных.

Контекст и проблема

Проект представлял собой приложение для агрегации финансовых данных с десятками экранов, каждый из которых требовал свой специфичный набор данных от бэкенда. Мы использовали традиционный REST:

  • Множество эндпоинтов под каждый экран.
  • Частые проблемы с over-fetching (получение избыточных данных) и under-fetching (недостаток данных, требующий нескольких запросов).
  • Постоянные изменения в API-контрактах, которые приводили к необходимости обновлять модели данных и парсеры на стороне Android.
  • Рост времени на разработку и тестирование каждой новой фичи.

Я обосновал переход на GraphQL следующими аргументами:

  1. Точный запрос данных: клиент (Android-приложение) сам определяет, какие поля объекта ему нужны.
  2. Единая точка входа: один эндпоинт вместо множества, что упрощает настройку сетевого слоя.
  3. Строгая типизация и автоматическая генерация кода (через Apollo GraphQL или аналоги), что снижает количество ручных ошибок.
  4. Быстрое прототипирование новых фич без изменений на бэкенде (если схема уже поддерживает нужные поля).

Причины отказа команды

Несмотря на техническую обоснованность, команда (включая тимлида, бэкенд-разработчиков и часть Android-коллег) высказала серьёзные сомнения:

  • Незнакомая технология: для большинства разработчиков GraphQL был новым, требовал изучения и изменения привычных workflow.
  • Риск для сроков: миграция оценивалась в 2-3 месяца, что могло сорвать план по выпуску новых фич.
  • Сопротивление бэкенда: коллеги с бэкенда опасались сложностей в реализации GraphQL-сервера и возможных проблем с производительностью.
  • Консерватизм: работающее решение, несмотря на недостатки, всех устраивало — «работает — не трогай».

Как удалось добиться принятия решения

Вместо того чтобы настаивать, я предложил поэтапный пилотный проект:

  1. Доказательство концепции: за неделю я создал прототип нового модуля приложения (экран с детализацией финансового отчёта), использующий GraphQL через Apollo Android. Показал команде, как:
    • Генерируются типизированные модели из схемы GraphQL.
    • Упрощается запрос данных (вместо 3 REST-вызовов — один GraphQL-запрос).
    // GraphQL запрос (пример)
    query GetFinancialReport($id: ID!) {
      financialReport(id: $id) {
        id
        totalRevenue
        expenses {
          category
          amount
        }
        # Только нужные поля, без over-fetching
      }
    }
    
  2. Привлечение бэкенда: договорился с одним из бэкенд-разработчиков создать простой GraphQL-сервер для тестового набора данных. Это сняло основные страхи.
  3. Акцент на долгосрочной выгоде: подготовил сравнительную таблицу по времени разработки для REST vs GraphQL на примере прошлых задач. Цифры показывали потенциальную экономию 20-30% времени на сетевой логике в будущем.
  4. Постепенное внедрение: предложил не переписывать всё сразу, а использовать GraphQL для новых модулей, оставив старый код на REST.

Итог и выводы

После демонстрации прототипа и обсуждения с командой мы пришли к компромиссу:

  • GraphQL внедрялся для новых функциональных блоков, а существующие части оставались на REST.
  • Бэкенд команда начала постепенно расширять GraphQL-схему параллельно с поддержкой REST API.

Через год большая часть приложения уже использовала GraphQL, а команда признала преимущества подхода. Ключевые уроки, которые я извлёк:

  • Технические аргументы важны, но недостаточны — нужно учитывать человеческий фактор, опыт команды и бизнес-ограничения.
  • Лучший способ убедить — показать работающий пример, а не теоретические выгоды.
  • Постепенность и пилоты снижают риски и позволяют команде адаптироваться без стресса.
  • Важно говорить на языке выгод для каждого участника: для бизнеса — скорость разработки, для разработчиков — удобство и меньше рутины.

Этот опыт научил меня, что внедрение новых технологий — это не только технический, но и социальный процесс, требующий терпения, дипломатии и готовности идти на компромиссы.

Был ли случай когда остальные не принимали твою идею о переходе на новые технологии | PrepBro