a quantitative study of the ringelmann effect in software … · 2016. 12. 7. · a quantitative...

24
A Quantitative Study of the Ringelmann Eect in Software Development Teams Ingo Scholtes Chair of Systems Design, ETH Zurich with Pavlin Mavrodiev and Frank Schweitzer

Upload: others

Post on 13-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

A Quantitative Study of the Ringelmann Effect inSoftware Development Teams

Ingo Scholtes

Chair of Systems Design, ETH Zurichwith Pavlin Mavrodiev and Frank Schweitzer

Page 2: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Computational Social Science

SocialSciences

Computer Science

data miningsocial network analysismodeling & simulation

data mining & simulationextract knowledge from (noisy)data on social systems

micro- and macro-level simulationsof social systems

⇒ new ways to test hypothesesdrawn from sociological theory

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 2 / 8

Page 3: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Computational Social Science

SocialSciences

Computer Science

social aspects in system design

data miningsocial network analysismodeling & simulation

data mining & simulationextract knowledge from (noisy)data on social systems

micro- and macro-level simulationsof social systems

⇒ new ways to test hypothesesdrawn from sociological theory

social aspects in system designregain control of socially-embedded(cyber-physical) systems

better understand & managedevelopment processes

⇒ improve modeling, design andcontrol of technical systems

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 2 / 8

Page 4: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Context: Collaborative Software Engineering

technical aspects: programminglanguage, architecture, codecomplexity, support tools. . .

social aspects: developmentprocess, team composition,

communication, coordination, . . .

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 3 / 8

Page 5: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Challenge: Understanding team productivity

software economics: how productiveare software development teams?

“Adding manpower to a latesoftware project makes it later.”

Fred Brooks (1975)

Ringelmann effect in social psychology:larger teams are less productive

1 motivational factors: “social loafing”2 overhead of coordination

research questions:1 does the Ringelmann effect apply to Open

Source communities?2 can we detect the underlying mechanisms?

Fred Brooks

image: CC-BY-SA SD&M

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 4 / 8

Page 6: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Challenge: Understanding team productivity

software economics: how productiveare software development teams?

“Adding manpower to a latesoftware project makes it later.”

Fred Brooks (1975)

Ringelmann effect in social psychology:larger teams are less productive

1 motivational factors: “social loafing”2 overhead of coordination

research questions:1 does the Ringelmann effect apply to Open

Source communities?2 can we detect the underlying mechanisms?

Maximilien Ringelmann(1861-1931)

image: CC-by-SA Bart Derksen

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 4 / 8

Page 7: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Challenge: Understanding team productivity

software economics: how productiveare software development teams?

“Adding manpower to a latesoftware project makes it later.”

Fred Brooks (1975)

Ringelmann effect in social psychology:larger teams are less productive1 motivational factors: “social loafing”2 overhead of coordination

research questions:1 does the Ringelmann effect apply to Open

Source communities?2 can we detect the underlying mechanisms?

Maximilien Ringelmann(1861-1931)

0

0.2

0.4

0.6

0.8

1

1 3 5 6 7 8Forc

e pe

r tea

m m

embe

r

Team size

Ringelmann effect (Maximilien Ringelmann, 1913)

2 4

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 4 / 8

Page 8: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Challenge: Understanding team productivity

software economics: how productiveare software development teams?

“Adding manpower to a latesoftware project makes it later.”

Fred Brooks (1975)

Ringelmann effect in social psychology:larger teams are less productive1 motivational factors: “social loafing”2 overhead of coordination

research questions:1 does the Ringelmann effect apply to Open

Source communities?2 can we detect the underlying mechanisms?

Empirical Software Engineering,Vol. 21, No. 2, April 2016

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 4 / 8

Page 9: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Data Science approach: commit log analysis

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

commit 9 commit 10range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

data: GHTorrent gitHub dump (~1.5 TB)

identi�ed 58 most active OpenSource projects 580,000 commits 30,000 developers > 10 years of commit history

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 5 / 8

Page 10: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Data Science approach: commit log analysis

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

commit 9 commit 10range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

data: GHTorrent gitHub dump (~1.5 TB)

identi�ed 58 most active OpenSource projects 580,000 commits 30,000 developers > 10 years of commit history

Q1: What is the team?>> active developers inreasonable time window

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 5 / 8

Page 11: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Data Science approach: commit log analysis

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

commit 9 commit 10range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

data: GHTorrent gitHub dump (~1.5 TB)

identi�ed 58 most active OpenSource projects 580,000 commits 30,000 developers > 10 years of commit history

Q1: What is the team?>> active developers inreasonable time windowQ2: What is productivity?>> Levenshtein distancebetween commits

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 5 / 8

Page 12: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Data Science approach: commit log analysis

team size: 2

time window 1

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

commit 9 commit 10range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

code contributions

75 characters

89 characters

mean contribution: 82

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 5 / 8

Page 13: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Data Science approach: commit log analysis

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

commit 9 commit 10range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

time window 2

code contributions

45 characters

17 characters

29 characters

16 characters

team size: 4mean contribution: 26.75

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 5 / 8

Page 14: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Data Science approach: commit log analysis

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

commit 9 commit 10range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

time window 2

code contributions

45 characters

17 characters

29 characters

16 characters

team size: 4mean contribution: 26.7510−2

10−1100101102103104105106107

100 101 102 103

Team size

Mea

n co

de c

ontr

ibut

ion

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 5 / 8

Page 15: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Data Science approach: commit log analysis

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 5 / 8

Page 16: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Data Science approach: commit log analysis

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

commit 9 commit 10range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

Mea

n co

de c

ontr

ibut

ion

102

103

100 101 102 103

Team size

100

101

102

103

104

105

101 102

Team size

Project B

productivity coefficientα=-0.12 ±0.07, r2=0.23

productivity coefficientα=-1.9 ±0.2, r2=0.47

Project A

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 5 / 8

Page 17: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Coordination networks and productivity

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

commit 9 commit 10

network of coordinationrequirements

time window 2

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 6 / 8

Page 18: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Coordination networks and productivityProject B

keithbsmileyheroims

elie.toubiana

chrism sergeizenchenko

clay.allsopp

dodikk88.reg

iromero

hffmnn

me

sharrikk

me

simonsm2 denis

vgrichina

dkasper

larromba

nick

reynaldo

fabian.canas

m1entus kzdornyy

chroman16

horacek.eric

liubiqu

frankodwyer

javier.apiclaus

bryan.irace

mbowman

cedric

billwang1990

dustin.barker

tworona

ben

dustin.steele

plusbryan

blake.schwendiman gabrielh

alexh

roboteti

boztalay

francis

contactkishikawakatsumi

dromaguirre

m.tuerck

lsh32768bruno.furtado

me

sam

tech1jon

jesse.d.squires

roland_tecson

ninjin

inamiy

ptower

chris

github.maks3wmic.gallego

matthew

me

pieter

david

denixport

cgmartin

chris

antoine

padraic.brady

adam

mhujer

adamlundrigan

njcalugar

ralph.schindler

allo.vince

theman

jacob

alex_pogodin

marc−bennewitz

intiilapa−zfsaschaprolic

rob

koen

jmikola

jurian

yanick.rochon

martinmeredith

ocramius

zoeslam

enrico

walter.tamboer

padraic

sasezaki

fritz.gerneth

me

duke.ejoom.com

sascha.howe

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

commit 9 commit 10range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

Project A

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 6 / 8

Page 19: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Coordination networks and productivity

time

range = [1:n]result = {}for i in range: n1 = str(s[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:m]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=1

range = [1:100]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = (n1, n2) result[key]=0

range = [1:200]result = { 0:0 }for i in range: n1 = str(t[0]) n2 = str(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

commit 1 commit 2 commit 3 commit 4 commit 5v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return dat

v_list = []dat = []

dat = getData()dat = sort(dat)dat = clean(dat)

return clean(dat)

range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n1 result[key]=0

x = ‘ASC‘dat = []

dat = getData()dat = sort(dat,x)

return clean(dat)

commit 6 commit 7 commit 8x = ‘DESC‘dat = []

dat = getData()dat = sort(dat,x)c = clean(dat)

return s

commit 9 commit 10range = [1:200]result = { 0:0 }for i in range: n1 = int(t[0]) n2 = int(t[1]) l.append(n1) l.append(n2) key = n2 result[key]=1

Project B

100

101

0 20 40 60

100

101

0 20 40 60

Mea

n de

gree

Team size Team size

densification coefficientβ=0.007 ±0.005, r2=0.036

densification coefficientβ=0.035 ±0.007, r2=0.24

Project A

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 6 / 8

Page 20: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Coordination networks and productivity

key �nding:

statistically signi�cant relationbetween densi�cation of coordination

networks and decrease in productivity as teams grow in size

Den

si�c

atio

n co

e�ci

ent β

Productivity coe�cient α

−0.05

0.00

0.05

0.10

0.15

0.20

−3 −2 −1 0

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 6 / 8

Page 21: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Take-away messages

1 we provide quantitative evidence for theRingelmann effect in Open Sourcesoftware development teams

2 we uncover coordination overhead asone mechanism behind the observedscaling behavior of team productivity

3 we show that social science theoriesprovide actionable insights intosoftware engineering processes

Empirical Software Engineering,

Vol. 21, No. 2, April 2016

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 7 / 8

Page 22: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Take-away messages

1 we provide quantitative evidence for theRingelmann effect in Open Sourcesoftware development teams

2 we uncover coordination overhead asone mechanism behind the observedscaling behavior of team productivity

3 we show that social science theoriesprovide actionable insights intosoftware engineering processes

Empirical Software Engineering,

Vol. 21, No. 2, April 2016

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 7 / 8

Page 23: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Take-away messages

1 we provide quantitative evidence for theRingelmann effect in Open Sourcesoftware development teams

2 we uncover coordination overhead asone mechanism behind the observedscaling behavior of team productivity

3 we show that social science theoriesprovide actionable insights intosoftware engineering processes

Empirical Software Engineering,

Vol. 21, No. 2, April 2016

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 7 / 8

Page 24: A Quantitative Study of the Ringelmann Effect in Software … · 2016. 12. 7. · A Quantitative Study of the Ringelmann E ect in Software Development Teams Ingo Scholtes Chair of

Thank You!I Scholtes, M Strohmaier, F Schweitzer: Is Computer Science becoming a Social Science?,Under review, October 2016

I Scholtes, P Mavrodiev, F Schweitzer: From Aristotle to Ringelmann: A large-scale analysisof productivity and coordination in Open Source Software projects, Empirical SoftwareEngineering, Vol. 21, No. 2, April 2016

I Scholtes: Understanding Complex Systems: When Big Data meets Network Science, it -Information Technology, Vol. 57, No. 4, pp. 252-256, July 31 2015

MS Zanetti, I Scholtes, CJ Tessone, F Schweitzer: The Rise and Fall of a Central Contributor:Centralization and Performance in the Gentoo Community, Cooperative and Human Aspectsin Software Engineering, San Francisco, CA, USA, May 2013

MS Zanetti, I Scholtes, CJ Tessone, F Schweitzer: Categorizing Bugs with Social Networks: ACase Study on Four Open Source Software Communities, 35th International Conference onSoftware Engineering (ICSE ’13), pp. 1032-1041, San Francisco, CA, USA, May 2013

@ingo s

http://www.ingoscholtes.net

[email protected]

Systems Design A Quantitative Study of the Ringelmann Effect in Software Development Teamshttp://www.sg.ethz.ch Ingo Scholtes CSS Wintersymposium Cologne, DE 01/12/2016 8 / 8