Tuesday, December 29, 2009

Quality

Quality, in general, addresses four main points: Process Compliance, Work Product Creation, Work Product Quality and Process Improvement.

Process Compliance
Organizations spend a great deal of time and money creating processes. To not follow them is to waste the time and effort that went into creating them. If the processes are not useful, that is more properly addressed in topic 4, Process Improvement. Even if the processes are less than optimal, they should still be followed, at least until enough data is collected such that you can make an effective process improvement suggestion.

Typically, people follow the processes using tools to create the work products in accordance with a contract and complying with standards. Following the process usually leaves some type of “paper” trail that can be used to determine that the process was followed. The “paper” trail is composed of things like: meeting minutes, measures of the process, audit trails, activity logs, attendance sheets, etc.  These types of process records tell us that the right people, spent the right amount of time doing the right things to create the work product.

Work Product Creation
All organizations are in business to create/deliver a product/service. The work products are created by following the process. Work products can be destined for internal or external use, deliverable, or non-deliverable.

Work Product Quality
It is essential that the work products created are fit for use by those for whom they are intended. Essentially there is no purpose in following any process unless it creates a work product that is intended for use by the author(s) or another, now or at some time in the future.  Work product quality is determined by assessing the work product against its requirements: format, content, function, performance, etc. (generally, Verification).  Work product usefullness, or fitness for use in its intended operational environment by its intended users, is determined by those who must use it (generally, Validation).
Process Improvement
Never confuse doing it differently with doing it better. Running away from the old bad process is not the same as moving with intent toward a new and likely better process. The processes we follow ought to result in our being able create/deliver a quality product/service profitably. That means the total cost of creating, following, assuring and improving the processes plus the cost to create/deliver a product/service ought to be less than the revenue the business derives from delivery of the product/service. The data we collect ought to be able prove this. If the data tell us differently, we have a decision to make, do we keep losing money, or do we improve our processes so they drive us to be profitable.

Monday, December 21, 2009

Before you hire a CMMI consultant or SEPG Lead, at least check them out.

I have several clients who are in the process of selecting a CMMI Consultant or SEPG Lead. 

I offered to do a quick check just to get a feel for who was claiming to be a CMMI Expert.  I didn't do much:

I tried to add one of the candidates to an open appraisal, and I couldn't; it seems that they had some internal CMMI training but had never taken the formal class. 

I looked to see if another was an authorized/certified provider of anything and no luck there either.

Then I did the simplest thing of all, I googled them, and believe it or not, when I googled "firstname lastname CMMI", no results came up.  I thought you could google any three words and something would come up, or you win some type of prize.

There are a number of other simple credential checks that can also be done. Although no guarantee of finding a good consultant, at least you have a better chance.

Before you go through all the trouble of seeing if there is a fit for your business context, culture, project domain, etc. there are some very simple things you can do to thin the herd.  I highly recommend it.

Wednesday, December 16, 2009

Can CMMI, Lean, TOC, 6 Sigma, and Agile Play Together – They Better

There’s been a lot of chatter in the blogosphere lately about various different models, methods, and tools; and, not unsurprisingly about which one is best. It’s not a zero sum game; there can be more than one winner. In fact, if you adopt the best attributes of all of them, you’ll certainly be better off for it.

CMMI presents a set of industry agreed to best practices. If you develop your own company’s best practices for the management and development of projects, and then map them to the CMMI with an eye toward addressing the CMMI best practices, you can’t really go wrong.

Lean is based foundationally on the Toyota Production System, and is a combination of methodology and tools that seeks to improve the flow of work products through the system, while at the same time eliminating the many causes of waste inherent in any system. By mapping the as executed processes, you can determine if there are any wasted steps, motions, meetings, etc. The improvement of flow and the elimination of waste can not help but improve the efficiency of your business.

Theory of Constraints is based on the premise that there are constraints or bottlenecks in any system. To the extent that you can successfully mitigate the effect of the constraint on the system, your organization’s throughput will increase.

6 Sigma is a statistically based tool that seeks to identify and analyze the causes of process variation so they can be reduced or eliminated. Variation causes risk to the success of your project, because variation means that your predictions are only accurate to within the limits of the variation. To mitigate the risk you must allocate contingency buffers to ensure that your degree of uncertainty is covered by the additional set asides, which then can not be used for other purposes.

Agile is a project management methodology that builds foundationally on Lean and 6 Sigma; with its most obvious characteristics being frequent face to face meetings of the stakeholders to ensure the latest plan/iteration pair is on track; and, decomposing large projects into small timeboxes, iterations, sprints depending on your terminological preferences, so you can’t go too far astray before the next meeting to sync up on progress.

Nowhere in any of them does it say if you use one you may NOT use the other.

Thursday, December 10, 2009

Institutionalization - It’s Not Just Another 20 Letter Word

Institutionalization – It’s just the way we do it here, Maturity Level by Maturity Level.
  • Initial/Performed (ML1/CL1) – The work is done, the work products are produced, the Goals are satisfied. You have smart people doing good stuff.
  • Managed (ML2) – The work is done according to a plan, the people are available and skilled/trained, adequate resources are assigned/acquired, identified work products are created, stored, evaluated and ultimately delivered, the work is monitored and controlled, and senior management takes an interest in the project throughout its lifecycle. ML2 is focused at the project level – Similar projects may do similar things dis-similarly.
  • Defined (ML3) – All of the above, and there are documented characteristics and attributes that process descriptions possess: Purpose, Roles, Inputs and Entry Criteria, Process Steps, Outputs and Exit Criteria, Measures, Verification Steps, Job Aids (templates, fill-in guides, samples, tools, training, etc.). ML3 is focused at the organization level – Similar projects do similar things similarly, with allowable tailoring for the specific needs of projects.
Institutionalization is not how long the processes have been documented, but rather how ingrained into the organization’s operational methodology.

Institutionalization is codified in the CMMI’s Generic Practices. No matter how many smart people you have doing good stuff (Specific Practices), unless you Institutionalize (embrace the Generic Practices) you’ll never be other than ML1/CL1.

The Generic Practices of the CMMI lead to institutionalization of the following concepts.

Policy
  • It is not enough for senior management to just talk about process
  • Senior management must be continuous, visible, advocates for doing it the right way
  • If senior management does not get out in front of the process improvement initiative, people will soon figure out that it is not that important and it will fall by the wayside until the next new best thing comes along; it migh be perceived as the flavor of the month phenomenon we see in organizations that are struggling for a magical solution
Planing
  • Who (actor and role)
  • What (what the project is to accomplish)
  • How (the process steps for converting the project's inputs into outputs)
  • When (schedule)
  • How Well (objective quality standards and measures)
  • Where (do they stage their intermediate and final work products)
  • With What (samples, tools, checklists, guidelines, etc.)
  • Where (do they get help)
Resources
  • People (empowered, trained, available)
  • Tools (hardware, software, job aids)
  • Environments (proper working spaces, labs, etc.)
Training
  • Availability is not a skill (process training and appropriate skills are needed)
  • Organizational (what process training is the responsibility of the organization)
  • Home Organization (what specific skills training is ones home organization responsible for)
  • Project Training (new tools or processes that are for the primary benefit of the project)
  • Individual (what must the individual do to make themselves a valuable, contributing member of the company)
Configuration Management

  • All work products ought to be placed under some level of control
  • Changes must be authorized
  • Changes must be controlled
  • Audits must be performed to ensure the documentation matches the work products, which may be documents themselves
Teamwork
  • All work is accomplished by teams
  • Teams must be managed to effectively develop the synergy that makes teams more powerful than the sum of their parts
  • Teams must be empowered and authorized to do what they are tasked to do
Measure

  • Without developing a quantitative understanding of project status it is difficult to determine if a project is on track
  • Without developing a quantitative understanding of what your processes are doing for you, it is easy to fool yourself into thinking process change is the same as process improvement 
  • Measures may be both qualitative and quantitative
Control
  • Project and senior management must effectively steer the project according to the data they are collecting, both qualitative and quantitative data should be used
  • When the data indicate the current state is significantly different from the predicted or desired state, the project manager must take control
  • Typically the project manager may change the staffing, scoping, or scheduling
 Process Assurance

  • The CMMI focuses on process improvement as the basis for improving the results of projects
  • It is, therefore, essential that the processes are executed as documented.
  • If a different process is followed each time, it is impossible to gather data on how following the process is really helping you
Product Quality

  • It is not enough just to follow the processes, it is also essential that following the processes enables you to do better work
Status

  •  Gathering data from multiple sources allows a project manager to develop a composite picture of the project that can be viewed from many vantage points
  • This multiple view picture gives the project manager a better understanding of the project and the ability to make projections about its future
Standardization
  • Following standards allows the project to do the same things the same way over and over again.
  • This repeatability permits the projects and organization to develop data over a period of time that allows for prediction of future similar projects
Improvement
  • Using the collected data collected over a period of time allows the organization to improve their processes to ensure the best possible process is being used for each project in the present and for the future


Tuesday, December 8, 2009

The CMMI Appraisal Waiting Game

In my discussions with software managers and practitioners I often hear, “We’re just getting started with process improvement; or, we’re not ready for the CMMI yet; or, we don’t need an appraisal to know we’re at level 1.” These are all valid issues; however, there are several reasons to consider having an appraisal early on in the process improvement effort:
  • Being aware of weaknesses within the organization isn’t always enough to start generating corrective action,
  • Just knowing the “score” for your organization is not enough to effectively direct the process improvement efforts at the highest priority problems, and
  • The organization, although staffed with experienced and skilled people, may not have sufficiently detailed knowledge of the model to effectively interpret and use it. 
It’s not coincidental that a CMMI based process improvement effort is often referred to as a journey. To make an effective start on the road to process improvement it’s essential to know several things:
  • Where you’re starting from,
  • Where you’re heading to,
  • How great a distance is to be traveled,
  • How much time the journey should take,
  • What useful things might be discovered along the way, and
  • What route to take?
An up front look at the current state of the organization can help you create a map for the upcoming journey. The first step in creating your map is through a relatively quick and informal appraisal of the organization level and project level processes, activities and deliverables.

An informal appraisal provides much more than just a score; it’s an effective diagnostic and intervention tool for taking the process pulse of the organization. The major benefits of an informal appraisal are to:
  • Support, enable and encourage an organization wide commitment to the software process improvement effort,
  • Initiate a collaborative effort among the members of a group who may not have an opportunity to work closely together before. This is NOT something being done TO anyone, it is being done BY us FOR us,
  • Develop an accurate consensus opinion as to the strengths and weaknesses of the organization’s processes and process adherence (What our processes tell us to do, what we say we do, what we can prove we do) all with respect to a reference model, the CMMI, and
  • Create a public demonstration of commitment by upper management, and show the depth of awareness of the problems by the members of the organization. 
In my experience as both an internal and external process improvement team member, it takes an external catalyst to reach a broad enough segment of the organization to attain critical mass and create a self-sustaining effort.

Why can’t we just knuckle down, charge harder, or put our noses to the grindstone, just like we’ve always done in the past?

We could, but we’d still just be doing the same things in the same ways all over again.

As an example, NO project manager in recorded history has EVER said, “Hmmmm, I think I’ll just repeat all the mistakes of my predecessors, that’s the ticket!!” Statistics abound, but essentially, software projects are late, exceed the budget and fail to meet all of the customer’s expectations.

If you always do what you always did, you’ll always get what you always got.  I vote for trying something new.

Friday, December 4, 2009

The CMMI IS Right for You; However . . .

As more organizations adopt the CMMI, the breadth of adopters is moving from large DoD/Aerospace companies to more midsize and smaller organizations in a much wider variety of market sectors. Additionally, these adopters from different market sectors don’t all have the same safety-of-life critical applications that the original DoD/Aerospace folks had.

This begs the question; if I’m not a large organization with safety-of-life critical applications, how can I best use the CMMI without overly burdening my organization with many potentially great but often unnecessarily cumbersome practices, or rearchitecting my entire process set?

Finally, some common sense solutions.

Follow the Intent of the Model.  You don’t have to re-architect your entire process set to comply with the CMMI, nor do you have to adopt CMMI specific language. In fact, you can be CMMI compliant without even knowing the CMMI exists (not likely, but possible). If you’re running your software business as a business, you’ve probably got most of the basics covered already. Your challenge is to: map your processes onto the CMMI to ensure you’ve addressed all the best practices, create or enhance processes where they are missing or weak, implement those new or newly enhanced processes, and follow them long enough to demonstrate that they are working better than the previous ones.

Go Slowly. We know you’ve got the task of achieving CMMI MLX by Tuesday, regardless of what all the industry data show. The SEI is beginning to take a very serious look at organizations that show Maturity Level Progress that is out of alignment with what the statistics show as a reasonable time to improve. Go Slowly. Conduct a baseline appraisal to show what your real starting point is. Plot a path from that point to your target. Defend the plan as reasonable, based on the available data.

Start Small. Don’t bite of more than you can chew. People, in general, fear the unknown, and are resistant to change. Carefully explain what your are attempting and why you are attempting it.  Don't overburden them with too many new ideas at once. We frequently find that the most successful strategy is to start off with only a couple of improvements. I like to tackle the most significant challenge, and an easy challenge. The most significant challenge must be addressed due to its potential for great positive impact. The easy challenge will demonstrate the validity of process improvement at making things better, and it will typically do so, quickly.

Run the Process Improvement Initiative as a Project. The Process Improvement Project needs Sponsorship, Support, a Plan, Resources, Schedules, Deliverables, Quality Checkpoints, Measures, etc. just like any other project. To not give it the benefit of all of these project characteristics, is to all but doom it to failure.

Availability is NOT a skill. If you are considering allocating 5% - 7% (typical) of your software development budget to achieving CMMI compliance to be both more successful, and to be able to bid on future work, don’t just take whoever is available on the bench to staff this activity. Software Process Engineering is a discipline with required skills and qualifications just like any other engineering discipline. The biggest challenge in software process improvement projects is that it is a people challenge in a technical environment. Make sure the resources assigned have both the technical and soft skills required to make the project a success.