Dynamic Systems Development Method
I think that most delivery managers would agree that a situation where you have to implement projects with limited time and budget, and a demand for real business value, can be described as figure skating on very thin ice.
In my experience the following principles that have proved to be very helpful in these types of situations:
- Scrum is good but DSMS Atern is better
- Plan & only then act
- Behavior Driven Development
- Deliver ASAP
- Visualization and documentation is better than text
Why do we like DSDM Atern?
To understand the most important principles of Atern DSDM, let's start from one of my favorite diagrams.
- The implementation time and cost are fixed.
- Quality has a priority over the system's full functionality.
To ensure real business value, you should:
- Focus on business needs
- Deliver on time
- Interact efficiently
- Never compromise on quality
This approach, based on our experience, lets the customer understand that everything goes on as expected. And what is more important we didn't have any questions about coordinating the subsequent stages of work, there was no searching for additional budget funds to solve quality problems. This ideal picture of zero debts is marvelous, and Atern DSDM helps achieve such a state in a project.
The following diagram will help you comply with the principle "Plan first & then act".
First we check the entire construction for implementability/need of implementation:
- Redefine business needs
- Estimate the business value that will really be required, involving people from business
- Do everything in accordance with the DSDM techniques
Create a high-level functional model: a working prototype and models.
- Coordinate the functionality and plans
- Create a prototype, test the entire system
- Analyze the prototype, together with business users
Then engage in design and development:
- Coordinate the prototype's functionality and timing
- Create a prototype for everyday use, then analyze the prototype together with business users, collect user feedback, test logs.
Final stage of implementation:
- Coordinate the functionality with end users
- Train users to use the system
- Implement the system
- Analyze the market
The stages allow you to simplify the processing of Change Requests, test and timely deliver a really needed product. All this is done in accordance with the following DSDM methods:
Achieve the main objectives: deliver on time, within budget, with high quality.
This is a method of prioritizing in accordance with the following priorities:
MUST: a requirement MUST satisfy business needs.
SHOULD: SHOULD the requirement be met if the project's success does not depend on it?
COULD: COULD the requirement be left if it does not have impact on the project's business need?
WON'T: WON'T the fulfillment of the requirement be postponed if we have some time left?
Create prototypes, give them to real users, get feedback, and allow to actually test and use the product in advance.
Test continuously, after each iteration; only through testing we can achieve high quality.
My regular readers (if there are any) remember that visualization is always extremely necessary. Visualize everything with diagrams to make the perception of information easier (see my article Documentation in Pictures).
In conclusion, I would like to mention the principle of Behavior Driven Development (BDD).
¬DD is not a silver bullet, it's a branching of TDD, but "test" is replaced by "behavior", which makes your thinking oriented to checking actually required functions. First, you write tests to check against the specifications, then implement the code of the system itself.
Thus, we work in close collaboration with the customer, supporting all stages with a prototype, striving for high quality standards, and fulfill the requirements that are really crucial for business, within time frames and budget.