Tuesday 22 April 2008

Managing Iterative Software Development Projects

As agile software development approaches are more and more adopted in software development organizations, the title of this book from Kurt Bittner and Ian Spence seems to be right on the target. The book contains two major parts. The first gives an overview of iterative project management. It defines the concepts, discuss controlling and gives tips to assess your readiness for iterative project management. The second is a more detailed walk-through to the planning and management of iterations at different levels. It provides also information on how to assess the results of iterations, discuss the relation between iterative project management and project scales. The last chapter is dedicated to the information needed to start your first iterative project. Finally, appendices provide material on use case development (the topic of a former book from the same authors), templates, checklists and an example of 50 pages.

The process behind the book is widely based on the RUP approach; thus practitioners of a “pure” agile approach could be disoriented by the content. However, this book contains very valuable and pragmatic material about managing iterative project management that could be used in any iterative context. It will also provide good transition information towards an iterative process for project managers that operate in a more traditional organization. With 600 pages, it is a not an easy book that is quickly digested. It will nevertheless helps you to improve you grasp on iterative project management, whether you read the book sequentially or you pick sections according to your current project management questions.

Get more details on this book or buy it on amazon.com
Get more details on this book or buy it on amazon.co.uk

Thursday 17 April 2008

More than 1000 articles in Software Development Articles Directory

The Software Development Article Directory has now more than 1000 articles in its database. This directory references knowledge-providing articles related to all software development activities (programming, testing, configuration management, process and project management) selected from the best sources on the web.

Some of the last interesting additions to the directory are
* Must-have tools for HTML, JavaScript and AJAX development and debugging
Use the best open source tools to work with Web pages, scripts, and styles, and make development of new sites and pages easy.

* Schedule Adherence: A Useful Measure for Project Management
This article utilizes the new practice of Earned Schedule (ES) to discuss a proposed measure for further enhancing the practice of EVM. The measure, Schedule Adherence, provides additional early warning information to project managers, thereby enabling improved decision making and enhancing the probability of project success.

* Focus on Value: How to create value-driven user stories
Agile has a tool that can help organizations re-focus on return on investment: value-driven user stories. Value-driven user stories are created specifically to link features with their users and the value the features have for their users. They can be created from a list of high-level features or a list of values and users centered on a general idea.

Wednesday 9 April 2008

Can We Develop Agile Software in Traditional Organizations?

As it was confirmed by a recent Methods & Tools survey, the adoption of agile approaches has been increasing recently. Following these results, I asked software practitioners on different discussion forums to share their opinion about the substance of agile adoption. As agility is now becoming “trendy”, we could see a number of organizations that will qualify now themselves as “agile”, without implementing the essence of the agile software development practices.

The fact that everyone could have its own definition of “Agile” is not upsetting. After all, agile groups different approaches like extreme programming, scrum, test driven development, feature driven development etc. The problem is that people will now adopt the “agile” badge as they could have been doing “RUP” before, just because it is the “right” answer. Besides this, the main obstacle to true agile adoption is the organizational context existing in large companies or governments agencies. As a participant cleverly says, it is difficult to transition from a “Command & Control to a Collaborate & Communicate structure”

Lack of documentation and control are the weaknesses the more often associated to the agile approaches. The truth is that agile recommends “just enough” documentation which could be different if you are developing a web site or medical device software. Short iteration could be considered as a very good tool to control project evolution and fight the “99% complete” syndrome that reveals many project failures. Practices are therefore not obstacles to agile adoption, but it is rather the environment where its culture should be living that makes successful implementation difficult.

The main issue faced by agile approaches is the traditional management vision of the software development projects. Drawing from the engineering perspective, many organizations wants to specify a solution and then estimate the time and budget needed to realize it. I suppose that you would not commit to build a new house without a detailed plan and a budget. Many managers don’t act differently when they have to invest in a new software system. The agile approach requires relinquishing the (illusion of) long-term control to accommodate changes during the project. We have a long history of organizations signing off projects knowing that the probability of getting the initial requirements for the budgeted price is very low, and this is also true for other domains than software development. People don’t ignore this situation, but the buyer mainly uses the project “contract” as a protection mechanism against criticism. On the other side, many sellers use the proposal only to get the contract signed, hopping to bargain about price and functions after the project has begun. We are sadly often more dealing with organizational politic than honest human relationships. This has caused often a situation of distrust between users and developers and transition open collaborative development is difficult. Users are reluctant to abandon the situation when they think they should know at the beginning of the project the answer to the question: “how much will I pay for what”. If things started to go wrong, managers don’t want to find themselves explaining to their boss that they started a project with a lot of (assumed) uncertainty.

The final question is: should we adapt organization to approach or adapt approach to organization and people? I support the agile trend to change the user-developer relationships, but I doubt that this will be a quick and easy goal to achieve, moreover in large organizations where the political aspect is more important. We should therefore keep in our toolbox different approaches to suit diverse organizational contexts.