Человеческий фактор в программировании.
Рационализированная реальность.
В действительности нам нужна модель рабочего цикла, которая вбирает в себя преимущества всех способов мышления и действий. В то же время такая модель не должна позволять разработчикам становиться врагами самим себе. Сложность заключается в том, как, не нарушая хода решения текущей задачи, собрать достаточное количество информации, которая пригодится впоследствии.
Недавно мой шеф и я работали над дизайном пользовательского интерфейса к апплету для настольной системы. Мы старались действовать как дисциплинированные разработчики, применяя методичную стратегию проектирования интерфейса. Однако мы неоднократно спотыкались о собственное стремление забежать вперед. Мы постоянно обдумывали отличные идеи, связанные с деталями интерфейса и их особенностями. Это происходило в то время, когда нам нужно было заниматься определением абстрактных сценариев, описывающих потребности пользователей.
Мы твердо решили сохранять организованность и методичность в своей работе, но хотели извлечь наибольшую пользу из того, что нам удавалось само собой. Мы стали использовать «корзины», в которые складывали все замечательные идеи, возникающие в самый неподходящий момент. Корзины, изначально предназначенные для ведения собраний, являются идеальным и простым инструментом для группового решения задач. Корзина — это место (папка, или файл, или блокнот), куда заносятся идеи, не относящиеся к текущему обсуждению, но которые все-таки нужно рассмотреть.
В конце концов, мы придумали новую концепцию цикла разработки, назвав ее моделью «задел-возврат» («fееd-fоrwаrd/wоrк-bаск»). Это улучшенная преемница различных моделей последовательной разработки, включая не только модель «водопад», но и так называемую модель «водоворот», предусматривающую разработку по спирали. Модель «задел-воз-врат» — это как раз одна из тех очень маленьких идей, которые могут существенно изменить порядок работы. В принципе, эта модель может быть интегрирована практически в любую другую модель цикла разработки программного обеспечения.