Model for the Acquisition and Sharing of Tacit Knowledge in Software Development Teams
5.7 Acquiring and Sharing of Tacit Knowledge in Software Development Teams
In Chapter 3, tacit knowledge was defined at the team and articulated level of abstraction. In Chapter 4 it was argued that tacit knowledge is acquired through social interaction and through the development of a transactive memory system. Learning implies acquiring both tacit and explicit knowledge and in small and medium sized software companies the tacit part is probably the most important (Dyba et al. 2004). In
addition, Chapter 4 outlined the importance of the right culture or climate for the acquisition and sharing of tacit knowledge. This climate is one that embodies psychological safety (Edmondson, 1999).
An insight into how these theories may be applied to the domain of software development is provided by theoretical and empirical studies regarding the agile method approach to developing software. This agile approach provides an understanding as to how tacit knowledge is acquired and shared in software development teams. In addition, other studies in the software development field, investigating concepts related to tacit knowledge, transactive memory and social interaction provide evidence for the manner in which, the concepts under study are related to one another and to team performance. The agile approach and related studies are now outlined.
5.7.1 Agile Methods and Tacit Knowledge Sharing
According to Chau et al. (2003) it is unlikely that all members of a development team possess all the knowledge required for the activities of software development. Therefore different people will possess different aspects of knowledge, as posited by transactive memory and TMM theory. According to Chau et al. (2003) this underlines the need for knowledge sharing to enable software organisations to
1. effectively share domain expertise between the customer and the development team;
2. identify the requirements of the software system;
3. capture non-extemalised knowledge of the development team members;
4. bring together knowledge from distributed individuals to form a repository of organisational knowledge;
5. retain knowledge that would otherwise be lost due to the loss of experienced staff; and
6. improve organisational knowledge dissemination.
Chau et al. (2003) argue that traditional approaches to software development are ‘plan driven’ or ‘task-based’ and promote knowledge sharing through documentation. These authors refer to this approach as ‘Tayloristic’ and contend that agile methods place emphasis on individuals and their interactions rather than on the process. Agile methods suggest that most written documentation can be replaced by informal communications
among team members internally and between team and the customers with a stronger emphasis on tacit knowledge rather than explicit knowledge. Chau et al. (2004) cite the example of pair programming as used in XP (Beck, 1999). Pair programming, is a social process and involves two developers working in front o f a single computer designing, coding, and testing the software together. During a pair programming session, some explicit but mostly tacit knowledge, is shared between the pair. The knowledge shared includes task-related knowledge, contextual knowledge, and social resources. Chau et al. (2004) conclude that ‘for this reason, the social nature of pair programming made it a great facilitator for eliciting and sharing tacit knowledge’(p.4).
According to Melnik and Maurer (2004) ‘ [A]gile methods consider face-to-face interactions (with the customer and among the development team members), “clean code that works”, and suites of test drivers as the primary devices for knowledge sharing’ (p.l). These authors argue that the knowledge is socially constructed and socially held and conducted a study to demonstrate the importance of face-to-face interaction in sharing abstract or complex knowledge. The sample consisted of small teams of 6-9 graduate students and twenty eight computer professionals who were attending a conference on Agile methods (formed into four teams, which consisted of people from the same company who knew each other well). In all ninety seven people took part, with fourteen teams formed. The teams had to complete a task where they could only use written documentation to specify a sample drawing to be reproduced. The resulting reproduced drawings with their inaccuracies, demonstrate the ineffectiveness of traditional or Tayloristic knowledge sharing when complex cognitive artefacts are used. The authors concluded that the higher the complexity, the more is the need for interactive knowledge sharing via direct verbal communication. Citing the richness of face-to-face communication in providing information through physical cues and voice inflection, which are important when there is ambiguity (Melnik & Maurer, 2004).
Tacit knowledge, like the abstract knowledge discussed in the Agile approach, is undocumented, complex and shared through iterative social interaction, therefore, Agile methods appear to promote the sharing of tacit knowledge.
5.7.2 Transactive memory and Tacit Coordination in Software Teams
Transactive memory systems emphasise members’ expertise and mental representations of that expertise, but not other mental representations that team members might share about the team, task, or situation. It is this specific emphasis on expertise, however, that makes the transactive memory system construct especially relevant for understanding how knowledge-worker teams develop, share, integrate, and leverage distributed expertise (Lewis, 2003).
Two studies in the domain of software development, into the related concepts of expertise coordination and mutual knowledge, provide further evidence for the use and development of transactive memory in software development teams. In the expertise coordination study, (already discussed in section 5.5.3) Faraj and Sproull (2000) found ‘that for expertise coordination to be effective, processes that are distributed, heedful and emergent have to occur’ (p. 1556). An empirical investigation into the similar concept of ‘mutual knowledge’, was conducted by McChesney and Gallagher (2004). These authors posit that ‘mutual knowledge’ consists not only of specific pieces of information, but also the awareness that the other knows this information. This view sees the team as a distributed cognitive system, highlighting issues of team design and development. These two concepts are very similar to transactive memory. Furthermore, in both studies the coordination of expertise and mutual knowledge was tacit.
McChesney and Gallagher (2004) investigated coordination activities in two software engineering projects using a qualitative interpretive approach. They highlighted a comprehensive set of unspecified and tacit work activities which are critical to the effective coordination and operation of a successful software project. These coordination mechanisms are not defined in standard software engineering process models and are tacit in that they are part of the situated, day-to-day problem solving strategies that software engineers use.
An example of a tacit coordination mechanism was keeping people in the loop through the copying of emails, where there were no formal rules for who should be copied any given communication but engineers just knew who to include. They also found that these communication activities actually maintain the coherence of project activity and
describe them as the ‘glue which holds the project together’ (p. 485).
Transactive memory is a factor in successful team performance and is enacted in tacit knowing of the location and awareness of team member expertise. Therefore software development teams with a well-developed transactive memory system will have higher levels of team tacit knowledge than teams with less developed transactive memory systems.
5.8
Conclusions and Central Hypotheses
Software development is part of the discipline of software engineering, and the process and methods used to develop software need to be managed differently to other engineering projects (Sommerville, 2004). Software developers are knowledge workers who work in teams. There are two main types of knowledge that need to be managed in software development, codified and tacit, roughly corresponding to technical and non technical factors. A growing body of research in software development has indicated that human non-technical factors affect team performance and project success more than technical factors. Communication and particularly informal communication in software development teams has been associated with successful projects and team performance (Guinan et al. 1998; Kraut & Streeter, 1995). Communication in teams needs to be coordinated tacitly through transactive memory or explicitly through administrative coordination.
Transactive memory develops as a result of social interactions particularly informal interactions. However, social interaction is also the means by which tacit knowledge is acquired and shared in software development teams, where social interaction refers to quality and quantity of informal interactions. Social interactions are deemed more important to the acquisition and sharing of tacit knowledge. Therefore the following prediction is made:
Hypothesis 24
Social interaction (quality and quantity) will predict tacit knowledge above and beyond transactive memory.
Finally, team tacit knowledge is thought to be an important factor in team performance as measured by efficiency and effectiveness. Team tacit knowledge is developed through social interactions and transactive memory, where social interaction and transactive memory are not thought to affect team performance directly (hypotheses 22
and 23).
Hypothesis 25
Tacit knowledge will predict team performance (efficiency and effectiveness) above and beyond quality of social interaction, quantity o f social interaction and transactive memory.