Humans in software engineering: The more things you do, the more things you can do!
Bogdan Vasilescu, Alexander Serebrenik, Mark G. J. van den Brand
Software development is a human activity: both the interaction between the developers as well as their personalities influence the ways in which they participate in software engineering activities. Therefore, to improve software, human aspects of software engineering have to be charted, analyzed and incorporated into tools supporting software development processes.
Understanding human activities necessitates a well-thought mix of qualitative and quantitative analyses, borrowing techniques from psychology, sociology and organizational theory, on the one hand, and mining software repositories, on the other. Using such techniques, we have conducted a series of empirical studies of online developer communities, including those around GNOME—the popular open source desktop environment (contributors to source code repositories and translators), GitHub—currently the largest code hosting website (coders), StackOverflow—the largest programming Q&A platform (users asking and answering questions) and R—a popular data analysis software (users seeking and sharing knowledge on the mailing lists).
A recurring and interesting observation from all these studies is that “the more things you do, the more things you can do”. For instance, social coding on GitHub and answering questions on StackOverflow reinforce each other [1]; contributing to multiple GNOME subprojects or engaging in multiple activity types results in increased productivity [3]; or being publicly rewarded with reputation points and badges results in faster answers on Q&A platforms than on traditional mailing lists for the experts active on both [2]. We believe this to be akin to handicapped signaling theory from evolutionary biology. Indeed, developers multiplying their activity on different platforms, or going the extra mile to answer questions faster on StackOverflow, signal their skill in the same way peacocks signal reproductive fitness: although the peacock’s heavy tail makes it more vulnerable to predators (thus can be seen as a handicap), it carries a message of reproductive fitness to potential mate peahens, making the peacock more attractive.
[1] Bogdan Vasilescu, Vladimir Filkov, Alexander Serebrenik. StackOverflow and GitHub : associations between software development and crowdsourced knowledge. 2013 ASE/IEEE International Conference on Social Computing (SocialCom 2013).
[2] Bogdan Vasilescu, Alexander Serebrenik, Prem Devanbu, Vladimir Filkov. How Social Q&A Sites are Changing Knowledge Sharing in Open Source Software Communities. 17th ACM Conference on Computer Supported Cooperative Work and Social Computing (CSCW 2014).
[3] Bogdan Vasilescu, Alexander Serebrenik, Mathieu Goeminne, Tom Mens. On the variation and specialisation of workload: A case study of the Gnome ecosystem community. Empirical Software Engineering, 2012.
1. Humans in software engineering:
The more things you do, the more
things you can do!
Bogdan Vasilescu, Alexander Serebrenik,
Mark G.J. van den Brand
@b_vasilescu @aserebrenik
@MarkvandenBrand
2.
3.
4. log(total number of commits per author)
Vasilescu, Serebrenik, Goeminne, Mens. On the variation and specialisation
of workload: A case study of the Gnome ecosystem community. Empirical
Software Engineering, 2013.
Number of activity types per author
7. Vasilescu, Filkov, Serebrenik. StackOverflow and GitHub : associations between software development and
crowdsourced knowledge. 2013 ASE/IEEE International Conference on Social Computing (SocialCom 2013).
8. Vasilescu, Serebrenik, Devanbu, Fil
kov. How Social Q&A Sites are
Changing Knowledge Sharing in
Open Source Software
Communities. CSCW 2014.
9. Different data sets,
different measures,
different statistical techniques…
the same conclusion:
The more things you do, the more
things you can do!
10.
11. Humans in software engineering:
The more things you do, the more
things you can do!
Bogdan Vasilescu, Alexander Serebrenik,
Mark G.J. van den Brand
@b_vasilescu @aserebrenik
@MarkvandenBrand
Editor's Notes
Software development is a human activity: both the interaction between the developers as well as their personalities influence the ways in which they participate in software engineering activities. Therefore, to improve software, human aspects of software engineering have to be charted, analyzed and incorporated into tools supporting software development processes.
Developers work with different knowledge sources including version control systems such as Git and Q&A sites such as StackOverflow but also mailing lists, bug trackers etcWe have conducted a series of empirical investigations of human activities in open source projects as reflected by electronic trace data of different knowledge sources.
In GNOME: engaging in multiple activity types results in increased productivity.As aresult of Kendall's correlation test we confidently reject H0(p < 2.2* 10^-16) andobserve a strong correlation between NTA(a) and AW (a) (tau = 0.737).
Next we have studied demand for and supply of knowledge
* If A and B are independent from each other, EB andPB will be statistically indistinguishable from theirsimulated counterparts.* If A delays B, EB will be statistically longer than thesimulated evaluation latencies. Similarly, if B delaysA, PB will be statistically longer than the simulatedresponse latencies.*If A accelerates B, EB will be statistically shorterthan the simulated evaluation latencies. Similarly, ifB accelerates A, PB will be statistically shorter thanthe simulated response latencies.
For active participants social coding on GitHub and asking or answering questions on StackOverflow reinforce each other [2].
Finally, we have studied different communication channels: mail archive r-help and StackExchange.
We believe this to be akin to handicapped signaling theory from evolutionary biology. Indeed, developers multiplying their activity on different platforms, or going the extra mile to answer questions faster on StackOverflow, signal their skill in the same way peacocks signal reproductive fitness: although the peacock’s heavy tail makes it more vulnerable to predators (thus can be seen as a handicap), it carries a message of reproductive fitness to potential mate peahens, making the peacock more attractive.