As many of you know the Software Process and Measurement Cast is turning three.  Over the past three years the Cast has published interviews with luminaries in the professional information technology arena.  The SPaMCAST needs your involvement to continue to grow!  Please send the attached press release to your local press outlet.  Secondly please feel free to send me comments and observations about your experience with the SPaMCAST (email or recorded) for inclusion in the aniversary show.

Year Three Press Release

*****

For Immediate Release
January 4, 2010

Avon Lake, OH. – The Software Process and Measurement Podcast (SPaMCAST) turns three years old January 24, 2010 with the release of the podcast’s 77th episode.  Patricia Ferdinandi will turn the tables and interview me on the anniversary episode.  We will explore the evolution of the SPaMCAST over the past three years and plan and goals for the podcast in year four.  The Software Process and Measurement Cast (SPaMCAST) features interviews with some of the largest names in the software development world.  A few of the interviewees have included:

  • Tim Lister, co-author of  Adrenaline Junkies and Template Zombies
  • Suzanne Robertson author of multiple books on requirements
  • David Anderson the author of  Agile Management for Software Engineering
  • Kent Beck, pioneer in Agile Methods
  • Scott Ambler, though leader in Test Driven Development
  • Ivar Jacobson, developer of Use Cases
  • Capers Jones, prolific author and measurement pundit
  • Nicholas Carr, author of the Big Switch
  • Grady Booch, discussing Life, the Universe and Development

The Cast has covered topics that deal with the challenges on how work is done in information technology organizations as they grow and evolve.  The show combines commentaries, interviews and feedback to serve up ideas, options, opinions, advice and facts.  In a nutshell, the Cast has provided and will continue to provide advice for and from practitioners, methodologists, pundits and consultants.

The Software Process and Measurement Cast can be found at www.spamcast.net.

The Software Process and Measurement Cast is also available on all major podcast services including ITunes and the Zune Marketplace All previous episodes are available download.  The Cast is delivered as a free public service to the information technology community and has listeners across the globe.

Contact:
Thomas M. Cagley Jr.
Editor

spamcastinfo@gmail.com Email
440.668.5717 Cell Phone
440.933.8768 Office
Thomas,Cagley.Jr SKYPE ID
440.499.6160 SKYPE IN

Best Practices, A Force Of Good Or Evil?
Thomas M. Cagley Jr.

To paraphrase Edwin Starr, “Best Practices, huh, what are they good for? Absolutely nothing,  Say it again . . .”

Every organization wants to use best practices. How many organizations do you know that would stand up and say we want to use average processes?. Therefore a process with the moniker “best practice” on it has an allure that is hard to resist.  The problem is that one organization’s best practice is another’s average process, even if they produce the quality and quantity of output.  Or even worse, one organization’s best practice might be beyond another organization.  The process reflects the overall organizational context.  It is possible that adopting a new process wholesale could produce output faster or better, but without tailoring the chances are more random than many consultants would suggest. For example, just buying a configuration management tool without changing how you do configuration management will be less effective melding the tool with your processes.  Tailoring will allow you to use the process based on the attributes of the current organizational context such as the organization’s overall size or the capabilities of the people involved.

An example of an organization’s best practice that might not translate to all of its competitors is the use of super sophisticated inventory control computer systems used at Walmart. Would Walmart’s computer system help a local grocery store (let’s call this Hometown Grocery)? Not likely, the overhead of the same system would be beyond Hometown’s IT capabilities and budget.  However if hundreds of Hometown Groceries banded together, the answer might be different (tailoring the process to the environmental context).  Without tailoring the context, the best practice for Walmart would not be a best practice for our small town grocery.

The term best practice gets thrown around as if there was a dusty old tome full of magical incantations that will solve any crisis regardless of context (assuming you are a seventh level mage).  There are those that hold up the CMMI, ISO or SCRUM and shout (usually on email lists) that they are only way.  Let’s begin by putting the idea that there is a one-size-fits-all solution to every job to rest.  There isn’t and there never was any such animal.  Any individual process, practice or step that worked wonderfully in the company down the street will not work the same way for you, especially if you try to it do it same way they did.  Software development and maintenance isn’t a chemical reaction, a Lego construct or even magic.  Best practices, what are they good for?  Fortunately a lot, if used correctly.

Best practices find their highest value as a tool for you to use as a comparison in order for you to expose the assumptions and paradigms that have been used to build or evolve your own processes.   Knowledge allows you to challenge how and why are you are doing any specific step and provides an opportunity for change.  How many companies have embraced the tenants of the Toyota Production Systems after benchmarking Toyota?  The process of making a comparison between two processes is called a benchmark.  Benchmarking processes can take many forms. Regardless of form, the goal of benchmarking processes is to compare your process against another process or set of processes.

Adopting best practices without regard to your context may not yield the benefits found on the box.  I would suggest that if you read the small print you’d see a warning. Use best practices only after reading all of the instructions and understanding of your goals and your environment.  This is not to say that exemplary practices should not be aggressively studied and translated into your organization.  Ignoring new ideas because they did not grow out of your context is just as crazy as embracing best practices without understanding the context it was created in. Best practices as an ideal, as a comparison so that you can understand your organization makes sense, not as plug compatible modules.

Well as I noted I am catching up. I will have the rest of the article up then I will push a PDF version out.

Complexity:

The second component, complexity, is a measure of the number of properties of a project that are judged to be outside of the norm.  The applicable norm is relative to the person or group making the judgment.  Assessing the team’s understanding of complexity is important because when a person or group perceives something to be complex they act differently.  The concept of complexity can be decomposed into many individual components, for this model the technical components of complexity will be appraised in this category.  The people or team driven attributes of complexity are dealt with in the user involvement section (above).  Higher levels of complexity are an important reason for pursuing traceability because complexity decreases the ability of a person to hold a consistent understanding of the problem and solution in their mind.  There are just too many moving parts.  The inability to develop and hold an understanding in the forefront of your mind increases the need to document understandings and issues to improve consistency.

The model assesses technical complexity by evaluating the following factors:

1.    The project is the size you are used to doing
2.    There is a single manager or right sized management
3.    The technology is well known to the team
4.    The business problem(s) is well understood
5.    The degree of technical difficulty is normal or less
6.    The requirements are stable (ish)
7.    The project management constraints are minor
8.    The architectural impact is minimal
9.    The IT Staff perceives the impact to be minimal

As with customer involvement, the assessment process for complexity uses a simple yes or no scale for rating each of the factors.   Each factor will require some degree of discussion and introspection to arrive at an answer.  An overall assessment tip:  A maybe is equivalent to a ‘no’.   Remember that there is no prize for under or over-estimating the impact of these variables, value is only gained through an honest self-evaluation.

Project is normal size: The size of the project is a direct contributor to complexity; all things being equal, a larger than usual project will require more coordination, communication and interaction than a smaller project.  A common error when considering size of project is to use cost as a proxy.  Size is not the same thing as cost.  I suggest estimating the size of the project using standard functional size metrics.  Assessment Tip: Organizations with a baseline will be able to statistically determine the point where size causes a shift in productivity.  The shift is a sign post for where complexity begins to weigh on the processes being used.  In organizations without a baseline, develop and use a rule of thumb.  Consider using the rule that ‘if it is bigger than anything you have done before’ or the corollary ‘the same size as your biggest project’ as rules of thumb.  These equate to an ‘N’ rating.

Single Manager/Right Sized Management:
There is an old saying ‘too many cooks in the kitchen spoil the broth’.  A cadre of managers supporting a single project can fit the ‘too many cooks’ bill.  While it is equally true that a large project will require more than one manager or leader it is important to understand the implications that the number of managers and leaders will have on a project.  Having the right number of managers and leaders can smooth out issues that are discovered, assemble and provide status without impacting the team dynamic while providing feedback to team members.  Having the wrong number of managers will gum up the works of project (measure the ratio of meeting time to a standard eight hour day anything over 25% is sign to closely check the level of management communication overhead).   The additional layers of communication and coordination are the downside of a project with multiple managers (it is easy for a single manager to communicate with himself or herself).  One of the most important lessons to be gleaned from the agile movement is that communication is critical (and this leads to the conclusion that communication difficulties may trump benefits) and that any process that gets in the way of communication should be carefully evaluated before they are implemented.  A larger communication web will need to be traversed with every manager added to the structure, which will require more formal techniques to ensure consistent and effective communication.  Assessment Tip: Projects with more than five managers and leaders or a worker to manager ratio lower than 8 workers to one manager/leader (with more than one manager) should assess this attribute as an ‘N’.

Well Known Technology: The introduction of a technology that is unfamiliar to the project team will require more coordination and interaction.  While the introduction of one or two hired guns into a group with experience is a good step to ameliorate the impact, it may not be sufficient (and may complicate communication in its own right).  I would suggest that until all relevant team members surmounts the learning curve; new technologies will require more formal communication patterns.  Assessment Tip:  If less than 50% of the project team has not worked with a technology on previous projects, assess the attribute as an ‘N’.

Well Understood Business Problem: A project team that has access to understanding of the business problem being solved by project will have a higher chance at solving the problem.  The amount of organizational knowledge the team has will dictate the level of analysis and communication required to find a solution.  Assessment Tip: If the business problem is not well understood or has not been dealt with in the past this attribute should be assessed as a ‘N”.

Low Technical Difficultly: The term ‘technical difficulty’ has many definitions.  The plethora of definitions means that measuring technical difficulty requires reflecting on many project attributes.  The attributes that define technical difficulty can initially be seen when there are difficulties in describing the solutions and alternatives for solving the problem.  Technical difficulty can include algorithms, hardware, software, data, logic or any combination of components.  Assessment Tip:  When assessing the level of technical difficulty, if it is difficult to frame the business problem in technical terms assess the level of complexity as ‘N’.

Stable Requirements: Requirements typically evolve as a project progresses (and that is a good thing).  Capers Jones indicates that requirements grow approximately 2% per calendar month across the life of a project.  Projects that are difficult to define or where project personnel or processes allow requirements to be amended or changed in an ad hoc manner should anticipate above average scope creep or churn.  Assessment Tip:  If historical data indicates that the project team, customer and application combination tends to have scope creep or churn above the norm assess this attribute as an ‘N’ unless there are procedural or methodological methods to control change.  (Note:  Control does not mean stop change, but rather that it happens in an understandable manner.)

Minor Project Management Constraints: Project managers have three macro levers (cost, scope and time) available to steer a project.   When those levers are constrained or locked (by management, users or contract) any individual problem becomes more difficult to address.  Formal communication becomes more important as options are constrained.  Assessment Tip:  If more than one of the legs of the project management iron triangle is fixed, assess this attribute as an ‘N’.

Minimal Architectural Impact: Changes to the standard architecture of the application(s) or organization will increase complexity on an exponential scale.  This change of complexity will increase the amount of communication required to ensure a trouble free change. Assessment Tip:  If you anticipate modifications (small or wholesale) to the standard architectural footprint of the application or organization, assess this attribute as an ‘N’.

Minimal IT Staff Impact:
There are many ways a project can impact an IT staff ranging from process related changes (how work is done) to outcome related changes (employment or job duties).  Negative impacts are most apt to require increased formal communication, therefore the use of traceability methods that are more highly documented and granular.  Negative process impacts are those that are driven by the processes used or organizational constraints (e.g. death marches, poorly implemented processes, galloping requirements and resource constraints).  Outcome related impacts are those driven by the solution delivered (e.g. outsourcing, downsizing, and new application/solutions).  Assessment Tip:  Any perceived negative impact on the team or to the organization that is closely associated with the team should viewed as not neutral (assess as an ‘N’), unless you are absolutely certain you can remediate the impact on the team doing the work.  Reassess often to avoid surprises.

In preparation for scaling total the number of Y’s and N’s.  Scaling will be discussed after all components are described.

We should be getting back to normal on the blog starting now.  As many of you know I have working on a project management book with Murali Chemuturi which has now gone to the publisher.  While I know there is more work on it in the future I intend to start catching up starting now!

IT Value and Customer Satisfaction
Thomas M. Cagley Jr

IT value is an outcome that can be expressed as a transaction; a summation of debits and credits resulting in a number.   Unfortunately, even if we can create a specific formula, interpretation of the number is problematic.   Measures of the economy of inputs, the efficiency of the transformations and the effectiveness of specific outputs are components of a value equation but they only go so far.   I would like to suggest that customer satisfaction makes interpretation of value possible.

I believe that value is perceived by those receiving the service therefore tends to be specific to the project or service, to be predictable there must be an assumption that there is a relationship between how the product or service is created and the value perceived.  When we are assessing the value delivered by a department like Information Technology (IT) which is part of a larger organization, it is rare that we are allowed the luxury of being able to declare that the group we are appraising is a black box which means we have to create transparency.  Because we have to create transparency into the appraised organization we have to define value as a synthesis of inputs and raw materials, the efficiency of the processes used in the transformation process (where value is typically added) and finally whether the  output meets the users need and is fit for use.  While this sounds complex, every small business has had to surmount the complexity to stay in businesses.  A simple value example from the point of view of a restaurant owner:

  • A customer enters the restaurant and orders a medium-rare New York Strip steak (price $32.00)
  • The kitchen retrieves the steak from the cooler and cooks the steak so that it is done at the proper time and temperature.  (The inputs include requirement for the steak, effort of waiter and kitchen staff.)
  • The customer receives a medium-rare New York Strip steak

From the restaurant owner’s point of view the value equation begins as the price of the steak minus the cost of steak, preparation, overhead and the free tap water.   If the cost of steak and servicing the customer was more than the price charged, an accounting loss would have resulted and if the costs were less  . . .  an accounting profit.  The simple calculation of profit and loss provides an important marker in understanding value but it is not sufficient.   For example, let’s say the customer was the restaurant reviewer for a large local newspaper and the owner comp’ed the meal AND the reviewer was happy with the meal.  The owner would derive value from the transaction regardless of the accounting loss from that single transaction.  As I noted earlier, customer satisfaction is a filter that allows us to interpret the transaction.   Using our example, if the customer was unhappy with his or her steak the value derived by the restaurant will be less than totaling of the accounting debits and credits would predict.  While a large IT department has many inputs and outputs I believe the example presents a path for address value without getting lost in the complexity of technology.

In a perfect world, IT value would be established in a perfect market place.  Customers would weigh the economy, efficiency, effectiveness and customer satisfaction they perceive they would garner to decide who should do their work.  Unfortunately, perfect market places seldom exist and participants could easily leverage pricing strategies that internal organizations would not be able to match.  The idea however has merit and benchmarking projects is a means of injecting external pressure without the potential for pricing abuse.

Measuring IT Value whether at a macro or project level needs to be approached as more than a simple assessment of the processes that convert inputs into a product or service the business requires.  Measure the inputs and raw materials, measure and appraise the processes used in transformation and then determine the user’s perception of the output (where the customer and user are different you need to understand both points of view).  Knowing the value of all of these components while having your thumb on the filter of customer satisfaction will put you in a position to not only determine the value you are perceived to be delivering (at least over the short-term) but to predict how your customers are perceiving the value you are delivering.  Remember forewarned is forearmed.

Sorry  for the delay — I will have the figures added soon!

Putting the Model Into Action

The model for scaling traceability proposed in this paper is based on an assumption that there is a relationship between customer involvement, criticality and complexity.  The relations yields the required level of documentation required to achieve the benefits of traceability.  The model leverages an assessment of project attributes that define the three common concepts.  The concepts are:

•    Customer involvement in the project
•    Complexity of the functionality being delivered
•    Criticality of the project

A thumbnail definition of each of the three concepts begins with the concept of customer involvement, which is defined as the amount of time and effort applied to a project in a positive manner by the primary users of the project.  The second concept, complexity, is a measure of the number of project properties that are outside the normal expectations as perceived by the project team (the norm is relative to the organization or project group rather than to any external standard).  The final concept, criticality, is defined as the attributes defining quality, state or degree of being of the highest importance (again relative to the organization or group doing the work).  We will unpack these concepts and examine them in greater detail as we peal away the layers of the model.

The Model

Figure 1  - Overview of the Traceability Model

Figure 1 - Overview of the Traceability Model

The process for using the model is a simple set of steps.
1.    Get a project (and team members)
2.    Assess the project’s attributes
3.    Plot the results on the model
4.    Interpret the findings
5.    Reassess as needed

The model is built for project environments. Don’t have a project you say!  Get one, I tell you! Can’t get one? This model will be less useful, but not useless.

Who Is Involved And When Will They Be Involved:

Implementing the traceability model assessment works best when the team (or a relevant subset) charged with doing the work conducts the assessment of project attributes.  The use of team members acts to turn Putt’s theory of “Competence Inversion ” on it head by focusing project level competencies on defining the impact of specific attributes.  The use of a number of team members will provide a basis for consistency if assessments are performed again later in the project.

While the assessment process is best done by a cross functional team, it can be also be performed by those in the project governance structure alone.  The smaller the group that is involved in the assessment the more open and honest the communication between the assessment group and the project team must be or the exercise will be just another process inflicted on the team.  Regardless of the size, the assessment team needs to include technical competence.  Technical competence is especially useful when appraising complexity.  Technical competence is also a good tool to sell the results of the process to the rest of the project team.  Regardless of the deployment model, diversity of thought is generated in cross functional groups that will provide the breadth of knowledge needed to apply the model (this suggestion is based on feedback from process users).  The use of cross functional groups becomes even more critical for large projects and/or projects with embedded sub-projects.  In a situation where the discussion will be contentious or the group participating will be large I suggest using a facilitator to ensure an effective outcome.

An approach I suggest for integrating the assessment process into your current methodology is to incorporate the assessment as part of your formal risk assessment.  An alternative for smaller projects is to perform the assessment process during the initial project planning activities.  This will minimize the impact of yet another assessment.

In larger projects where the appraisal outcome may vary across teams or sub-projects, thoughtful discussion will be required to determine whether the lowest common denominator will drive the results or whether a mixed approach is needed.  Use of this method in the real world suggests that in large projects/programs the highest or lowest common denominator is seldom universally useful.  The needs for scalability should be addressed at the level it makes sense for the project which may mean that subprojects are different.
Assessing Customer Involvement:

Customer involvement can be defined as the amount of time and effort applied to a project by the customers (or user) of the project.  Involvement can be both good (e.g. knowledge transfer and decision making) and bad (e.g. interference and indecision).  The goal in using the traceability model is to force the project team to predict both the quality and quantity of customer involvement as accurately as possible across the life of a project.  While the question of quality and quantity of customer involvement is important for all projects it becomes even more important as agile techniques are leveraged.  Customer involvement is required for the effective use of agile techniques and to reduce the need for classic traceability.  Involvement is used to replace documentation with a combination of lighter documentation and interaction with the customer.

Quality can be unpacked to include attributes such as competence; knowledge of the problem space, knowledge of the process and ability to make decisions that stick.  Assessing the quantity attributes of involvement requires understanding how having multiple customer and/or user constituencies involved in the project outcome can change the complexity of the project.  For example, the impact of multiple customers and user constituencies’ on decision making, specifically the ability to make decisions correctly or on a timely basis, will influence how a project needs to be run.  Multiple constituencies complicate the ability to make decisions which drives the need for structure.  As the number of groups increases, the number of communication nodes increases, making it more difficult to get enough people involved in a timely manner.   Although checklists are used to facilitate the model, model users should remember that knowledge of the project and project management  is needed to use the model effectively.  Users of the model should not see the lists of attributes and believe that this model can be used merely as a check-the-box method.

The methodical assessment of the quantity and quality of customer involvement requires determining the leading indicators of success.  Professional experience suggests a standard set of predictors for customer involvement which are incorporated into the appraisal questions below.
These predictors are as follows:

1.    Agile methods will be used                        y/n
2.    The customer will be available more than 80% of the time         y/n
3.    User/customer will be co-located with the project team            y/n
4.    Project has a single primary customer                    y/n
5.    The customer has adequate business knowledge            y/n
6.    The customer has knowledge of how development projects work         y/n
7.    Correct business decision makers are available                y/n
8.    Team members have a high level of interpersonal skills            y/n
9.    Process coaches are available                    y/n

The assessment process simplifies the evaluation process by using a simple yes-no evaluation.  Gray areas like ‘maybe’ are evaluated as an equivalent to a ‘no’.  While the rating scale is simple the discussion to get to a yes-no decision is typically far less simple.

Agile methods will be used:  The first component in the evaluation is to determine whether the project intends to use disciplined agile methods for the project being evaluated.  The term ‘disciplined’ is used on purpose.  Agile methods like xP are a set of practices that interact to create development supported by intimate communication.  Without the discipline or without critical practices, the communication alone will not suffice.  Assessment tip:  Using a defined, agile process equates to a ‘Y’, making it up as you go equates to an ‘N’.

Customer availability (>80%):  Intense customer interaction is required to ensure effective development and to reduce reliance on classically documented traceability.  Availability is defined as the total amount of time the primary customer is available.  If customers are not available, lack of interaction is foregone conclusion.  I have found that agile methods (which require intense communication) tend to loose traction when customer availability drops below 80%.   Assessment Tip: Assess this attribute as a ‘Y’ if primary customer availability is above 80%.  Assess it as an ‘N’ if customer availability is below 80% (which means if your customers are not around 80% of the time normally during the project without very special circumstances rate this as a No).

Co-located customer / user:  Co-location is an intimate implementation scenario of customer/user availability.  The intimacy that co-location provides can be leveraged as a replacement for documentation-based communication by using less formal techniques like white boards and sticky notes.  Assessment Tip:  Stand up look around, if you don’t have a high probability of seeing your primary customer (unless it is lunch time), you should rate this attribute as an ‘N’.  Leveraging metaverse tools (e.g. Secondlife or similar) can be used to mitigate some of the problems of disparate physical location.

Project Has A Single Customer:  As the number of primary customers increase, the number of communication paths required for creating and deploying the project increases exponentially.  The impact that the number of customers has on communication is not a linear, it can be more easily conceived as a web.  Each node in the web will require attention (attention = communication) to coordinate activities.  Assessment Tip: Count the number of primary customers, if you need more than one finger, assess this question as an ‘N’.

Business Knowledge:  The quality and quantity of business knowledge the team has to draw upon is inversely related to the amount of documentation-based communication needed.  Availability of solid business knowledge impacts the amount of background that needs to be documented in order to establish the team’s bona fides.  It should be noted that it can be argued that sourcing long term business knowledge in human repositories is a risk.  Assessment Tip:  Assessing the quality and quantity of business knowledge will require introspection and fairly brutal honesty, but do not sell the team or yourself short.

Knowledge of How Development Projects Work:  All team members, whether they are filling a hardcore IT role or the most ancillary user role, need to understand both their project responsibilities and how they will contribute to the project.  The more intrinsically participants understand their roles and responsibilities the smaller the amount of wasted effort a project will typically have to expend on non-value added activities (like re-explaining how work is done).  Assessment Tip:  This is an area that can be addressed after assessment through training.  If team members can not be trained or educated as to their role, appraise this attribute as an ‘N’.

Decisions Makers:  The project attribute that defines“decision makers” is the process that leads to the selection of a course of action.  Most IT projects have a core set of business customers that are the decision makers for requirements and business direction.  Knowing who can make a decision (and have it stick) then having access to them is critical.  Having a set of customers available or co-located is not effective if they are not decision makers (‘the right people’).  The perfect customer for a development project is available, co-located and can make decisions that stick (and very apt not to be the person provided).  Assessment Tip:  This area is another that can only be answered after soul searching introspection (i.e. thinking about it over a beer).  If your customer has to check with a nebulous puppet master before making critical decisions then assessment response should be an “N”.

High Level of Interpersonal Skills:  All team members must be able to interact together and perform as a team.  Insular or other behavior that is not team conducive will cause communications to pool and stagnate as team members either avoid the non-team player or the offending party holds on to information at inopportune times.  Non-team behavior within a team is bad regardless of the development methodology being used.  Assessment Tip:  Teams that have worked together and crafted a good working relationship typically can answer this as a “Y”.

Facilitation: Projects perform more consistently with coaching (and seem to deliver better solutions), however coaching as a process has not been universally adopted.  The role that has been universally embraced is project manager (PM).  Coaches and project managers typically play two very different roles.  The PM role has an external focus and acts as the voice of the process, while the role of coach has an internal focus and acts the as the voice of the team (outside vs. inside, process vs. people).  Agile methods implement the role of coach and PM as two very different roles, even though they can co-exist.  Coaches nurture the personnel on the project; helping them to do their best (remember your last coach).  Shouldn’t the same facility be leveraged on all projects?  Assessment Tip:  Evaluate whether a coach is assigned if yes answer affirmatively.  If the role is not formally recognized within the group or organization, care should be taken, even if a coach is appointed.

In preparation for scaling total the number of Y’s and N’s.  Scaling will be discussed after all components are described.

Note:  This is the essay from SPaMCAST 66 at www.spamcast.net – Comments are welcome!

Introduction

Traceability is an important tool in software engineering, however, it is both hard to accomplish and requires a focused application to derive value.  Topping off the value equation, traceability is a core tenant of the CMMI.  The importance of traceability is derived both from its use as tool for the management and control of requirements and the need to prove traceability to attain a CMMI rating.  Controlling and understanding the flow of requirements puts a project manager’s hand on the throttle of the project by allowing he or she to understand (and control) the flow of work through a project.  In most cases, some degree of control is important, and with control mechanisms in place, the question becomes when does the control generated represent the proper hand on the throttle or a lead foot on break?

The implementation of traceability sets the stage for the struggle over processes mandated by management or the infamous “model”.  Developers actively resist process when they perceive the effort to not be directly leading to functionality that can be delivered.  Work not linked to the delivery of functionality is not perceived as delivering value to their customers.  In the end, traceability, like insurance, is best when the most obvious reasons (uncontrolled project changes and delivering functionality not related to requirements) for tracing are avoided.

Identifying both the projects and the audience that can benefit from traceability is paramount for implementing and sustaining the process.  Questions that need to be asked and addressed include:

  • Is the need for control for all types of projects the same?
  • Is the value-to-effort ratio from tracing requirements the same for all projects?
  • What should be evaluated when determining whether to scale the traceability process?

Scalability is a needed step to affect the maximum value from any methodology component, traceability included, regardless of whether the project is plan driven or agile. A process is needed to ensure that traceability occurs based on a balance between process, effort and complexity.

The concept of traceability acts a lightening rod for the perceived excesses of CMMI (and by extension all other model-based improvement methods).  This paper explores a possible approach for scaling traceability.  The approach described in this paper bridges the typical approach (leveraging matrices and requirement tools) with an approach that trades documentation for intimate user involvement.  The approach described in this paper uses a simple set of three criteria (complexity, user involvement and criticality) to determine where a project should focus its traceability effort on continuum between documentation and involvement.

Agile methods seem to be at odds with the use of traceability.  The defining attributes of agile processes start with the encapsulation of development work into smaller pieces (terms used might include time-boxing, iterations or stories – albeit these terms are not exactly the same).  An integral component in agile methods is that real time communication is emphasized over written documents.  Techniques such as team co-location and including users as part of the team are leveraged to enhance intimate, constant communication and the team esprit de corp.  Projects using agile methods typically measure progress through the creation of working software (see http://en.wikipedia.org/wiki/Agile_methods for further descriptions of agile methods) rather than status reports, schedules and documentation.  The perception of agile software development (the perception is driven by published articles, unattributed stories and the occasional inappropriate application of the method) can cause groups using agile methods to be viewed as less disciplined.  My opinion is that when agile methods are implemented poorly, this view is less a perception than a fact.  This perception is put more eloquently in the WIKIPEDIA entry, which ends with the following comment, “Combined with the preference for face-to-face communication, agile methods produce very little written documentation relative to other methods. This has resulted in criticism of agile methods as being undisciplined[1]”.  The question presented to organizations is: can traceability be pursued when a project is using agile processes?

The principles behind the agile manifesto focus on the satisfying customers thought early and continuous delivery of software. As noted before, the agile methods stipulate that the most efficient and effective method of conveying information to and within a development team is face-to-face conversation[2]. Assuming the primacy of satisfying the customer, the process for each project must be assessed and tailored to most effectively and efficiently deliver functional software.  The level of business to customer involvement determines whether agile methods can be useful.  The levels of complexity and criticality affect the requirements for communication and the ability to simplify (maximize the amount of work not done).  Traceability becomes a tool that can be leveraged to bridge the gaps caused by less than perfect involvement, a complex project and increased criticality.  The model proposed in this paper provides a means to apply traceability in a scaled manner so that it fits a projects need and is not perceived as a one size fits all approach.


[1] http://en.wikipedia.org/wiki/Agile_software_development, third paragraph, 12/4/2007.

[2] http://agilemanifesto.org/principles.html, 11/20/2007

‘Model based software process improvement’ and ‘process discipline’ are phrases that can chill the blood of most software engineers even when uttered forty feet away.  Applied incorrectly the perceived trappings of process discipline are viewed as overhead which gets in the way of ‘real work’.  The processes that are perceived to be the most offensive to developers are those concentrated on controlling their behavior or providing oversight of their work.  When the CMMI® is interjected into the process landscape, traceability becomes one of the lightening rods typically identified in the overhead discussion.

So, avoid the lightening rod, right?  Avoiding either the lightening or lightening rod is easier said than done if an appraisal to the CMMI® model is in your future.  Traceability[1] is a core tenant of the requirements management process area within the CMMI®.  Why is the effort to create and implement the processes needed to support traceability worth the investment? Simply put, traceability allows project personnel to know that what was planned was installed and what was installed was planned both at the end of the project and as the project progresses.  Having that knowledge is hard to argue with.  In some cases, knowing whether a requirement was planned or delivered is an imperative.  The problem is that “doing traceability” is not very easy.  Taking someone’s word that what was planned was delivered is so much easier.

Even when the traceability is deemed important, the perceived value of traceability depends on the effort required from the groups involved in gathering and using the data (you get what you put into the process).  As they deploy traceability, some of the burning questions all process engineers must answer are:

  • Do the benefits of tracing accrue to all groups equally (assuming they exist)?
  • Is the effort required to “do traceability” less than the value that will accrue for tracing requirements?
  • Can the process be scaled so that all projects and all groups can derive more value than effort?

Traceability is a difficult concept to define a value proposition for all types of projects and an equally difficult concept to sell to all of the stakeholders in the world of projects.

“Traceability:  A Radical Approach Based on User Involvement” suggests an approach to scaling traceability based on balancing user involvement, risk and control needs.  This approach provides a means to balance the effort required to trace requirements with the value of doing it.  As a side benefit, this approach makes traceability a saleable concept.


[1] “Requirements traceability refers to the ability to describe and follow the life of a requirement, in both forwards and backwards direction (i.e. from its origins, through its development and specification, to its subsequent deployment and use, and through all periods of on-going refinement and iteration in any of these phases.)” Gotel O.C.Z and Finklestein A.C.W., “An analysis of the requirements traceability problem”, in Proceedings of ICRE94, 1st International Conference on Requirements Engineering, Colorado Springs, Co, IEEE CS Press, 1994

Synopsis

‘Model based software process improvement’ and ‘process discipline’ are phrases that can chill the blood of most software engineers even when uttered forty feet away.  Applied incorrectly the perceived trappings of process discipline are viewed as overhead which gets in the way of ‘real work’.  The processes that are perceived to be the most offensive to developers are those concentrated on controlling their behavior or providing oversight of their work.  When the CMMI® is interjected into the process landscape, traceability becomes one of the lightening rods typically identified in the overhead discussion.

So, avoid the lightening rod, right?  Avoiding either the lightening or lightening rod is easier said than done if an appraisal to the CMMI® model is in your future.  Traceability[1] is a core tenant of the requirements management process area within the CMMI®.  Why is the effort to create and implement the processes needed to support traceability worth the investment? Simply put, traceability allows project personnel to know that what was planned was installed and what was installed was planned both at the end of the project and as the project progresses.  Having that knowledge is hard to argue with.  In some cases, knowing whether a requirement was planned or delivered is an imperative.  The problem is that “doing traceability” is not very easy.  Taking someone’s word that what was planned was delivered is so much easier.

Even when the traceability is deemed important, the perceived value of traceability depends on the effort required from the groups involved in gathering and using the data (you get what you put into the process).  As they deploy traceability, some of the burning questions all process engineers must answer are:

  • Do the benefits of tracing accrue to all groups equally (assuming they exist)?
  • Is the effort required to “do traceability” less than the value that will accrue for tracing requirements?
  • Can the process be scaled so that all projects and all groups can derive more value than effort?

Traceability is a difficult concept to define a value proposition for all types of projects and an equally difficult concept to sell to all of the stakeholders in the world of projects.

“Traceability:  A Radical Approach Based on User Involvement” suggests an approach to scaling traceability based on balancing user involvement, risk and control needs.  This approach provides a means to balance the effort required to trace requirements with the value of doing it.  As a side benefit, this approach makes trace


[1] “Requirements traceability refers to the ability to describe and follow the life of a requirement, in both forwards and backwards direction (i.e. from its origins, through its development and specification, to its subsequent deployment and use, and through all periods of on-going refinement and iteration in any of these phases.)” Gotel O.C.Z and Finklestein A.C.W., “An analysis of the requirements traceability problem”, in Proceedings of ICRE94, 1st International Conference on Requirements Engineering, Colorado Springs, Co, IEEE CS Press, 1994

Agile estimation using functional metrics is designed to cover the product and release rings of Cohn’s planning onion using a synthesis of parametric and Delphi estimation techniques with the emphasis shifting from parametric to Delphi as events dictate.    The technique leverages the ability to size requirements to develop parametric estimates and then dovetails collaborative techniques to refine those estimates based on memories and self-knowledge.

The process flow is as follows

Stage One

  1. Identification of functional requirements (or stories)
  2. Sizing using Quick and Early Function Points
  3. Simple Parametric Estimation

Stage Two – Sprint or Iteration Planning

  1. Break Requirements into More Granular Pieces (if needed) and Refine Size
  2. Team Level Re-estimation of Requirements Using Delphi Techniques
  3. Team Level Commitment

Size is a critical component for developing an estimate and for planning however size and estimates are not synonymous.  Size is merely a step along the path from point A to point B.  As we move along the path size will be revisited twice.

The sizing process begins by segregating the functional requirements from the non-functional requirements.  The functional requirements are then sized using Quick and Early Function Points (QEFP).  Function points for all their warts are the easiest way to consistently size software requirements.  This is accomplished by focusing on the basic building blocks of functionality found in all software projects. The QEFP method leverages the relationship between action verbs and transactions to identify the transaction functions found in function points and the subject of the requirement to identify the data functions found in function points.  The application of this technique is similar to sentence diagramming that you learned during grade school or high school.  This relationship between words and size has been observed and investigated over the past few years by a number of different people within the functional sizing community including myself (see “Turning Perfect Good Words Into Numbers” originally presented at the IFPUG Functional Sizing Summit at www.davidconsultingroup.com).  Function points or any functional metric has at its heart the goal of converting requirements or stories into a number in a consistent manner.  The number then must be interpreted based on the abilities of the team or organization.  At the level of the overall project, the technique described in this paper leverages parametric estimation.  A simple parametric estimation equation could be:

Y =-(7^-6*(X^2))-Z*X+26.587

Where:

X = Size in function points

Y = Productivity rate for the type of project

Z = Behavior or Process Index

The result is a productivity rate for the project.  Collection of historical data on a selection of projects will be required to build an equation.  I would further suggest that you will need to augment internal data with external data to increase the validity of the estimation equation.  Note the factor can be applied to a disaggregated requirement, epic or story.  This estimate is created for organizational planning purposes.

Stage two begins as sprints or iterations are kicked off.  The sprint teams (we will use SCRUM terminology) breakdown the stories into pieces that can be accomplished during the sprint, then re-size the pieces using the QEFP method.   The goal of using QEFP at this point is to take one source of variance out of the estimation discussion that will be had when the Delphi method is applied.  This focuses the group on expanding the team level self-knowledge needed to coalesce on an appropriate level of effort needed to complete the story.  For example the QEFP technique has been combined with planning poker into a process that was quickly learned by the sprint teams.  The results were a marked reduction in stories that were not completed during the sprint they were committed to in.  By removing size as a variable the team that initially piloted this method indicated they were better able to focus on discussing team capabilities and technical considerations when doing their initial sprint planning.

Real life examples will help drive how organizations synthesized what could be considered competing methodologies into something greater than the sum of the two parts.

Part 4

Case One:

  • Firm:   Small custom technology organization
  • Project Types:  Internal and external projects
  • Culture: Highly collaborative
  • Current Methodology:  Mixed waterfall and SCRUM

Other notes:  All external projects are bid with many using a fixed fee structure.  Internal projects were continually re-scoped to fit the internal development budget which changes as the economy waxes and wanes.  Prior to rewriting the estimation process and leveraging functional metrics approximately 30% of bids were successful and budgets tended to be a suggestion.  The lack of estimation success meant that there was a significant risk of losing money if the business was won and if the business was not won going out of business in the long run.

The firm adopted Quick and Early Function Points for sizing the backlogs for all projects, both internal and external.  Where backlogs were not being used to manage requirements they were developed.  A quick baseline was developed to determine a productivity factor.  The productivity factor was then used to translate individual stories into effort.  Each team spent a day reviewing how they worked together to generate a baseline of self-knowledge and trust.    Collaborative story level estimation was redone using planning poker.  It became apparent quickly that a lot of disaggregation was needed to actually estimate the backlogs.  After applying QEFP and the productivity factor to the in-flight projects the firm progressed to applying QEFP to all bids.

The results were that won bids increased 20% and negative misses were nearly eradicated.  A negative miss was defined as underbidding on a fixed bid contract.

Case Two:

  • Firm:   Large software development firm
  • Project Types:  Internal projects (software for resale)
  • Culture:  Hierarchy, classic command and control
  • Current Methodology:  Mixed waterfall  (but SCRUM recently introduced)

Other notes:  The methodology in the environment was predominantly classic waterfall with central PMO.  Just before we readdressed the estimation process a team had implemented SCRUM and some components of extreme programming (xP) this was done in sort of a guerilla fashion.   One very large project was consuming the majority of the organizations resources.  Significant requirements were still being discovered after construction had begun.   Estimates had been developed based on a bottom up process very early in the project and they were of questionable validity.  The top managers just returned from begging for more money from the board of directors.  The project was being capitalized.

The solution in this case was for the company to more firmly embrace the SCRUM framework for project management at the team level.   A product backlog was developed and Quick and Early Function Points were adopted to size the backlog.  The sizing process exposed a number of functional blind spots (function points can be leveraged as form of analysis).  Team members were trained in using QEFP which allowed them to size new stories or re-size changed stories at an individual sprint planning level.  The impact of these changes was to allow the PMO to size and preplan the backlog with development leaders and the primary product owner.  The full product owner team selected stories to formulate sprints during the sprint planning meetings.  Teams re-evaluated (sized and estimated) the selected stories and then committed to the stories they could do.

The initial result was improved product owner satisfaction, involvement allowed them to be part of the solution.  After the first few sprint there was an increased perception of estimate consistency both at the product backlog and sprint team level.  It was also noted that the teams that had been using the using SCRUM before adopting the new estimation methods had a reduced number of stories that had not completed at the end of the sprint.  The teams attributed this improvement during retrospectives to a better capacity to size and commit to work that they’re actually able to accomplish during the sprint.

Summary

Agile methods have matured and are now being integrated into many different approaches to the development of software.  Estimation has been problematic for all methods; agile to plan based therefore it tends to be a lightning rod for experimentation and synthesis such as is being described in this paper.   Agile Estimation Using Functional Metrics has presented a path for integrating the discipline found in functional metrics with the collaborative approaches found in agile estimation.

Uncertainty:

A lot has been written about uncertainty, mostly from the point of view of requirements, however the impact of uncertainty extends further than requirements into factors that can be purely technical (whether specific coding languages can do the job) to the complexities of the real world (cue the changing economy as an example).  If we change our perspective to completion of the project, I propose that we will all admit that level of project uncertainty is substantially reduced the closer you are to completion of the project.  Moving back toward the beginning of the project where most estimation exercises occur one simple truth becomes apparent, knowledge dispels uncertainty.  We need to gather better knowledge whether by leveraging history, mathematical algorithms and/or project specific information to make better estimates.   Integrating agile techniques for knowledge capture in projects are tools for reducing uncertainty.  Techniques to use include incorporating a user or user proxy on the team, focusing on short pre-defined time horizons, implementing processes that foster communication and periodic re-planning.

Self knowledge:

Two psychologists, Joseph Luft and Harry Ingham developed a construct to understand personal awareness.  The tool named Johari’s Window[i] divides personal awareness into four different categories, as represented by its four quadrants: open, hidden, blind and unknown. The lines dividing the four panes are like window shades, which can move as an interaction progresses.  The concept is adaptable to teams. Team level blind spots complicate estimation, planning and ultimately performance.  Techniques to improve a team’s self knowledge include forming stable teams, fostering intimate communications and ensuring retrospectives actually happen often.  These tools minimize what isn’t known by the team and surface misunderstandings quickly.

Consistency of Method

There are several types of estimation that can be leveraged during any project.

Estimation Types:

Let’s quickly review the four most popular estimation techniques in very broad terms.  The four are:

  • Analogy
  • Bottom-up
  • Parametric
  • Delphi

Estimation by analogy starts will the selection of a similar project (building a new bathroom based on the results of building a bathroom last week) which acts as a central metaphor for the new project.  The estimator will then decide how closely the two projects resemble each other and whether there are any mitigating circumstances that will affect the effort required to finish the project, how much the project might cost and how long it will take.   Based on these differences the estimator will apply a correct factor and voila, an estimate is created.  The second general category of estimation techniques is the bottom- up estimate.  An estimate of this type typically starts by identifying a set of technical deliverables (a shower stall, sink and pipes for bathroom with a shower if building a house) or work breakdown structure (the tasks needed to build a bathroom for our house).  The identified low level deliverables are estimated based on some form of history and then rolled up to higher and higher levels until the cost or effort for the entire project is known.  The third category estimation is called parametric estimation.  This form of estimation builds and leverages statistical relationships between historical data and one or more variables that define scope such as functional size (the number of square feet in the bathroom times the productivity of the builders).  The fourth type of estimation techniques can be grouped broadly in to the category of Delphi.  The central theme of Delphi techniques is the use of collaborative techniques to leverage group think to decide upon an estimate (the plumbers, electricians and carpenters get together and use a process to come to consensus on how much time is required to build the bathroom).  These techniques work best when the requirements being estimated can be stated a level of granularity that can be understood by those participating in the estimation session.

Mike Cohn has described the planning continuum using an onion analogy[ii].  Where strategy is the outer layer followed by layers for portfolio, product, release and iteration segments as you approach the onion core.  I suggest that there is no one tool or technique perfectly suited for each level in the onion.

Integrating Cohn’s planning onion into our earlier conversation of budgeting, estimation and planning,   I would suggest that strategy and portfolio levels are budgeting tasks.  The product and release layers are estimation tasks where as tools like white parametric estimation make sense.  Iteration and day-to -day organization are planning tasks where planning tools like schedules, kanban boards and standup meeting make sense to direct activity.  The method we are introducing in this paper combines the use of functional metrics and tools in the estimation step in a manner that fosters usage in the planning layers of the onion.  This set of techniques provides a consistent strategy and answers the changing information needs as the project evolves.  All this, while providing a collaborative environment for both the team and the client.


[i] http://en.wikipedia.org/wiki/Johari_window, June 14, 2009

[ii] http://www.mountaingoatsoftware.com/presentations/51, June 14 2009

Next Page »