Dynamic Systems Development Method

Reading about development methods and found this on Wikipedia.

Principles

There are eight principles underpinning DSDM Atern. These principles direct the team in the attitude they must take and the mindset they must adopt in order to deliver consistently.

1. Focus on the business need

The main criteria for acceptance of a “deliverable” is delivering a system that addresses the current business needs. Delivering a perfect system which addresses all possible business needs is less important than focusing on critical functionalities.

  • Understand the true business priorities
  • Establish a sound Business Case
  • Seek continuous business sponsorship and commitment
  • Guarantee the Minimum Usable Subset of features.

2. Deliver on time

  • Timebox the work
  • Focus on business priorities
  • Always hit deadlines

3. Collaborate

User involvement is the main key in running an efficient and effective project, where both users and developers share a workplace (either physical or via tools), so that the decisions can be made collaboratively and quickly.

  • Involve the right stakeholders, at the right time, throughout the project
  • Ensure that the members of the team are empowered to take decisions on behalf of those they represent without waiting for higher-level approval.
  • Actively involve the business representatives
  • Build a one-team culture

4.Never compromise quality

  • Set the level of quality at the outset
  • Ensure that quality does not become a variable
  • Design, document and test appropriately
  • Build in quality by constant review
  • Test early and continuously. See test-driven development for comparison.

5. Build incrementally from firm foundations

  • Strive for early delivery of business benefit where possible
  • Continually confirm the correct solution is being built
  • Formally re-assess priorities and ongoing project viability with each delivered increment

6. Develop iteratively

A focus on frequent delivery of products, with assumption that to deliver something “good enough” earlier is always better than to deliver everything “perfectly” in the end. By delivering product frequently from an early stage of the project, the product can be tested and reviewed where the test record and review document can be taken into account at the next iteration or phase.

  • Do enough design up front to create strong foundations
  • Take an iterative approach to building all products
  • Build customer feedback into each iteration to converge on an effective business solution
  • Accept that most detail emerges later rather than sooner
  • Embrace change – the right solution will not evolve without it
  • Be creative, experiment, learn, evolve

7. Communicate continuously and clearly

Communication and cooperation among all project stakeholders is required to be efficient and effective.

  • Run daily team stand-up sessions
  • Use facilitated workshops
  • Use rich communication techniques such as modelling and prototyping
  • Present iterations of the evolving solution early and often
  • Keep documentation lean and timely
  • Manage stakeholder expectations throughout the project
  • Encourage informal, face to face communication at all levels

8. Demonstrate control

  • Use an appropriate level of formality for tracking and reporting
  • Make plans and progress visible to all
  • Measure progress through focus on delivery of products rather than completed activities
  • Manage proactively
  • Evaluate continuing project viability based on the business objectives

"A website is no longer a website. It’s a business, I’d go as far as saying that 90% of websites are predominantly the main money earner in most businesses."

(Source: gavinelliott.co.uk)