Как оценить задачу, которую ты никогда не делал?

«Как оценить задачу, которую ты никогда не делал?» — вопрос из категории Софт-скиллы, который задают на 29% собеседований Flutter Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Когда я сталкиваюсь с новой задачей в Flutter-проекте, моя оценка строится на технической декомпозиции и анализе рисков. Например, для задачи "Реализовать интерактивную кастомную карту с маркерами":

  1. Техническая декомпозиция: Я разбиваю задачу на подзадачи, которые уже могу оценить:

    • Исследование доступных пакетов для карт (google_maps_flutter, mapbox_gl, flutter_map).
    • Интеграция выбранного пакета в проект (настройка ключей, разрешений для iOS/Android).
    • Реализация базового отображения карты и текущего местоположения пользователя.
    • Добавление кастомных маркеров и их интерактивности (тапы, всплывающие окна).
    • Оптимизация производительности при большом количестве маркеров (кластеризация).
    • Написание тестов для критической логики.
  2. Исследование и анализ рисков:

    • Я проверяю документацию и issues на GitHub у выбранного пакета, чтобы понять стабильность и ограничения.
    • Определяю "неизвестные неизвестные" — например, специфичные требования к жестам на карте или работа в оффлайн-режиме. На такие риски я закладываю дополнительный буфер (обычно +30-50% к времени на соответствующий этап).
  3. Формирование оценки: Я оцениваю каждую подзадачу в часах или днях, суммирую и добавляю общий буфер на интеграцию и непредвиденные сложности.

Итоговая оценка для примера с картой могла бы выглядеть так:

  • Исследование и выбор пакета: 1 день.
  • Базовая интеграция и отображение: 2 дня.
  • Кастомные маркеры и интерактивность: 3 дня.
  • Оптимизация и тестирование: 2 дня.
  • Итого (без буфера): 8 дней.
  • Итоговая оценка с буфером (40%): 11-12 дней.

Я всегда озвучиваю команде, из каких этапов состоит оценка и где основные риски, чтобы мы могли принять обоснованное решение.