About Terrapin Technologies
Terrapin's Services
Terrapin's Products
Terrapin's Professional Credentials
Frequently Asked Questions
Articles of Interest
How to Contact Terrapin
Home
What Makes A Software Company?
The Information Technology Gap
Software Myths
   
Articles
What Makes A Software Company?
 
 
 

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.

 

 
     
     
This page last updated on 03/19/2003. All material Copyright © Terrapin Technologies, Inc. unless otherwise noted.