Nick McKenna's Blog

Agile, Software, Technology
posts - 45, comments - 20, trackbacks - 45

Agile Software Development Executive Overview

Agile software development allows organisations to deliver higher quality software more quickly and more cheaply and also enables the development teams to respond more rapidly to changing business needs. These goals are achieved via:
  • Focussing on business value rather than technical details
  • Reduced project management overhead
  • Creating small, user-focused, fine-grained features in a backlog
  • Planning and working in short iterations
  • Daily risk management and progress tracking
  • Strong emphasis on team-based responsibility

Focussing On Business Value Rather Than Technical Details
Agile teams are focussed on delivering value to the business and their customers. This aligns the interests of the business and development team. This includes expressing the requirements in terms of features required rather than technical tasks. The list of required features is prioritised by the business.

Agile teams regularly report progress back to the business in the form of demonstrations of complete software.
These practices ensure that the team delivers the right software the first time which reduces costs and the time to market.

Reduced Project Management Overhead
Agile development is practical rather than following a heavy-weight doctrine. There are very few project management tasks, all of which are time-boxed to short time frames. The business appoints a single product owner as a sole arbiter of the features of the product and their importance which facilitates rapid decision making. Project Management activities include planning, daily reviews, iteration reviews and a short retrospective.

Reduced Project Management overhead reduces allows a business to focus resources on production which gives greater value for money and shorter development times.

Creating Small, User-Focused, Fine-Grained Features In A Backlog
Rather than creating large, complex features, Agile teams develop small, incremental features. This simplifies the development process which reduces cost and increases quality. This practice also gives the ability to get software to market more frequently.

Planning And Working In Short Iterations
The business has a greater opportunity to make changes to the direction of work of Agile teams as they work in short iterations (typically two weeks to one month). The business faces less opposition from development teams as the process and opportunities for making changes are well-defined and agreed. This ensures that the development team builds the right software which reduces cost.

Shorter working iterations allow teams to focus exclusively on a small set of features rather than engaging in large scale technical tasks that support features that will never be built. This ensures that the Agile team builds the right software at the right time.

Each iteration is planned based on performance in the previous iteration. This practical step allows a team to inform the business on a regular basis how much work can be accomplished in a given iteration. A complete backlog combined with knowledge of a previous iteration gives the business a strong indication of how much progress can be made in an arbitrary time frame.

Every feature in an iteration follows an agreed definition of “completeness” (e.g. a quality based standard) which significantly improves the quality and consistency of work.

Daily Risk Management And Progress Tracking

The work of Agile teams is highly visible to the business at large. Agile teams publish their daily progress for all to see. This ensures that the team is always focussed on the objectives of the business.

A daily progress and risk management meeting is strictly time-boxed to allow impediments to surface rapidly so that they can be dealt with. This ensures that problems are solved quickly, thus reducing cost and improving quality.

Daily progress tracking allows additional features to be brought in to an iteration when the development team works more quickly than expected. This has obvious productivity benefits.

Strong Emphasis On Team-Based Responsibility
Agile development places a strong emphasis on the team as a whole. A major feature of this is the creation of a cross-disciplinary team rather than having separate departments for Business Analysis, Development, QA etc. This ensures that the interests of all parties are aligned and focussed on delivering value to the business. It also breaks down inter-department boundaries and reduces conflict between staff of different disciplines.

From a practical point of view, many Agile teams practice Pair Programming. This increases productivity by providing by a strategic and tactical developer for features. It also provides a valuable training ground for newer team members. Risk to the business is also reduced as it becomes uncommon for specific developers to be the sole repository of knowledge for any area of the software. This removes productivity bottle necks within the team.

Finally, the entire team participates in a retrospective at the end of each iteration to raise examples of good and bad practice and to give the opportunity for new ideas to be proposed to the team. This allows poorly performing work techniques to be discarded and new, innovative techniques to be easily and regularly incorporated into general practice.

Print | posted on Sunday, August 17, 2008 10:21 PM |

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 1 and 3 and type the answer here:

Powered by: