30% — функция, 70% — реальность
Не статистика, а скорее ощущение от разработки.
На старте задача часто выглядит очень просто: пользователь нажал кнопку, мы отправили запрос, получили ответ и обновили экран. Это золотая тропа — сценарий, в котором всё идёт как задумано.
Но реальная сложность обычно начинается вокруг неё.
Например, загрузка файла. В идеальном сценарии всё элементарно: выбрали файл, начали загрузку, дождались ответа, сохранили результат.
А дальше появляются вопросы. - Что делать, если сеть пропала на 80% загрузки? - Если приложение ушло в фон? - Если система выгрузила процесс? - Если файл уже успел загрузиться, но клиент не получил подтверждение? - Нужно ли начинать заново или продолжать? - Как не создать дубликат?
И вот сама загрузка уже занимает меньшую часть решения. Основная инженерная, а главное творческая работа появляется в восстановлении состояния, повторных попытках, синхронизации и защите от некорректных сценариев.
То же самое почти с любой важной функцией. На схеме она может выглядеть как «один экран и один запрос», а в реальности большую часть работы занимает не сам успешный путь, а всё, что должно произойти, когда система отклоняется от него. Наверное, поэтому я всё меньше оцениваю сложность задачи по тому, как выглядит её основной сценарий.
Золотую тропу написать обычно несложно. Хорошее инженерное решение начинается с того, что происходит после первого шага в сторону от неё.