Lessons in project design from Agile Software development
admin | Saturday, May 15th, 2010 | Comments Off
Agile software development (Agile SD) provides some key lessons for designing projects. Incorporating agility into project processes can transform project value and the quality of the project outputs.
Key lessons learned can be taken from the principles supporting the Manifesto for Agile Development. These are: Continuous delivery cycles; Cooperative, enabled, and self organizing teams (engaged in production); Clear interactive face-to-face communication; Technical excellence & good design; & Simplicity
A Bit of History: Methods have advanced significantly since the traditional Waterfall method, which was originally designed based on the building construction modeling approach, was introduced in the late 1970’s. The key principle of Waterfall methodology was ‘to develop a perfect design as changes are extremely difficult to be incorporated later.’ Incorporated in this approach are many layers of safety nets to ensure the perfect design is created before coding or building starts.
In construction projects, it is easy to understand why this was necessary prior to pouring the cement. In earlier software development projects, there were similar constraints to making design changes in the later phases of development.
In the 1990’s, the Waterfall approach was modified and iterative approaches became popular. This was where each major module went through a cycle of detailed design, build, and user review, significantly reducing the feedback loop. The customers (end-users/sponsors) had three reviews in which they could make changes within reason i.e. no major database changes before a formal change process was required.
Agile SD takes iterative development to a different level. The design, development and testing leverages the business knowledge which forms a part of the team, constant feedback, and automated and written testing prior to code development by the developer. The benefits of this approach include:
- Delivery is broken into small chunks based on an overall design concept
- Complete team: business knowledge and & other expertise is available to the development team during each build cycle
- Testing is built first 1) ensuring the design is understood and 2) allowing immediate feedback.
- The risk of delivery of new components into production has been reduced to the point that continuous stream of incremental changes can be placed into production.
Learning: While many project types will not be able to shorten their delivery cycle to the point where there is continuous delivery into the production stage, some lessons for good project design include:
- Reducing the time between output and feedback, thus making design/delivery as incremental as possible,
- ‘Chunking’ delivery into small, fairly independent testable and versioned components, so that putting them into production incrementally is not a major risk to the overall operation
- Having the necessary knowledge available within the team (daily contact)
- Building quality management into the design, build, and testing processes with the objectives of providing specific, actionable, respectful and timely feedback.
These are all good objectives when designing your project.
through early and continuous delivery
of valuable software.
Welcome changing requirements, even late in
development. Agile processes harness change for
the customer’s competitive advantage.
Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
Business people and developers must work
together daily throughout the project.
Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.
The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.
Continuous attention to technical excellence
and good design enhances agility.
Simplicity–the art of maximizing the amount
of work not done–is essential.
The best architectures, requirements, and designs
emerge from self-organizing teams.
At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.

Quick identification of root causes - critical analysis from which a transformational transition plan is built