Stand on the shoulders of giants, and don't repeat yourself.

Two of the hallmarks of modern Web development are reuse and agility. We mentioned frameworks and scripting tools earlier; these provide tools that make it straightforward, if not downright easy, to reuse what works – what the best ways to do specific things are, and what's been done on other pages or sites. Reuse makes scaling up a Website practical. By reusing what has worked well before, we can "stand on the shoulders to see farther than we could before," to paraphrase Newton.

To be agile, in the sense of development, means to create value quickly – or to discover failure quickly enough that it can be recovered from, and value created along a different path. This is done through a series of short, iterative development phases, with the customer fully involved in the process. Each phase should implement one or more of the highest-priority tasks or features as identified by the customer. As the customer's understanding of his needs and priorities evolves over the course of the project, these reordered priorities can be acted upon, starting from the next iteration. In this way, the risk of developing something that is not useful or appropriate for the customer is averted, while development during each iteration can proceed with focused development resources.