- by Jim D. Hart
Today's
competitive software industry environment:
Today, most software
companies find themselves in a globally competitive and complex
environment. Users and customers of software are more cognizant
of the growing global competition, and more demanding for faster,
cheaper and better software solutions. Interoperability and functional
complexity continue to stress the limits of software development
capabilities. Shelf life of the technologies used in developing
software is now measured in months. It is for these reasons that
the most successful software companies in the next 10 to 20 years
will be those that not only produce quality software solutions,
but also are innovative (integrating vision with creativity) and
agile (integrating speed with purpose). It is no longer what a
software company knows or what it can do that will define success;
it is how fast it can learn.
Knowledge and
process improvement:
| "The
time it takes for a software company today to achieve a CMM(I)
maturity level 2 or 3 is as long, if not longer, than those
who achieved these same maturity levels ten years ago." |
|
|
|
Knowledge and techniques
applied to improving software management and engineering practices
have advanced considerably over the past several decades. During
this period, there has been a proliferation of how-to books and
articles on software quality improvement, vendor-supplied "CMM
level X compliant" software processes and automated tools, courses
and conferences on software process, college-level focus on software
process and engineering, and software process consultants and
assessors. Yet, software companies are still slow in achieving
quality, innovation and agility. The Software Engineering Institute's
semi-annual Process Maturity Profiles of the Software Community
shows that the time it takes for an organization today to achieve
a CMM(I) maturity level 2 or 3 is as long, if not longer than
those who achieved these same maturity levels ten years ago. This
seems to indicate that the techniques mentioned above have had
no measurable effect on the rate at which the software community's
capability is maturing. The reason is that these techniques, as
Stephen Covey describes above, are "social band-aids and aspirin"
that do not address the chronic problems that inhibit learning.
That is, it is our inability to learn (individually and across
the company) that inhibits current software quality and process
improvement efforts.
The need to develop
our learning capacity:
The situation we
face in the software community can best be summarized as follows.
-
Learning,
at all levels, is an essential prerequisite to a software
company's ability to meet the growing demand for innovation,
agility and quality in a globally competitive market.
-
Our ability
to focus on learning at all levels of an organization will
become (if it is not already) the deciding factor in the success
of software companies in the next ten years, even more than
focusing on current business market share, customer satisfaction,
process certifications (e.g., ISO 9001) or process maturity
(e.g., CMM-based).
-
If we are
to improve the quality of learning at all levels in the organization,
then we must consciously and diligently work to identify,
understand and remove these barriers. This process is everyone's
responsibility.
-
While learning
is a natural process for individuals, teams, and organizations,
there are other natural and unnatural barriers (processes)
that act to inhibit or degrade our capacity to learn at all
of these levels.
-
The essence
of these barriers to learning revolves around our current
personal and group mental models of how software companies
should be and are managed in a complex environment of increased
customer product and process demands, growing global competitiveness,
and constantly changing computer-based technologies.
-
The greatest
barrier the software community faces in this transformation
is our inability to think systemically.
| "While
I know that many in the software community have and will continue
to argue against the value of formalizing and improving their
processes, I know of no one that will argue that they are
not interested in learning!" |
|
|
|
While many software
companies have shown marked improvements in the way they manage
and engineer software, nearly all of the changes are superficial
and likely unsustainable because learning is not a central objective
of most improvement efforts. Software processes, especially those
that focus on control, prediction and standardization, will be
inadequate to ensure a software company's success under the rapidly
changing conditions that are now at our doorsteps. We can no longer
expect that current software engineering and management practices,
no matter how effective, will be adequate to meet future software
needs.
It is for this reason
that software companies need to foster an awareness and appreciation
for the value of replacing the existing obsession with software
process maturity (and maturity levels) with a focus on learning
as a basis of continuous performance improvement. That is, while
I know that many in the software community have and will continue
to argue against the value of formalizing and improving their
processes, I know of no one that will argue that they are not
interested in learning!
A new worldview
As we enter a new
millennium, the software community is on the verge of articulating
a new worldview about how to organize more effectively for software
development. In this emerging new world, it is no longer what
a company knows or what it can do that will define its success.
It is the rate at which it can learn. This new worldview is not
just another evolutionary step. It is predicated on new ways of
seeing and thinking about how we interact with ourselves, our
customers and competitors, and how we organize to meet society's
growing demand for innovative quality software. This is the essence
of becoming a learning organization.
From this new worldview,
learning is at the core of how the organization defines itself
rather than defined as a corporate goal or strategy. The results
of embracing this new worldview will bring clarity to how organizations
can simultaneously achieve uncompromising commitment to quality,
the agility to meet changing and ever-increasing customer needs,
and a passion for innovative software solutions.
The concept of the
learning organization has been around for some time. Peter M.
Senge wrote his book about learning organization disciplines (The
Fifth Discipline: The Art & Practice of The Learning Organization)
in 1990. Some have even described in detail how the learning organization
concepts fit with total quality control (TQC) and process improvement.
For example, Daniel H. Kim, in his pamphlet Toward Learning
Organizations: Integrating Total Quality Control and Systems Thinking,
states "TQC is about changing the mental models of management
in order to enhance an organization's capability to determine
its own future." Yet, software companies have been very slow to
adopt these concepts into their existing improvement efforts.
The few software companies I have observed using these concepts
are applying them primarily outside of software process areas
(e.g., marketing and human resource management) or only in experimentation
(e.g., developing dynamic process models).
The Role of Systems
Thinking in the Software Learning Organization
| "Systems
thinking is at the core of the software learning organization
because it promotes a better understanding of how seemingly
disparate problems are truly interrelated, and the role each
of us plays in the system's behavior, its success, and the
problems we experience." |
|
|
|
While there are many
disciplines that are essential to create a software learning organization,
systems thinking is at the core of the learning organization because
it promotes a better understanding
of how seemingly disparate problems are truly interrelated, and
the role each of us plays in the system's behavior, its success,
and the problems we experience.
Without systems thinking, we are trapped in our own inability
to see the whole and therefore, we lose the important interconnectedness
of the other disciplines necessary for learning.
Systems thinking
(its tools, language and mental models) allows us to create a
new view of our software companies, software projects and teams,
because it allows us to look at the different parts as a coherent
whole. And this view is essential in solving most of the perplexing
problems and situations we encounter in these systems today.
In conversations
with those familiar with Senge's book, The Fifth Discipline:
The Art & Practice of The Learning Organization, I have found
(at least) three reasons why there is limited use of systems thinking
in software companies.
-
The most common reason given is that most
people in the software industry do not understand how to apply
these disciplines to software. There are currently very little
systems thinking materials related to software engineering,
management, and quality improvement, and many in the software
community fail to make the connection between the stories
and examples in current literature to their software situations.
-
The existing
process and quality improvement strategies in the software
industry today are based almost exclusively on Capability
Maturity Models (CMMs) and international standards (e.g.,
ISO 9001 and 15504). These improvement models describe normative
end states of successful practices, providing little guidance
on how to achieve these states. As a result, software organizations
focus on the end states, rather than on removing barriers
to learning that impede their ability to achieve these states.
In addition, these models are quality oriented, with little
consideration of agility and innovation as important aspects
of a successful business.
-
It is because
of the very nature of the software business of working with
and programming (i.e., instructing) machines that we are so
heavily influenced by the mechanistic worldview. This worldview
is embedded in our culture. And it is because of this mechanistic
worldview that most do not understand the substantial benefits
gained through developing an organic worldview consist with
learning organization disciplines, especially systems thinking.
These misperceptions lead many in the software community to
think of learning organization disciplines as "touchy-feely"
or lacking a strong scientific basis.
This website attempts
to tackle each of these reasons.
For more about systems
thinking, read more on the following web pages: