TGViewer
iOS Dev iOS Dev @iosdev · 7.92K subscribers
Post #454 2.27K
Декомпозиция задачи или почему добавить одно поле это приключение НЕ на одну минуту?

Допустим, вы пишете приложение (как неожиданно) и вам поступила задача отобразить номер телефона в профиле пользователя. Менеджер спросит, сколько это займёт, ожидая услышать ответ сразу же. Но вы отвечаете, что нужно подумать, и ваш менеджер пассивно-агрессивно спрашивает, что тут думать — это одно же поле.

«Вошли и вышли, приключение на 20 минут, Морти!»

К сожалению, зачастую это не так. Особенно если данные для этого поля не хранятся локально.

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

Во-вторых, причиной этого может быть непонимание этапов, которые требуется пройти разработчику/команде при реализации.

При постановке вопроса из примера мы должны перечислить следующие пункты:

— Реализовано ли это на сервере? Поверьте, зачастую бывают сложности коммуникации и загруженность у разных команд, парадоксально, разная. От ответа на этот вопрос оценка может взлететь по очевидной причине, ведь если фича не реализована, то пока что в прод выкатить её точно не получится.

— Насколько сложно будет изменить структуру в БД? Нужна ли миграция? Тут поможет опыт прошлых апдейтов.

— Нужна ли локализация этого поля? Заглушки, например. Здесь мы видим то, что как и с вопросом про реализацию на сервере не всё зависит от нас.

— Нужна ли валидация этого номера телефона? Нужны ли нам регулярки, может ли номер содержать буквы, например? Сколько может быть символов? Возможно, вы и не удивитесь, но буквы в номерах возможны как минимум в рекламе.

— Какой шрифт, какой цвет, как оформить вообще? Нужна ли анимация при переводе фокуса ввода?

От задачи к задаче подпункты могут быть разными, но постановка вопроса — половина решения.

В списке выше на самом деле можно выделить сразу два вида декомпозиции:

Вертикальная: сервер, перевод от команды переводчиков, реализация на клиенте.

И горизональная для приложения: подзадача про валидацию, про оформление, про хранение.

Разработчик с опытом может выдать ответ быстро, если он 1 000 раз проводил подобную декомпозицию. Но вот ответ от него может различаться от ответа джуниора, готового лезть на амбразуру сразу же.

Декомпозиция нужна, чтобы:

— Понять последовательность выполнения задач.
— Оценить сроки.
— Упростить процесс тестирования.
— Помочь расставить приоритеты. В спринте, но по-хорошему, изначально в бэклоге.

Два небольших вывода:

1️⃣ Мы работаем на бизнес. Поэтому мы должны понимать, почему менеджер может быть недоволен медленной оценкой.

2️⃣ Хочется верить, что этот пост прочтут не только разработчики, но и проект-менеджеры. Профессионалы улыбнутся и скажут, что так и есть. Но те, кто начинает управлять командами — пожалуйста, прочтите этот пост ещё раз.

Специально для @iOS Dev
  • 👍 31
  • 🐳 16
  • ❤‍🔥 6
  • ❤ 4
More from @iosdev
  1. Oct 1, 2026SwiftUI Charts и динамическое маскирование Одним из применений для диаграмм является разны…
  2. Sep 29, 2026⚡️Сегодня ночью десятки тысяч приложений массово начали крашиться из-за либы для аналитики…
  3. Sep 28, 2026От pbxproj к xcproj: разбор конфигураций проекта 📖 В этой статье можно посмотреть на новы…
  4. Sep 25, 2026Симулятор iPhone Duo: тестирование и оптимизация приложения Как только был анонсирован iPh…
  5. Sep 24, 2026Настоящая причина, почему на презентации не показали, как выглядит звонок с iPhone Duo. 😃…
  6. Sep 23, 2026Работа с тулбарами на iPhone Duo На iPhone Duo элементы управления навигацией, тулбар-экшн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →