Standards exist for all kinds of reasons. Some of the
reasons are good; others not so much. In many cases, there are multiple
standards that can apply in a given situation and you have to decide which is
the best for you. This article will attempt to describe some of the kinds of
standards that are out there, why a standard should be adopted, and when
adopting a standard is appropriate. I will leave it to the other columnists to
describe individual standards they have found useful as well as suggest reading
the General CM forum threads regarding standards for detailed insights.
What Kinds of Standards Are There?
CM standards are only one of many kinds of standards and are
generally either a Process standard in and of themselves, or part of a more
encompassing Process standard. There are several more generalized standard types,
but the most common two are:
- Process Standards obviously specify
a process. In most of the cases we are concerned with, process standards
are either all-encompassing lifecycle development processes or hierarchies
of related processes, each tailored to a specific niche. There are four
main sources for Process standards:
- Organizations
such as IEEE, ANSI and ISO. These standards tend to span industries, both
commercial and non-commercial and do so by being one-size-fits-all.
- End
Users such as the DOD, FAA, FCC, FDA, Boeing and Sacramento County.
There seems to be a trend here, but that is more due to the nature of the
end users than otherwise. What is important is that if you want to
develop product for these end users, you will use their
standard. They tend to be big enough to say, "Do it my way or don't
bother to bid."
- Academic
standards from such institutions as the SEI. These standards are put
forth from an academic background after much study and refinement.
Initially they tend to be too large or require too much documentation,
but they are good starting points for refinement. It is not uncommon for
individual companies to use an academic standard as a guideline in
creating their own internal standard.
- Internally
developed standards are where each organization takes what they feel is
"a good idea" from other standards and craft something that matches the
way they either currently do business or intend to do business in the
future.
- Documentation Standards specify
what documents are required and/or how the documents should be formatted.
It is not uncommon for Documentation standards to also specify how and
when they are reviewed, by whom they will be reviewed, and what the
approval and distribution procedures are. These standards often specify a
corporate look-and-feel for all internal and/or customer-facing documents.
Which documents are required
could be specified by another standard. Examples of documentation
standards include the MLA (Modern Language Association) Style Guides and
the Chicago Manual of Style.
There are also more specialized standards such as the
following:
- Features Standards specify what
features are required in a product, sometimes down to the look-and-feel
level. Generally associated with GUI development, Features standards also
apply to device drivers, boot scripts, POST diagnostics and other more
esoteric development efforts.
- Interface
Standards specify what interfaces exist and how to use them. Examples
include APIs, database schemas, hardware and public library routines.
Obviously there are two classes represented here: Internal and External.
External interfaces must be documented to a much more detailed level so
that users not familiar with the entity being interfaced to are able to
understand and use the interface. Internal interfaces often have an
implied user understanding of both sides of the interface and tend to be
much less formally documented.
Why Do We Have Standards?
Okay, this seems like a no-brainer; we have standards
because that's the way the world works. The reasons behind this are typical
management responses to past problems. Standards aid in:
- Reducing
risk
- Reducing
confusion
- Increasing
consistency
- Generalizing
data collection and/or reporting
The first three items are standard management practices and
are generally recognized internally. The last item comes about when there is
more than one consumer of metric data. These may be either internal or external
consumers. Internal consumers tend to be above the project or product level
where the data from multiple project/product development efforts are analyzed,
trended, compared, etc. External consumers tend to be Prime Contractors who
need to analyze, trend, compare, etc. data from multiple Subcontractors.
Why Do We Use
Standards?
- They
are required. Standards may be mandated by customers, governmental agencies,
regulatory bodies, etc. In some cases such as ISO-9001, the specific
standards are not specified, just that you must have some standards, abide
by them and document your compliance to them. In other cases, such as DOD
contracts, the specific standards are mandated by the DOD. In the case of
DOD-related subcontracts, the standards are mandated by both the DOD and
the prime contractor.
- The organization
has determined that they need to solve one or more of the problems listed
above. Overall, management likes to reduce risk without incurring costs.
Standards have tended to be implemented so as to do this with a minimum of
cost overhead, though the application of the wrong standard may cause
unacceptable levels of cost, schedule extension and risk.
When Is
Adhering to a Specific Standard Appropriate?
When standards are not required, sometimes it makes since to
adhere to one anyway. The following are some of the more common reasons I have
run across in the past 30 years:
- They
seem like a good idea. Sometimes the decision to adhere to a standard is
because someone in power has done so in the past with good results.
Sometimes is it because no one has done this before and a standard seems
like a good way to give a project a framework that others have found successful in the past. Regardless,
compliance to a standard in this case is not required, so it must seem
like a good idea to someone in a position of power.
- As
mentioned above, when an organization is new to a problem and wants to
minimize risk of failure, management tends to select a Process, a
Methodology, a set of Procedures and, yes, one or more Standards to
follow. Sometimes the correct ones are selected, sometimes a custom set is
created from material found on-line or recommended by consultants and
sometimes the wrong ones are picked because they sound good. This last is
the most risky and it is often near the end of a project when everything
is behind and over budget that it is noticed that the selections cause too
much overhead for little or no return on investment.
Why inappropriate choices are made is more of a psychological discussion
than a technical one, but the simplest reason is that the standard(s)
selected only have a positive ROI on the second or third project to adhere
to them. If you are not going to have multiple iterations, it is easy to
choose something that requires too much boilerplate to be created.
- CYA.
This is more of a personal choice by one or more managers in larger
organizations as a way of deflecting failures. If one adheres to a known
good set of standards, then the failure must be due to either those
downstream (developers not performing to expectations) or upstream (an
unrealistic delivery date was mandated). This is not a good reason, and it
is not one that actually performs the desired function (CYA) from really
savvy top management, but it is all too commonly the reason behind
standards selection.
Conclusion
Organizations are typically bound by more than one standard.
Some standards take in more territory than others. Make sure you know which
one(s) apply to you and what you have to do to prove compliance. If you have a
problem with an existing standard, know the governing body within your
organization to discuss your issues with. Sometimes you can do less without
violating either the letter or sprit of a standard.
If the standard(s) you must follow are mandated and you have
never been exposed to them before, learn everything you can from both published
sources and others who have been adhering to them successfully for years.
If you are trying to create new standards for internal use,
try to use existing public standards as a guide/template and tailor them to
fit. "Make haste slowly" and set expectations according to the number of
iterations you expect it will take to "get it right."
If you are one of those lucky ones who have been adhering to
one or more standards successfully for years, I hope you are contributing to
the various threads in the General CM and PPM forums!
Ben Weatherall is currently based in Fort Worth,
Texas where he practices Practical CM on a daily basis using a
combination of CVS and custom tools to support a modified Agile-SCRUM
development methodology. He is a member of IEEE, ASEE (Association of
Software Engineering Excellence – The SEI’s Dallas based SPIN
Affiliate), NTLUG (North Texas Linux Users Group), and PLUG (Phoenix
Linux Users Group).
Trackback(0)
Comments 
Write comment
 |