Does iteratively adding features in each agile 'sprint' mean constant refactoring and rewriting achieve robust design patterns?