Monday, September 21, 2015

Fundamentals of CAMS Estimation

Despite its uncertainties, estimation and metrics are an important part of any project. Without some attempt at quantifying objectives, the software development process becomes intangible and untraceable. Ebert (2005) emphasizes that metrics also ensure "the business is successful" and guided with "better decision" by showing the status and progress of developing endeavours. Thus, metrics can assist in estimating and tracking internal development within organizations. Metrics can also help in enhancing communication within an organization. Estimation and metrics in a CAMS-based project are spread over the traditional measures of time, cost, and functionality for a particular iteration; they also attempt to include quality and value, as much as possible, within the traditional metrics. Listed below are some basic estimation principles that need to be kept in mind in practice:

- Recursive estimation: All estimates should be made and reviewed multiple times in order to arrive at the final estimate. Estimation should be a recursive activity that makes use of the past projects' data, current measures, and related risks. Quality increases with appropriate decision of time frames for iteration and release (Layman et al., 2006).

- Collaborative estimates: All measures and ensuing estimates need to be made in close collaboration with customers and users. While customers and users are closely associated with development in an Agile project, in CAMS, the focus is also on the interpretation of past projects' data, collected formally, in estimating new projects. For example, users can provide input in terms of the way the stories were developed by a team in a previous project and its final value to the users. If the previous attempts led to rework, then that information can be used in creating and revising estimates for the current project. A collaborative estimation is a team-based process that would bring forth any concerns from any parties at an early stage in the project (based on Steindl and Krogdahl [2005]).

- Facilitate self-estimations: In addition to carrying out collaborative estimations, it is also important to provide opportunities to individual developers to make estimations for their own work. This self-estimation has a positive effect in increasing the accuracy of the overall measures of the project. Self-estimations are also positive morale boosters. However, it is important to integrate these self-estimates within the overall estimates for a project.

- Basing on real data: CAMS-based projects provide factual data derived from the project parameters. As project numbers grow within an organization, so does the project data. This data and information, stored in a dedicated project metrics database, can be increasingly used for new project measures and estimations. Lessons learnt in applying metrics in previous phases or projects can provide valuable data for new projects.

- Agreeing on a unit of measure: Is a user story a unit of requirement? Is a class a unit of development? Also, is a person-day properly understood within a project? Agreeing on these units is important in order to arrive at time, cost, and scope parameters for a project. Practical experience suggests that arriving at a unit of measure is probably the most important challenge in a metrics and measurement program. Agreeing on what is a unit of measure, how it will be measured, and where it is stored are vital steps for the success of a metrics program in CAMS. For example, defining an "ideal day" (as a workday with no interruptions or blockages) helps in measures and estimations.

- Set estimation rules and guidelines: In order to have a successful metrics program it is important to have a suite of rules and associated guidelines for their use. The previous point, in terms of setting a basic unit of measure, is augmented here through the rules to measure that unit. The differences in individuals, team structures, project dynamics, risks, and expectations, all play a role in estimations and metrics. Rules and guidelines help neutralize some of these subjective elements to enable close to accurate measures. For example, Agile's popular "Planning Poker" game to estimate effort provides opportunities to objectify the effort required. Estimation rules help in formalizing and objectifying the effort estimates.

- Communication of metrics and estimates: It is vital that the metrics themselves and associated data are collected, stored, analyzed, and interpreted across the project and the organization. Expanding the communication of the metrics and measurements improves the project communication itself. For example, making all stakeholders (especially outside the project boundary) regularly aware of the anticipated project velocity can immediately improve expectations. Wider communication of metrics can also help in wider input into the next suite of data—thereby helping trend spotting.

- Accuracy in measurements: Whatever is the agreed suite of metrics in a project, it needs to be measured accurately. Process tools can help in measuring activities and tasks. The number and size of deliverables can also be accurately measured within CAMS-based projects. Simplicity of measure, ease of measurement, and a single point of collection are techniques that help enhance accuracy in measures. Value and quality, however, remain difficult to measure. Measures such as customer satisfaction are also very challenging to measure accurately. Tools, surveys, checklists, and past metrics provide help in improving accuracy of measurements.

Taken from : The Art of Agile Practice: A Composite Approach for Projects and Organizations

No comments: