STISE

Systems Thinking in Software Engineering

 

A website designed to advance Systems Thinking as a valuable discipline in the state of the practice for managing, conducting, supporting and improving software engineering activities.

» Homepage

STISE Links

 

Copyright © 2008 STISE

Last Updated: 07.08.2008

Systems Thinking

Overview

- 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.

  1. 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.
  2. 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).
  3. 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.
  4. 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.
  5. 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.
  6. 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.

  1. 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.
  2. 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.
  3. 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:

News & Events

The second of our STISE Newsletter is now available! Click here to get it, and to find out how to subscribe!

NEW BOOK! Discovering System Dynamics in Software Engineering, by Jim Hart is now available. Click here to find out more about the book, or go to Amazon.com directly to purchase it!

STISE Sponsors: