Historically, software development centered around large, pre-configured milestones. A team would work on a new project leading up to release, stage an official—and sometimes very public—launch, and then move on to maintenance. This would mean some of the “live” team would be dedicated to working on that project for the foreseeable future, delivering patches, updates, ...