Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News How to Transfer Knowledge in an Agile Project

How to Transfer Knowledge in an Agile Project

This item in japanese

Knowledge transfer is characterized by transfer of understanding, about a context, from one unit (individual, team, department, organization) to another. Most organizations, spend a considerable amount of time documenting their understanding so that the knowledge transfer process becomes smooth and efficient. While Agile does not discourage documentation, it does place emphasis on “Working software over comprehensive documentation”. In a series of interesting experiments, Steve Bockman tried to figure out the best way to transfer knowledge in an Agile project.

For the experiment, Steve tried to transfer knowledge about a product which was an unusual paper plane in three ways. He used the following strategies,

  • Documentation - The workers were given written instructions (22 steps worth) for building the airplane.

  • Reverse Engineering - The workers were given a completed airplane which they could study in order to reproduce the steps required to build it.

  • Mentoring - The “chief designer” built an airplane step by step and the workers replicated each step as it was performed.

The experiment was conducted with 8 participants for a total duration of 5 minutes for each scenario. The results were amazing.

Only 12.5 % people were able to complete the assignment by referring to the documentation. Using the reverse engineering method, 25% of the participants were successful and with the mentoring method 100% of the participants were successful.

This certainly points in the direction of healthy communication and mentoring as the best way to transfer and share knowledge. Steve added that this principle holds even more value for software development which is based on constant communication and feedback. According to him,

Let’s say I’m a developer who has discovered, and written the code to implement, a technique for binding some data to the controls in a user interface, and that this technique forms a pattern that my fellow developers want to know about. If you were one of my fellow developers, would you rather I (a) gave you a document I had written about the technique, (b) told you where the code was and suggested you figure it out for yourself, or (c) paired with you to implement the pattern for a new set of data?

Young Ye and Royce Fay, suggested another way of efficient knowledge transfer using Asymmetric pair Programming. The essence of this method is that apart from pair programming between developers, it also happens between developers and domain users. Again, the stress being on human communication than documentation.

One of the well known benefits of pair programming is quick knowledge sharing and transfer. Agreeing with this, Alan Skorkin suggested,

The most important benefit in my opinion is the fact that pairing is highly conducive to organic knowledge transfer (”pairing is knowledge sharing” for the poet in you). I believe this is key since in a large system there is literally no other way to do this well.

Thus, there is a general agreement that the best way to transfer knowledge is by communication, mentor-ship and working together. Though, some amount of documentation might be helpful, but solely relying on documentation would yield limited benefits.


Rate this Article