Programming the agile way
Each sprint must result in a workable and potentially deliverable element of the final product. This is quite different from the traditional development lifecycle where the various aspects of project development are only addressed once.
Instead, agile development enables the various aspects of development to be revisited at the end of every iteration. This means that the different elements, including design and requirements, can be reevaluated to ensure that necessary changes are made and integrated. To put it simply, waterfall is linear and descending, while agile is evolutionary, using feedback loops to assist in the development of the product.
The feedback loops of scrum encourage repeated inspection and adaptation both of the processes used to build the product and the product itself. What counts most is individual contribution and interactions, working software, adaptation to change, and customer collaboration. The purpose is to enable a rapid and sustainable rate of delivery. Working features delivered are valued more than a single release at the end of development.
As product development is ongoing and releases are frequent, testing becomes an integrated part of development rather than being pushed off to the end of the cycle. This includes all forms of testing necessary to test a particular module.
Programming itself is only one element of a sprint that contains all other elements, including requirements, design, integration, testing and potentially deployment. This enables coding to take place in a dynamic, rather than isolated, environment. The programmer is not isolated in an ivory tower. But then again, neither is anyone else.
Scrum is a collaborative effort designed around the team, rather than a top down organization based on authority. This enables individuals on scrum teams to learn as they go and become self-managing. The great thing about the new agile task management framework of scrum is that it follows the natural way that people work. It points to the agile managed organizations of the future.