Fitness Functions and Agile Development
November 11th, 2005
Agile development is structured on iterative and adaptive development. The application evolves over time and, at least hopefully, closer matches the user’s needs. The basic process of agile development is a genetic algorithm; after each iteration, adaptations are made and the whole process repeats with each iteration.
The success of a genetic algorithm generally depends on the quality of its fitness function. A fitness function evaluates the success, or “fitness”, of a given result. Within agile development, the iteration boundary marks an opportunity to evaluate product backlogs, prioritize features, and generally tweak the process; both the product and the process evolve.
In order to have a successful agile project, it is imperative to have fitness functions for evaluating both the application being developed and the process by which it is developed. The agile community provides various guidelines for the process evaluation; retrospectives, cost of change, quality of team dynamics, test suite run time and size, shrinking code bases, etc. are all assessment tools and indicators of process health. However, there is little information about evaluating product health.
There are some obvious indicators and questions: do users like it, are bug counts low, is the product selling? I think these are symptoms of the relative health of the application, but I think you need more from a suitable fitness function, particularly when the product isn’t an instant and obvious success.
For example, prioritizing features can be a very difficult activity; users will typically assign many features a “number 1″ priority. However, ranking each feature in strict order, with no duplicate priority, is a challenge.
While the assessment of the product’s health can be seen as a marketing or product management activity, I do not think it is outside the scope of agile development. Successful projects depend on the collaboration of cross-functional teams. Thus, I think it is important to communicate the fitness criteria for an application amongst all on the team, even if one group has primary ownership of it.
Ultimately, the fitness function for an application is an answer to the question of “why do we build the products we do?” Do you know the answer to this question for your current project? Ask others and you may be surprised at the responses.
Entry Filed under: Software Development

2 Comments Add your own
1. fitness | March 10th, 2008 at 12:30 am
thanks
2. Health News, Health Articles | March 12th, 2008 at 3:23 pm
Health News, Health Articles - news.healtharchive.net
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>
Subscribe to the comments via RSS Feed