Supporting Experience and Information Flow in Software Projects
Several large companies have conducted initiatives for systematic learning from experience in software engineering. In the international Software Experience Center (SEC), for example, five companies exchanged experiences and collaborated in building experience exchange mechanisms to be used within each company. Many insights were gained and lessons were learned over the years, among them: (1) Written and documented experiences are the exception rather than the rule. (2) Although not documented in detail or controlled by a process, experience needs guidance and support in order to reach the designated person or group. The "flow" of experience must be kept in mind. (3) Experience is a delicate material, and any avoidable effort or threshold to participate in systematic experience exploitation may endanger stakeholder participation and success. (4) Tools can effectively be built to support orderly flow of experience, but they must be optimized for cognitive support of their users. These lessons learned from supporting experience exploitation can be applied to software projects more generally: Requirements, rationale, and other information flowing through a software project resemble experience with respect to the above-mentioned characteristics: They are often communicated orally rather than in a document. There are diverse processes and practices designed to channel information flow. Early and vague requirements must be handled with care, and tools need to be optimized to reduce cognitive barriers and thresholds, or they will not be accepted. A focus on information and experience flow takes the above-mentioned lessons into account. Information flows within one project, while experience often cuts across several projects. Requirements of one project are useful only in that same project. Experience in designing a product, however, may be reused in subsequent projects. Information and experience flows need to be modelled explicitly. A simple notation is proposed to capture just the essence of flowing information. What may seem like a subtle shift from processes to flows offers a new perspective: Based on those models, dedicated techniques and tools can be developed for analysing and for improving the flows. A wide range of current trends in software engineering can benefit from a better understanding of --- and support for --- appropriate information flow: Interfaces to the subcontractors, distributed and collaborative teams, Wiki webs, and a variety of new communication channels in global software engineering call for a focus on information flow.