Подписчица Ирина (Ира, привет!) подняла интересную тему "Как ставить задачи программисту".
Краткая версия ответа
Описывай задачу, а не ее решение. Не "Как сделать?", а "Что сделать?".
Описывай сценарии работы и критерии тестирования.
Длинная версия ответа
"Описывай задачу, а не ее решение." Вроде звучит просто, а на практике это частая проблема коммуникации между аналитиками и программистами - вместо описания задачи сразу пытаться описать решение.
Критерий хорошей постановки задачи — возможность предложить несколько альтернативных решений.
Например , приходим к программисту с "ТЗ": "Добавь реквизит Статус в заказе". Есть "программисты"-кодеры, которые просто сделают, что попросили, без лишних слов. Опытный программист спросит: "А зачем?" (Или мой любимый вопрос "Чтобы что?") И тут начинается самое интересное, выясняется, что нужно хранить , допустим, историю этих статусов, статус должен проставляться автоматически в зависимости от фазы Луны или настроения директора и так далее.
Тут пример утрированный, но каждый, думаю, встречался с ситуацией, как на картинке - когда из-за разных "картин мира" ставишь программисту задачу, ожидая получить одно, а получаешь другое.