Наверное, каждый разработчик хотя бы раз слышал эту фразу.
— Да там же небольшое изменение.
— Это буквально на пять минут.
— Просто кнопку добавить.
И почти всегда после этих слов начинается история, которая заканчивается совсем не через пять минут.
"Всего лишь кнопку"
Нужно добавить кнопку "Скачать".
Звучит действительно просто. Разработчик открывает проект. Оказывается, дизайн для новой кнопки не готов. Пишет дизайнеру.
Пока ждёт — замечает, что компонент кнопок используется ещё в десяти местах.После обновления дизайна выясняется, что на мобильной версии новая кнопка ломает вёрстку.
Теперь оказывается, что скачивать нечего — API не отдаёт нужный файл. Добавили новый метод.
Потом выясняется, что у некоторых пользователей нет прав на скачивание. Добавили проверку доступа.
После этого QA находит проблему. Если пользователь открывает страницу из закладок, кнопка исчезает.
Затем деплой и уже в продакшене оказывается, что в Safari всё работает иначе.
И конечно же кнопка появилась, но прошёл ДЕНЬ, хотя сама кнопка действительно писалась минут пять.
Код редко занимает большую часть времени
Есть интересное наблюдение.
Они представляют именно написание кода. Хотя на практике код — это зачастую лишь небольшая часть всей работы.
Остальное время уходит на:
понимание задачи;
поиск нужного места в проекте;
анализ существующей логики;
обсуждения;
изменения API;
тестирование;
исправление найденных ошибок;
код-ревью;
деплой;
проверку в продакшене.
Иногда написание самого решения занимает всего 10–20% времени.
Чем старше проект, тем меньше в нём "пятиминутных" задач
На новом проекте действительно можно быстро что-то добавить.
Но когда системе несколько лет...
...любое изменение начинает цеплять другие части.
Добавили одно поле и сломались отчёты.
Исправили отчёты и перестали проходить интеграционные тесты.
Поменялась сериализация и упал мобильный клиент.
Каждый опытный разработчик знает эффект:
маленьких изменений почти не бывает.
Почему разработчики так не любят фразу "на пять минут"
А потому что знают, что оценивается только видимая часть задачи.
Это как попросить строителя:
"Да просто стену передвинь."
Пока не начнёшь двигать — не узнаешь, что она несущая.
Как лучше ставить задачи
Посмотри, пожалуйста, насколько это действительно сложно.
Кажется мелочью, но психологически это совершенно другой разговор.
Разработчик перестаёт оправдываться и начинает искать решение.
Самое интересное
За годы работы я заметил одну закономерность.
Когда руководитель начинает использовать выражение:
почти всегда именно эта задача неожиданно становится самой дорогой в спринте.
И не потому что кто-то плохо работает. А потому что сложность разработки редко находится в самом коде.
Она скрывается вокруг него.
Код пишется быстро. Долго приходится разбираться со всем, что этот код затрагивает.
Если вам интересны темы управления разработкой, предсказуемости спринтов и инженерных процессов — иногда пишу об этом здесь. Ещё больше материалов собираю на sprint-intelligence.ru