Franz Zieris
zieris@inf.fu-berlin.de
Lutz Prechelt
prechelt@inf.fu-berlin.de
Explaining Pair Programming Session Dynamics from Knowledge Gaps
1
Session Dynamics from Knowledge Gaps Franz Zieris Lutz Prechelt 1 - - PowerPoint PPT Presentation
Explaining Pair Programming Session Dynamics from Knowledge Gaps Franz Zieris Lutz Prechelt 1 zieris@inf.fu-berlin.de prechelt@inf.fu-berlin.de Motivation Expectations in industry: Our Overall Research Goal Why pair-program?
zieris@inf.fu-berlin.de
prechelt@inf.fu-berlin.de
1
Better design and fewer defects Learn from each other or together Understand legacy parts of the software system
– Understand how industrial pair programming actually works
What are the underlying mechanisms of knowledge transfer in pair programming?
– Advise practitioners – behavioral (anti-)patterns
2
3
= 39.5 hours total
4
? ! OK Ah! Rly? …
26 pairings of professional developers
5
6
= task-relevant system knowledge
current state of implementation, classes, call hierarchies, defects, test/build setup, configuration state, …
Primary Gap
I'll show you what I did. OK
7
One partner already worked on the task
= task-relevant system knowledge
8
= task-relevant system knowledge recently worked in code area basic knowledge
working in unknown terrain
One partner already worked on the task
9
= task-relevant system knowledge recently worked in code area basic knowledge
working in unknown terrain Secondary Gap Let's look at the superclass console.log(myObj);
10
= task-relevant system knowledge Good system understanding Medium system understanding Little system understanding
11
Type? Function? I don't even know what this is.
S knowledge (task-relevant system understanding) G knowledge (task-relevant general software development knowledge)
Data structure holding the application state? How to modify and read the state? … Syntax of programming language? Higher-order functions? Application framework? Test framework? …
Task: implement test case
Where is the initial value?
12
S: Task-relevant System Knowledge G: Task-relevant General Software Development Knowledge Large G need: problematic Small G need: not problematic
In general: S needs must be addressed for productive work
(e.g., not knowing some test feature) (e.g., not knowing the test framework)
13
Do you know the Template Method pattern? G Opportunity seized G Opportunity not seized Why did she do that? G Opportunity (e.g., knowing more about design patterns) S: Task-relevant System Knowledge G: Task-relevant General Software Development Knowledge
14
S G
26 pairings of professional developers
15
S G
26 pairings of professional developers
16
S G
26 pairings of professional developers
17
S G
26 pairings of professional developers
18
S G
19
S G
20
S G
preprint
http://inf.fu-berlin.de/inst/ag-se/ pubs/ZiePre20-ppsessiondyn.pdf
https://web.archive.org/web/20080509191418/http://www.cenqua.com/pairon/ Icon "design" by Adrien Coquet from the Noun Project Icon "Bug" by Minh Do from the Noun Project Icon "knowledge" by Olivia from the Noun Project Icon "Box" by No More Heroes from the Noun Project Icon "corner webs" by Kate Maldjian from the Noun Project Icon "Computer" by Denis Shumaylov from the Noun Project
21