Developer skills and code modularity: Does one trump the other?
I came across an interesting paper [PDF] today on the intersection between modularity and developer skill in open source projects. I'm often a cheerleader for greater modularity in software, open or closed, but this research (from Giuri Paola, Matteo Ploner, Francesco Rullani, and Salvatore Torrisi, entitled "Skills, Division of Labor and Performance in Collective Inventions. Evidence from the Open Source Softwa
Follow @infoworldI came across an interesting paper [PDF] today on the intersection between modularity and developer skill in open source projects. I'm often a cheerleader for greater modularity in software, open or closed, but this research (from Giuri Paola, Matteo Ploner, Francesco Rullani, and Salvatore Torrisi, entitled "Skills, Division of Labor and Performance in Collective Inventions. Evidence from the Open Source Software") suggests that modularity and division of labor works best when done by a cohesive team of skilled developers:
Our results indicate that projects with a large number of modules and homogeneous skill sets (as well as projects with few modules and heterogeneous skills) outperform highly modularized projects with heterogeneous skill sets. Why do projects that have adopted a more decentralized design approach, signalled by a large number of presumably independent subprojects, benefit from limited skill differences among participants?
To answer this question we should remind that OSS is a collective invention based on modular product architectures. However, there are differences among projects in terms of product complexity (i.e., the strength of interdependencies among modules) or the design strategy pursued by project leaders. The division of the collective invention labour is then affected by product complexity. A higher level of complexity reduces the possibility to divide the work into separate tasks (subprojects) and leads to a more centralized division of labour. In a centralized setting coordination costs among different interconnected tasks and contributors are quite limited. The benefits arising from differences in skill experience among participants (e.g., mutual learning and creativity) then can be easily translated into higher levels of productivity with limited effects on coordination costs and the control of system interdependencies (among tasks and modules). The productivity gains of this division of collective labour then draws on the benefits typical of a workshop-like knowledge production system. The flexibility of the system does not rely much on organizational modularity but depends on skill diversity, imitation and knowledge transfer among participants.










