A web project is no different than many other IT projects. You have a target, a budget and time constraints, people and users, and commitments. The ideal combination leading every project managed with a waterfall methodology to failure.
By using an Agile Methodology like SCRUM we deliver, every two or three weeks, a valuable application that can be appreciated immediately by users.
Thanks to the Agile approach we encourage a continuous exchange between developers and users, embrace changes, promote sustainable development, while keeping it simple.
Adopting Agile Methodology means, someway, using a Test Driven Development approach. You simply can not meet changing requirements if you can not refactor the written code preventing regression. It means that every chunk of code must be supported by a specific unit test ensuring that nothing, in the upcoming build environment, will crash.
The standard way to develop a Site application does not facilitate the adoption of a Test Driven Development approach. Using JSP and writing directly to the database you can not build any test suite. That is why we wrote AgileSites
Another problem with a standard Site development approach is that you can not version the code, so using a versioning toolkit like Git, branching and merging for each user story managed, is not possible.
The coordination of a complex development group is not possible without the support of a tool like Git and without a workflow ordering activities.
And even the normal operations flow in a small group is in danger if you are not able to rollback a broken change and you do not have a history of all activities performed.
Test Driven Development does not exist, for an Enterprise class project, without a Continuous Integration practice. We merge all the committed copies of the work done in a shared mainline several times a day.
One of the problems with a standard Site development process is that integration and performance tests are postponed to the last phase, when it is usually too late to recover from mistakes. That is why we integrate and perform test many times per day, anticipating problems instead of looking for them.