Есть два взгляда на разработку программного обеспечения — взгляд заказчика, который хочет, чтобы разработка была в пределах ожидаемого бюджета и сроков, и взгляд программиста-профессионала, который хочет всё проектировать заранее, чтобы облегчить в дальнейшем свою же работу.