Ну, это простой вопрос, подумал я, когда меня впервые об этом спросили на тренинге "Certified ScrumMaster". "Разница в том, что.." — начал я было отвечать, и понял, что не так уж и просто описать эту разницу.
Я использовал оба термина "пользовательская история" и "задача" годами в своих тренингах, и мне казалось, что они имеют вполне конкретные отличия. Пользовательские истории составляли беклог продукта, а задачи выявляли во время планирования спринта и записывали в беклог спринта.
Это было неплохо, но не многое объясняло — все равно, что сказать, что соль — это то, что насыпают в солонку, а перец -то, что кладут в мельнику для перца. Конечно же истории идут в беклог продукта, а задачи в беклог спринта. Но в чем же суть различия между ними?
На секунду я остановился, когда мне впервые задали этот вопрос, и осознал, что на самом деле я точно знал в чем эта разница. История это то над чем работают более одного человека, а задача это то, над чем работает только один.
Давайте понаблюдаем…
Пользовательская история обычно это функциональность, которая будет видна конечным пользователям. Для ее реализации обычно понадобится программист, тестировщик, возможно дизайнер интерфейса или аналитик, возможно даже и инженер или другие профессионалы.
Крайне редко одну пользовательскую историю может реализовать один единственный человек (и даже если так случится этот человек будет выступать в разных ролях).
Задача, с другой стороны, обычно звучит как: "напиши код", "сделай дизайн вот этого", "создай тестовые данные для.. ", "автоматизируй то", и так далее. Как правило, это может сделать один человек.
Вы можете возразить, что некоторые из этих задач модно или нужно делать вдвоем, но я думаю, что это несущественное дополнение к моему определению различия. Парное программирование это когда два мозга делят одну пару рук, чтобы сделать один вид работ. Это все еще отличается от множества работ, которые необходимы для реализации одной пользовательской истории.
Итак, более удачное определение состоит в том, что истории подразумевают множественные работы (например, программирование, тестирование, дизайн баз данных и интерфейса, анализ и т.д.), в то время как задачи ограничены одним единственным видом работ.