Previous column

Next article


Community

John D. McGregor, Clemson University and Luminary Software LLC, U.S.A.

space COLUMN

PDF Icon
PDF Version

Abstract

The object community is just one of many professional communities, groups that share a common interest. Conferences, forums, working groups, wikis, FAQs and other techniques let us share our knowledge and get answers to our questions from people with similar problems and goals. In this month’s issue of Strategic Software Engineering, I will explore how communities contribute to achieving the strategic objectives of an organization.


1 INTRODUCTION

I had a great time at OOPSLA1 this year. There was more energy than in any of the years since the “bubble” burst. We celebrated the tenth anniversary of the publication of the Gang of Four’s design patterns book [Gamma, 95]. OOPSLA is the annual gathering of the “object community”. I see people there that I do not see at any other time of the year, and others that I see or correspond with quite regularly. This is my community.

Community has a nice ring to it. It gives you a feeling of belonging, of being cared for. The term is used often in our business to describe a group of individuals with similar interests, similar characteristics, and in many cases, similar goals. Sometimes a community’s name is used as a shorthand to communicate a point of view: “The real-time perspective is …”

One of the reasons for the increased energy at OOPSLA this year was that the Generative Programming and Component Engineering conference (GPCE) was co-located with OOPSLA. This is a community that has had a few innovative members for several years, and is now experiencing the rapid influx of early adopters. It is invigorating to see the enthusiasm of a “new” community, or at least the enthusiasm of new members of a community.

So what is the role of community in the strategic goals of a software-intensive company? How does this group, most of whom don’t work for the same employer, contribute to our success? That is what I want to explore in this column. First, I will consider the role of communities in software engineering and then the roles of community members. Then I will address some qualities of a healthy community. Finally I will consider how communities contribute to our achievement of strategic goals.

2 ROLE OF COMMUNITY IN SOFTWARE ENGINEERING

Software engineering is a rapidly changing domain that still has much maturing to do. Communities within the discipline contribute to that maturation. Communities organize the activities that move a portion of a domain forward. Informal workshops held at conferences give new communities an incubator in which to find their voices allowing them to bring new ideas forward. Often these workshops mature into full-fledged conferences that allow the research branch of a community to attract interested industry members.

I have been a member of numerous conference committees over the years. We spend a large number of volunteer hours planning a range of activities, scheduled during the conference, that will involve as many members of the community as possible. But we also include techniques such as Birds of a Feather sessions that let the members of the community go in their own direction. Some conferences also incorporate active participation activities such as design competitions.

Communities support professional activities. Government funding agencies solicit reviewers from the communities represented in the proposals. So do journals. Standards working groups draw on the expertise of the communities affected by the proposed standard. Geographically-determined communities, such as Agile Denver [Agile 04], provide a gathering place for people to improve technical skills, and to learn from one another.

Communities may be informal, such as those that grow out of a workshop, or they may be more formal, such as consortia for which membership dues are required. The Object Management Group (OMG) has made many contributions to the computing landscape, for example the Common Object Request Broker Architecture (CORBA), as have a number of other similar groups. A consortium is usually successful if the issues around which the organization is founded are sufficiently broad to interest enough members, or are of such high business value to justify higher dues from fewer members, to generate sufficient income.

The Association for Computing Machinery (ACM) and the IEEE Computer Society (CS) provide umbrellas under which many of these communities form. These very large organizations perform a “load balancing” function by sustaining new communities until the communities are self-sufficient. These high-level communities also support activities that cut across a number of smaller sub-communities, such as undergraduate model curricula for computer science, computer information systems, and software engineering bachelor degrees [ACM 04a].

3 ROLES OF COMMUNITY MEMBERS

Community members have a responsibility to contribute to the community, just as they receive from the community. It is easy to decline requests to review papers or to moderate a forum, but most communities could not provide services to their members without volunteer help. Companies that take the long-view recognize the value of supporting the efforts of their employees in support of their technical communities.
Community members provide specialized expertise to the software engineering profession. Each community provides a piece of the overall puzzle. Organizations such as the ACM or the CS can inform legislators and policy makers because they can call on members of the appropriate communities. See [ACM 04b] for a list of activities of ACM’s US Public Policy Committee including congressional testimony regarding computer security.
Community members nurture new ideas. I have been fortunate enough to be a relatively early member of the software product lines community. The members of that community have brought differing perspectives from other communities forming a unique blend of technical and managerial view points. Our community works on issues ranging from design issues to economic modeling. What members of the community have in common is an interest in the effective, efficient production of software-intensive products.
Some cautions about community are also in order.
• Companies must not substitute community for good product support. I recently read the “documentation” for a product that was five pages long and ended with “post a query to our user online forum if you need further help.” While good help can be obtained from forums, it is not their responsibility to make up for a company that does not provide adequate resources.
• New members to a community have a responsibility to search the literature of the community or pay for basic tutorials before asking members of a community for help. Occasionally on unmoderated forums and bulletin boards queries appear that reflect the laziness of the person doing the posting. When you are new to a community, you must become acclimated before expending the community’s resources on obvious queries.
• Members need to have reasonable expectations about the return they will get on their investment in a community. SourceForge has many projects that fizzled out before they reached critical mass. The early entrants put forth effort that was not rewarded by a completed product. Late issues of newsletters from SIGs often are caused by the volunteer editor becoming overwhelmed with the demands of the “day job.” All of us belong to multiple communities. Some have higher priorities than others, and on occasion commitments may not be honored to one community because of other obligations.

4 QUALITIES OF COMMUNITIES

I ran across a list of design rules for Wikis on the Design Patterns Wiki [wiki 04], and some of them are good descriptors of healthy communities in general.

  • Open – A community should be open to participation from as wide a group as possible. (That is not to say that the community can’t have standards to which participants must adhere, nor that the community can’t have a reasonably well-defined scope.) At OOPSLA for many years, Ralph Johnson and others offered a session on how to write a paper that would meet the object community’s standards for presentation at OOPSLA. There is still an introductory level tutorial on object technology to help newbies enter the community.
  • Organic – A community must evolve. I have watched many professional communities become controlled by a small group who attempt to stifle evolution to maintain their control. The result is almost always a new, separate community. OOPSLA has spawned the aspect-oriented and agile development communities.
  • Observable – A community must be observable so that prospective members can decide whether the group is for them. Many communities sponsor publications, or special issues of existing publications, and publish conference proceedings that display some of the work in the scope of the community. JOT enhances the visibility of the object community as does OOPSLA.
  • Relevant – The community must address issues that are useful. One Wiki initiator complained that few people used his wiki. The response, on the Design Patterns wiki, was that if the information is useful people will join in, and if it is not, they won’t. Relevance is subjective. Members of the academic research community will judge relevance differently from members of the industrial community. I will not attempt to give examples of relevant and non-relevant communities, I will leave that to each reader.

Communities evolve over time. One way to evaluate the maturity of a technical community is to use the innovation adoption scale by [Rogers 95]: innovators, early adoptors, early majority, late majority, and laggards. A community is formed by a few innovators. They invent and evangelize to gain market share for their ideas, and as a by-product, gain members for the community. From my perspective, a community becomes viable, i.e. profitable, when it crosses the “chasm” and attracts the early majority members.

We have experienced this recently in the software product lines community. Crossing the chasm brings both a qualitative and quantitative change to the community. Yes, there are more members in the community, but they are also different from the early members. They want to apply the community’s knowledge, rather than contribute to its creation. But they are a valuable source of feedback for those who are refining and extending the community’s knowledge base.

5 CONTRIBUTIONS OF COMMUNITY

Now to tackle the main issue: How can communities help achieve strategic goals?

  • Communities enable faster time-to-market by providing portions of products. The open source movement has made it possible to obtain some portion of applications ready made. While traditional open source provides source code, communities sometimes provide standard architectures such as OMG’s CORBA and standard designs such as the design patterns community. Eclipse is a good example of an open source framework that provides a compete, but extensible, IDE and allows a tool company to greatly reduce time to market. Companies such as Borland [Borland 04], Omondo [Omondo 04], and many others offer their products as Eclipse plug-ins. They can address the needs of an established user community, focus on the value they wish to add, and do it all without investing in the infrastructure necessary for a tool.
  • Communities enable increases in productivity by facilitating innovation. Communities speed the standardization of techniques and processes. Communities provide a context in which design patterns are readily identified and exploited. The object community has produced an extensive literature of design patterns that are applicable to various types of object technology projects. Likewise, the real-time community has produced design patterns that guide developers working on this class of system. An identifiable community is a more attractive target for tool vendors who provide productivity enhancing tools. The community that has developed around the J2EE architecture that has spawned a number of products, such as Struts Studio [Exadel 04]. The Eclipse community has produced the #1 integrated development environment for Java development and continues to evolve the tool.
  • Communities support agility in responding to changing markets by accelerating new technology adoption. Communities promote a free flow of information and encourage wide participation. IFIP working groups and ISO standards committees provide opportunities for companies to participate in those areas of strategic importance to them. Even proprietary consortia such as the OMG release much of their work product to the public to promote adoption of common standards and to attract new members. Access to the latest work products from a wide range of communities allows architects and designers to consider the latest innovations.
  • Communities enable a company to gain market share by helping identify niche markets. As communities generate sub-communities or spin-off new communities, observers can identify specific opportunities. Niche markets come from “variation points” in the interests within the community. Community discussion groups give companies the opportunity to test whether experimental ideas will be favorably received by the intended audience.
  • Communities can support a company’s efforts at mass customization. Communities contribute to the development of classification schemes, taxonomies, and architectures that define options for choices in features for products. These in turn result in variation points that support customization of generic products to specific customer needs. The OMG’s Common Request Broker Architecture (CORBA) introduced one level of customization in products [OMG 04].

A healthy development organization needs to be actively involved in those communities that will offer it a strategic advantage. There are several actions that can be taken:

  • An organization should actively, explicitly, and on a continuing basis, identify those communities that are of strategic importance to its mission. These communities may relate to the markets addressed by the organization’s products, or they may relate to the technologies used by the organization to build its products. Including community involvement in business planning is as essential as businesses planning the conventions at which they will have a vendor booth.
  • Managers can encourage participation by making it part of the job. Obviously if the goals of the organization are directly met by community participation, staff members can be assigned to participate. Many consortia have a core group whose employers fund their participation. The value proposition must be very clear and relate to an existing, or planned, line of products. The obvious advantage to an organization is the opportunity to influence the content of an emerging standard, or at least to get timely knowledge about its content.
  • Managers can encourage voluntary participation by recognizing community participation in raise and pomotion evaluations or through bonuses. Even a plaque or a certificate can encourage an already motivated staff person. The ubiquitous tee-shirt encourages through pride of ownership, not because of any monetary value.
  • Staff who are concerned about their own professional growth and about the maturation of the discipline should take the initiative to look for opportunities in the strategic communities. The ACM and the CS both have numerous committees. Their affiliated special interest groups also are run by committees of volunteers. Communities grow from a single idea or a single wiki; it does not have to be a major effort. The focus is on shared interests and good ideas.

McConnell [McConnell 04] talks of building a community of individuals interested in software development. He says that given the current state of software development, one can make the case that such a community does not exist. I believe that such a community does exist, in fact, several exist. Whether they are fully mature and how effective they are compared to communities in other disciplines is a different matter.

Our communities do an incredible job advancing the state of technical knowledge at a rapid rate, and this continues to be a strategic advantage to organizations. Where we seem to be less successful is advancing process knowledge. There are roles for agile processes and heavy-weight processes, but we have not reached a point where the definitions of those roles are widely agreed upon. Each community can present success stories for their approach, and horror stories about other process approaches. But none of the communities can say why they succeeded when they did, nor can they say why the other approaches failed.

The big challenge facing the general software engineering community, and the associated technical sub-communities, is to understand the variables involved in our work such as the relationships among projects and processes. We continue to form consortia to champion techniques, and initiate projects to build tools without fully understanding the basics. Our communities need to contribute to serious inquiry into fundamental relationships, in addition to immediate commercial adventures.

6 CONCLUSIONS

The professional communities that we help to create, and in which we participate, can have strategic impact on our own companies. Increasingly these communities are the incubator of ideas and the source from which many useful artifacts spring. These communities initiate activities that no single company or organization could sustain.

Companies need to analyze and target communities just as they do markets. They should identify opportunities to influence, or anticipate, the directions of markets through the mutual actions of these technical communities. If winning companies are those that have the products customers want when they want them, community participation is one way to ensure success.


Footnotes

1 For those who aren’t familiar with OOPSLA, this is the Object-Oriented Programming, Systems, Languages, and Applications conference sponsored by ACM’s SIGPLAN in cooperation with SIGSOFT. See oopsla.org for more details.

 

REFERENCES

[ACM 04a] Association for Computing Machinery, http://www.acm.org/education/curricula.html, 2004.

[ACM 04b] Association for Computing Machinery, http://203.162.7.79/webs/comsci/ACMComputingSurveys/www.acm.org/usacm/, 2004.

[Agile 04] Agile Denver, http://www.xpdenver.org/index.php, 2004.

[Borland 04] Borland, http://www.borland.com, 2004.

[Exadel 04] Exadel, http://www.exadel.com/products_strutsstudio.htm, 2004.

[Gamma 95] Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns, Addison-Wesley, 1995.

[McConnell 04] Steve McConnell: Professional Software Development, Addison-Wesley, 2004.

[OMG 04] Object Management Group, http://www.omg.org/technology/documents/formal/corba_iiop.htm, 2004.

[Omondo 04] Omondo, http://www.omondo.com/, 2004.

[Rogers 95] Everett M. Rogers: Diffusion of Innovations, 4th Edition, New York,: The Free Press, 1995.

[Wiki 04] http://c2.com/cgi/wiki, 2004.

 

 

About the author

Dr. John D. McGregor is an associate professor of computer science at Clemson University and a partner in Luminary Software, a software engineering consulting firm. His research interests are software product lines and component-base software engineering. His latest book is A Practical Guide to Testing Object-Oriented Software (Addison-Wesley 2001). Contact him at johnmc@lumsoft.com.


Cite this column as follows: John D. McGregor: “Community”, in Journal of Object Technology, vol. 4, no. 1, January-February 2005, pp. 59-66. http://www.jot.fm/issues/issue_2005_01/column5


Previous column

Next column