| I was sitting in
a meeting where the CEO of a company declared that his company was
going to become "a software company." The first
thing that came to my mind was a quote from Roger S. Pressman's
book A Manager's Guide to Software Engineering. In
the opening paragraphs of this book, Dr. Pressman boldly asserts
that all companies that rely on software to conduct business are
software companies, even if they don't produce any software products.
By this definition, the company already was a software company.
Indeed, the company would be considered a software company even
under more strict definitions. The company has a large software
development staff. It makes substantial investments in software
research and development. In fact, the company already has software
products deployed at customer sites. What is left?
In this particular case, the CEO was referring to his goal that
Wall-Street investors come to categorize the company as a software
company. This has not yet happened. Too much of the
company's revenue comes from its traditional revenue-generating
activities.
I suspect that the company will attain the CEO's goal of being
categorized by Wall Street as a software company, but I still ask
myself: Is this sufficient? What makes a software company?
In the book Intellectual Capital: The New Wealth of Organizations,
Thomas A. Stewart identifies 1991 as "year one of the Information
Age." He reports that 1991 was the first year that capital
spending on information technologies surpassed capital spending
on industrial technologies in the United States. The spending gap
continues to grow wider, notable evidence that this is the Information
Age.
Not only is software one of the key elements of intellectual capital,
but it is the fundamental means by which intellectual capital is
managed. Due to the inseparable relationship between software
and intellectual capital, every company that wishes to compete in
the Information Age must become a software company. There
is no alternative. The currency of the newly emerging global
economy is information. This new currency requires appropriate
tools for its management. The mature processes that have been
established for the management of financial assets are not suitable
for the management of intellectual assets.
A reliance on investor confidence in a company as a software company
is not only insufficient, but inappropriate. This type of
outside validation has no reliable mechanism for the direct monitoring
of the key indicators of success in the management of software and
other intellectual assets. The quarterly financial targets
upon which investors place their confidence are far too indirect
to be useful. In fact, I have observed that a company that
focuses solely on quarterly financial targets often fails to sustain
the commitment required to develop and improve the capability to
manage software and intellectual assets. Such an endeavor
typically requires the disciplined implementation of a multi-year
plan.
To further explore the question of what makes a software company,
it will help to recall the context with which we started:
the declaration of a CEO that his company was going to become a
software company. The implication of this declaration is that
the company must transform itself into something that it is not.
I have reduced this to two broad topics for the remainder of this
article. First is the goal or target of the transformation.
Second is the process of transformation.
As a software professional, I have given much thought to identifying
the key attributes of a software company. The attributes presented
here do not comprise a comprehensive list, but represent some points
that I consider worthy of emphasis. I believe that these are
areas that promise the greatest return on investment. An organization
looking to improve its ability to develop and manage software should
begin its quest with an assessment of these five attributes.
- Requirements Management
- Change and Configuration Management
- Effective Communications Among Development Team Members
- Appropriate Defined Processes
- Reviews
One of the key attributes of a software company is the ability
to manage requirements. This applies to both development and
operational environments. This begins with an ability to unambiguously
specify individual requirements in a way that results in a requirement
that is testable. This is important because requirements establish
the objectives of development, maintenance and operational activities.
A second key attribute of a software company is the ability to
make well informed decisions regarding changes to any of the software
development artifacts (requirements, documentation, code, etc.),
and manage the evolution of those changes. This requires a
well-defined change-control process, and a configuration management
tool. The change-control process determines how, when and
to what the changes can be applied. The configuration management
tool enables the management of the multiple contexts that result
from changes and intermediate states of the software being developed
or managed.
A third key attribute of a software company is a mature mechanism
for communication among the team members. In this sense, the
team should be broadly defined to include the variety of individuals
that make up the software user community, stake holders, etc.
Large teams require additional emphasis on maintaining an effective
communications mechanism.
Fourth, a software company will maintain and follow a set of defined
processes that serve at least three purposes. The first purpose
is to be the glue that binds the various tools and methods together.
In this role, it is important that the process fits well with both
the computing infrastructure (tools, methods and systems) and the
architecture of the system affected by the process. The second
purpose of process is to act as the current that maintains the momentum
of the organization. This is particularly important in today's
environment that includes a shortage of software professionals that
is characterized by a high rate of employee turnover. The
third purpose of processes is to create well-defined points of coordination
between team members. Defined correctly, the processes serve
a purpose similar to a metronome or conductor in music, or a system
clock in a computer system.
A fifth area that I would like to emphasize is the area of reviews.
It is important that artifacts of the software development and management
process are subject to some form of review. The effective
use of reviews has been demonstrated to be a highly effective, and
in fact, a cost-effective mechanism for improving software quality
and enhancing the manageability of the software development process.
These five areas of emphasis tend to align well with some of the
key process areas of SEI CMM level 2 and 3 organizations.
Requirements management and configuration management are key process
areas of level 2. Process definition, inter-group coordination
and software reviews are key process areas of level 3. These
two levels of the CMM have additional key process areas. It
is important to note that the organizational dynamics of software
development and management are far more complex than this list of
five areas of emphasis suggests. These five areas represent
fundamental software management activities that effective software
organizations must be able to carry out without difficulty.
I have mentioned the SEI CMM, one of several methods of assessing
the capability of a software organization. This being a widely-accepted
assessment tool, I will use the SEI CMM to illustrate the answer
to the question raised by the title of the article. An organization
distinguishes itself as a software organization when it achieves
a capability level of 2 or greater. In order to accomplish
this, the organization will have gained control of some of the fundamental
areas outlined in this article.
This leaves one unanswered question: How does an organization
transform itself into a software company? The answer to this
question in specific terms is beyond the scope of this article.
In fact, there are a large number of paths that will lead an organization
to greater capability in the development and management of software.
I will note a few of the attributes that relate to the ability of
an organization to transform itself into a software-development
organization.
A software company begins with a commitment to learn and employ
the fundamental principles that govern the development and management
of software. This commitment will originate from the highest
levels of the management of the company. If the support does
not exist within the executive management of the company, the barriers
to becoming a software company will likely be too substantial to
overcome. A corporate culture that aligns with these principles
follows, and this becomes the fertile environment in which the maturation
of the processes for management of intellectual capital will occur.
As the processes mature, a climate of teamwork and cooperation emerges.
Anything other than a team orientation challenges the basic nature
of intellectual capital. Substance and objectivity must prevail
over the dominance of personality.
While it is crucial that executive management support the transformation
of the organizations that develop and manage software, there must
be a strong motivation to change on the part of the individuals
that comprise the software organization as well. The way that
they do their work and relate to other team members will be affected
by the transformation. This motivation must endure a sustained
effort over months before any visible results are likely.
Some of the more recalcitrant staff members may need to be reassigned
to areas that are not directly affected by the transformation effort.
This article answers the question: "What makes a software
company?" by describing five fundamental activities that
should be emphasized by software companies. It has also described
some of the ingredients that must be present for a company to be
successful in transforming itself into an organization that is effective
in developing and managing software. No attempt has been made
to discuss the costs and benefits associated with such a transformation.
In summary, there are fundamental activities that should become
the focus of an organization that intends to distinguish itself
as a software organization. Once an initial proficiency in
performing some of these activities or other level 2 or 3 key process
areas has been attained, the company will have distinguished itself
as a player in software development and management.
|