Observations on Knowledge Transfer of Professional Software Developers during Pair Programming Franz Zieris Lutz Prechelt 1 zieris@inf.fu-berlin.de prechelt@inf.fu-berlin.de
Typical pair programming scenarios 1. Solve a difficult problem Combined ideas • Combined background knowledge • knowledge Developer Developer 2. Introduce new team member System understanding • Common practices, coding conventions • Senior member knowledge Newbie 2
Research Goal Characterize how effective and efficient knowledge transfer works in pair programming. • Geared towards practitioners: – Formulate patterns of beneficial and problematic behavior 3
Data collection Authentic • In-vivo recordings of professionals: no artificial pairs, tasks, or settings Diverse • different domains & pair types 4
Data analysis AA1 BA1 CA1 CA2 LotR 1 CA3 CA4 NA1 CA5 CB1 LotR 2 DA1 DA2 DA3 DA4 LotR 3 DA5 EA1 EA2 EA3 Lord of the Rings I-III EA4 EA5 NA2 EA6 EA7 FA1 FA2 FA3 FA4 GA1 LA1 LB1 MA1 JA1 JA2 JA3 JA4 JA5 JA6 JA7 JA8 JA9 KA8* KA3 KA2 KA4 KA5 KA6 KA7 KA1 NA4 NA3 49+ Sessions from 11 companies 13 Sessions selected 5
Data analysis 13 Sessions selected Grounded Theory (Strauss & Corbin) 450 Knowledge Transfer Episodes analyzed 6
Three Examples 7
Example 1: Efficient Pull Episode Context: Java, with complex self-written framework Task: Get business object (“ MiniObject ”) from proxy object (“ objectHandle ”) return objectHandle.fetchM; fetchMiniObject() CMMiniObject fetchMiniObject(boolean allowMicroObject) Do the MicroObjects still exist? Bob Carl 8
Example 1: Efficient Pull Episode Context: Java, with complex self-written framework Task: Get business object (“ MiniObject ”) from proxy object (“ objectHandle ”) return objectHandle.fetchMiniObject( true ); Do the MicroObjects still exist? Yes, they do. They do here, on your machine. On the working branch, however … true . Bob Carl 9
Example 1: Efficient Pull Episode Context: Java, with complex self-written framework Task: Get business object (“ MiniObject ”) from proxy object (“ objectHandle ”) return objectHandle.fetchMiniObject( true ); Internal Knowledge Need Target Content Pull Episode Do the MicroObjects still exist? Yes, they do. They do here, on your machine. On the working branch, however … true . Bob Carl 10
Example 2: Effective Resynchronization Internal TC: >0 TC: >0 TC: ü Target Content: 0 Knowledge Need Talking Uh … Pioneer Episode B Co-Produce Episode Design Push Exactly. Proposal Episode C External TC: ü Knowledge Need Target Content: 0 R ESYNC 11
Example 2: Effective Resynchronization Internal TC: >0 TC: >0 TC: ü Target Content: 0 Knowledge Need Talking Uh … Pioneer Episode B Co-Produce Episode Design Push Exactly. Proposal Episode C External TC: ü Knowledge Need Target Content: 0 R ESYNC 12
Example 2: Effective Resynchronization Internal TC: >0 TC: >0 TC: ü Target Content: 0 Knowledge Need Talking Uh … Pioneer Episode B Co-Produce Episode Design Push Exactly. Proposal Episode C External TC: ü Knowledge Need Target Content: 0 R ESYNC 13
Example 2: Effective Resynchronization Internal TC: >0 TC: >0 TC: ü Target Content: 0 Knowledge Need Talking Uh … Pioneer Episode B Co-Produce Episode Design Push Exactly. Proposal Episode C External TC: ü Knowledge Need Target Content: 0 R ESYNC 14
Example 2: Effective Resynchronization Internal TC: >0 TC: >0 TC: ü Target Content: 0 Knowledge Need Talking Uh … Pioneer Episode B Co-Produce Episode Design Push Exactly. Proposal Episode C External TC: ü Knowledge Need Target Content: 0 R ESYNC 15
Example 2: Effective Resynchronization Internal TC: >0 TC: >0 TC: ü Target Content: 0 Knowledge Need Talking Uh … Pioneer Episode B Co-Produce Episode Design Push Exactly. Proposal Episode C External TC: ü Knowledge Need Target Content: 0 R ESYNC 16
Example 2: Effective Resynchronization Internal TC: >0 TC: >0 TC: ü Target Content: 0 Knowledge Need Talking Uh … Pioneer Episode B Co-Produce Episode Design Push Exactly. Proposal Episode C External TC: ü Knowledge Need Target Content: 0 R ESYNC 17
Problematic Example 3: Parallel Work ? TC: TC: ü Target Content: 0 Code Ah-ha! Change D Parallel 40 min Production Episode Pull Ah. Uh? Episode E Internal ? TC: TC: ü Knowledge Need Target Content: 0 P ARALLEL 18
Problematic Example 3: Parallel Work ? TC: TC: ü Target Content: 0 Code Ah-ha! Change D Parallel 40 min Production Episode Pull Ah. Uh? Episode E Internal ? TC: TC: ü Knowledge Need Target Content: 0 P ARALLEL 19
Problematic Example 3: Parallel Work ? TC: TC: ü Target Content: 0 Code Ah-ha! Change D Parallel 40 min Production Episode Pull Ah. Uh? Episode E Internal ? TC: TC: ü Knowledge Need Target Content: 0 P ARALLEL 20
Problematic Example 3: Parallel Work ? TC: TC: ü Target Content: 0 Code Ah-ha! Change D Parallel 40 min Production Episode Pull Ah. Uh? Episode E Internal ? TC: TC: ü Knowledge Need Target Content: 0 P ARALLEL 21
Problematic Example 3: Parallel Work ? TC: TC: ü Target Content: 0 Code Ah-ha! Change D Parallel 40 min Production Episode Pull Ah. Uh? Episode E Internal ? TC: TC: ü Knowledge Need Target Content: 0 P ARALLEL Researcher‘s perspective: E‘s confusion makes the effects of the Parallel Production Episode visible. 22
Summary of the examples • Knowledge transfer episodes can be very efficient (with very few utterances) – … if the pair invests in staying close together. • If they don‘t, episodes can become much longer and may take several attempts – See our previous work [1] • Even worse, the pair risks working on parallel tracks (as in the last example) [1] Zieris & Prechelt, On Knowledge Transfer Skill in Pair Programming , in Proc . ESEM‘14 23
Results On Pair Programming in general • No pair member more knowledgeable in all regards • Positive effects of knowledge-wise inferior member (Anti-)Pattern candidates • Resync • Parallel • Talking Pioneering Mechanisms of knowledge transfer episodes • Push & Pull • Co-Produce & Pioneering Production 24
Enough with Push … 25
… time for Pull! 26
Thank you! https://bitbucket.org/spooning 27
Used Images https://web.archive.org/web/20080509191418/http://www.cenqua.com/pairon/ https://www.flickr.com/photos/a2gemma/552208117 http://www.iconarchive.com/show/oxygen-icons-by-oxygen-icons.org/Categories-system-help-icon.html http://www.iconarchive.com/show/vista-people-icons-by-icons-land/Person-Male-Light-icon.html http://www.iconarchive.com/show/vista-people-icons-by-icons-land/Groups-Meeting-Light-icon.html http://www.iconarchive.com/show/xedia-icons-by-photoshopedia/My-Computer-icon.html http://www.iconarchive.com/show/nuoveXT-2-icons-by-saki/Devices-keyboard-icon.html 28
Recommend
More recommend