Soft issues and other hard problems in software development

OOPSLA'96 Panel Proposal #243

Abstract

The key to making object technology work isn't technology. So what is it? This panel will cover a lot of the "soft" issues about dealing with people and teams. It's partly about managing software development, and mostly about doing it.

Format:

The panel will start with short position statements from each panelist. A number of questions (probably four), announced to the panelists in advance, will be discussed in turn by each panelist. This will take roughly half the time allotted. The remaining time will be spent answering audience questions, and allowing brief comments from the audience. The moderator will either take questions from audience members at fixed microphones, or will roam through the audience with a wireless microphone. The panel will conclude with brief closing remarks by the panelists.

To keep the panel and (especially!) the participating audience members from dragging, everything will be timed. Proposed time limits:

Time not used will not accumulate in any way (except for general use by the panel, favoring more audience participation). The moderator will use cards to indicate when thirty seconds, five seconds, and no time remains. The moderator will enforce all time limits strictly. Technical means to enforce these limits will be considered, but will not be necessary.

As at prior OOPSLA panels, panelists will be provided with green, yellow, and red cards. These cards will be used to provide non-verbal (and non-interrupting) feedback on what panelist and audience members are saying.

All of these combinations have been observed at other OOPSLA panels, and seem to work well.

The moderator suggests, but will not insist, the entire panel take place without slides or viewgraphs.

Panelists:

Ward Cunningham
Ward Cunningham is a founder of Cunningham & Cunningham, Inc. Ward has served as a Principal in the IBM Consulting Group and as Director of R&D at Wyatt Software where he architected the WyCash portfolio management system. He developed the Foundation graphical framework while with Knowledge Systems Corp. Ward has also conducted research in object-oriented programming, computer aided design and man-machine interfaces as a Principal Engineer in the Tektronix Computer Research Laboratory. Ward received his Masters in Computer Science from Purdue University.

Ward is well known for his contributions to the developing practice of object-oriented programming. Ward created the CRC design method which helps programming teams find the objects that make the foundations for their programs. Ward has written on CRC and related topics in JOOP, OOPSLA and HOOPLA publications.

Luke Hohmann
Luke Hohmann is the Education Technical Director of ObjectSpace, Inc., a Dallas-based consulting firm providing object-oriented software and services. A high-energy, bi-lingual instructor (he speaks both Smalltalk and C++), his classes are in great demand. He's the author of Journey of the Software Professional: A Sociology of Software Development, a forthcoming book from Prentice-Hall on structure and process in organizations.
Norman Kerth
Norman Kerth has his own consulting firm, Elite Systems, which deals with technical, methodological, and "human" issues in software development. He's has formally studied "people systems" and is a member of the Weinberg and Weinberg faculty. Like Ward, Norm has been a member of the patterns community since its earliest days, and has attended every OOPSLA conference. He ran a birds-of-a-feather discussion about "The People Side of Object-Oriented Technologies" at OOPSLA '95, and is the lead organizer of a workshop on that topic at this year's OOPSLA.

Position Statements

Ward Cunningham:
A competitive market places extreme demands on software development teams and the products they produce. Under time to market pressure a just acceptable product developed quickly will be preferred to an excellent product produced slowly. Invisible attributes of a product, such as its software architecture, are often the most compromised in the name of acquired market share. However, market share brings its own set of problems. The once satisfactory architecture of a successful product will often crumble under the weight of continuous revision and enhancement. It would seem that the choice is between failing in the race to the market or failing under the pressure of success once in it.

It is my position that small teams using an evolutionary development method in a pure object-oriented environment have the best chance of walking this tightrope. Each one of these factors, team, method and environment, can be adjusted and studied in isolation. However, when we consider the whole of the software development system we find debatable decisions for one factor can create surprising efficiencies for another. Using the terminology of patterns we would say that competitive forces, when resolved, expose unique patterns of lesser forces, which have solutions which might not have occurred in isolation. I have assembled a network of forty patterns of competitive development and studied the interactions between them. Competitive developers will find the particular patterns useful while organizational theorists might benefit most from adopting the pattern form.

Luke Hohmann:
What's that? You said you adopted OT but the software was still delivered late, over-budget, and with more errors than expected? Certainly you were able to recoup your investment with the plethora of high-quality reusable components (models, classes, objects) that were created. No? You're not certain of the reusability of any of the components? And you don't think OT is all that great anyway?

Maybe the problem isn't the technology: OT has been around for quite some time, and there are real benefits associated with it. And maybe it isn't the developers: most developers want to do a good job, building the best system they can. And maybe it isn't even the managers: like developers, managers also want to do a good job, satisfying the needs of their employees while meeting (and exceeding) the expectations of their customers.

OK, where's the problem? That is, if the problem isn't the technology or the people, then where is it? The answer lies in the structures, processes, and outcomes that are associated with any human endeavor. Briefly, outcomes are the things produced. In software, they can be data models, source code, requirements documents, meeting notes, and so forth. Processes are the means by which we create outcomes. Structure ties everything together by prescribing a preferred process and defining the form and content of outcomes.

All human activity takes place in the context of structure. Language provides the structure necessary for communication. Our highway system provides the structure needed for transportation. The right structure enables a process that produces appropriate outcomes. A poor structure inhibits process and produces outcomes (systems) that don't work, are delivered late, and produce few (if any) reusable components.

In software development, methods provide one kind of structure. By following the processes defined in the method, we produce outcomes that enable us to build the right kind of system. But we need more than just methods. We need organizational structures that support developers working in OT. We need to keep the structure of reviews (you do engage in reviews, don't you?) but change the process and outcomes associated with reviews. We need to provide the structures that support the processes of reuse. We need to provide effective, useful training that teaches which outcomes are appropriate, the best processes to use when creating them, and the structures that are needed to support both the transition and the ongoing efforts of the organization. Such training touches everyone in the organization, from developers (who often focus on the wrong outcome) to managers (who aren't taught which structures and processes make sense for their environment). Without such training (itself a structure, process, and outcome) successfully adopting the new paradigm becomes extraordinarily difficult.

The "soft" issues of software development are inextricably bound to the structures, processes, and outcomes of the organization. By building an understanding of these elements, we can engineer them to enable ourselves and our developers to create truly effective systems.

Norman Kerth:
"Soft issues" is not really the right phrase. A better phrase is "hard issues" or the difficult issues. It is about working with people, working in teams, dealing with emotions, striving for accurate and honest communications, etc. These topics are more complex than anything else we have to discuss in computers, and these topics are more likely to contribute to the success or failure of a project, than any thing technical.

The reason we have not had much discussion on this most difficult part of developing software is speakers can't do justice to this topic in just a couple of paragraphs. In fact, the topic is so interesting and vast, that I think it can become a study of a lifetime.

One of the many issues we could look at is "what happens to a professional when he/she has to give up well practiced problems skills, to learn new ones which offer the vague promise of a `better way of developing software.'" We see this situation frequently during the transition to objects.

These skills are used in our livelihood and often contribute to our identity. Thus these skills are very important, and not set aside easily. They certainly are not without given up without experiencing a range of emotions:

These are only a few of the kinds of emotions that someone might experience while mastering objects. There is also joy of learning, satisfaction of mastery, and the excitement of discovery.

The point here is that experiencing negative emotions is part of the process of learning about objects. In many of our work environments, we don't believe that we have the freedom to express such emotions -- instead they remain inside us, either to do damage or to sneak out in some more obscure and ineffective form of behavior.

I think it is crucial to install into your culture, the Four Freedoms of an Empowering Environment as you begin a transition to objects. These freedoms include:

  1. The freedom to speak about what you really see and think rather than accept the vision of others -- not only about objects but also about the project, its goals, the management process, etc.;
  2. The freedom to ask about puzzles -- not just about objects, but also architecture, other folks' work, management decisions, unsupportive methodologies, etc.;
  3. The freedom to talk about what ever is coming up for you. This is about acknowledging that you have feelings around the struggle to master objects -- the positive as well as the negative emotions;
  4. The freedom to say "I don't think I can exercise one of my freedoms because ...". Because people aren't perfect, a work environment may not always safe to exercise these natural human freedoms. This freedom provides for the active maintenance of such a healthy environment.

If you can't establish these freedoms within your work environment as you ready to move to objects, then I recommend that the transition to objects be delayed. The Four Freedoms are a subtle but key foundation to the success of your transition to objects, and when missing, the probability of object-oriented project failure is very high.

Moderator

Paul S. R. Chisholm

Panel Contact Info:

Paul S. R. Chisholm
AT&T
room LZ 1D-208
307 Middletown-Lincroft Rd.
Lincroft, NJ  07738-1526
USA
office: 908-576-3252
FAX: 908-576-6406
e-mail:  psrc@cmprime.att.com