Developer fluency: achieving true mastery in software projects

Outsourcing and offshoring lead to a rapid influx of new developers in software projects. That, in turn, manifests in lower productivity and project delays. To address this common problem we study how the developers become fluent in software projects. We found that developer productivity in terms of number of tasks per month increases with project tenure and plateaus within a few months in three small and medium projects and it takes up to 12 months in a large project. When adjusted for the task difficulty, developer productivity did not plateau but continued to increase over the entire three year measurement interval. We also discovered that tasks vary according to their importance(centrality) to a project. The increase in task centrality along four dimensions: customer, system-wide, team, and future impact was approximately linear over the entire period. By studying developer fluency we contribute by determining dimensions along which developer expertise is acquired, finding ways to measure them, and quantifying the trajectories of developer learning.

[1]  J. Bransford How people learn , 2000 .

[2]  D. Kahneman A perspective on judgment and choice: mapping bounded rationality. , 2003, The American psychologist.

[3]  Bill Curtis,et al.  Fifteen years of psychology in software engineering: Individual differences and cognitive science , 1984, ICSE '84.

[4]  Audris Mockus,et al.  Identifying Productivity Drivers by Modeling Work Units Using Partial Data , 2001, Technometrics.

[5]  Kouichi Kishida,et al.  Toward an understanding of the motivation of open source software developers , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[6]  Susan Elliott Sim,et al.  The ramp-up problem in software projects: a case study of how software immigrants naturalize , 1998, Proceedings of the 20th International Conference on Software Engineering.

[7]  Ann L. Brown,et al.  How people learn: Brain, mind, experience, and school. , 1999 .

[8]  R. Tibshirani,et al.  Generalized Additive Models , 1991 .

[9]  J. V. Maanen,et al.  Toward a theory of organizational socialization , 1977 .

[10]  B. Curtis,et al.  Substantiating programmer variability , 1981, Proceedings of the IEEE.

[11]  Audris Mockus,et al.  Learning in offshore and legacy software projects : How product structure shapes organization , 2010 .

[12]  S. Wood,et al.  Generalized Additive Models: An Introduction with R , 2006 .

[13]  Etienne Wenger,et al.  Situated Learning: Legitimate Peripheral Participation , 1991 .

[14]  B. Ridge,et al.  Organizational Volatility and Developer Productivity , 2009 .

[15]  E. Wenger,et al.  Legitimate Peripheral Participation , 1991 .

[16]  Arthur G. Bills,et al.  General Experimental Psychology , 2006 .

[17]  Rachel K. E. Bellamy,et al.  Moving into a new software project landscape , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[18]  Andrew Begel,et al.  Novice software developers, all over again , 2008, ICER '08.

[19]  Audris Mockus,et al.  Expertise Browser: a quantitative approach to identifying expertise , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[20]  Karen E. Watkins,et al.  Informal and Incidental Learning , 2001 .

[21]  Juhani Vaivio,et al.  Interviews – Learning the Craft of Qualitative Research Interviewing , 2012 .

[22]  Audris Mockus,et al.  Globalization by Chunking: A Quantitative Approach , 2001, IEEE Softw..

[23]  Audris Mockus,et al.  A case study of open source software development: the Apache server , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[24]  Audris Mockus,et al.  Software Support Tools and Experimental Work , 2006, Empirical Software Engineering Issues.

[25]  Karim R. Lakhani,et al.  Community, Joining, and Specialization in Open Source Software Innovation: A Case Study , 2003 .

[26]  Audris Mockus,et al.  An Empirical Study of Speed and Communication in Globally Distributed Software Development , 2003, IEEE Trans. Software Eng..

[27]  T. Carver,et al.  International Encyclopedia of the Social and Behavioral Sciences , 2001 .

[28]  Audris Mockus,et al.  Succession: Measuring transfer of code and developer productivity , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[29]  Pierre N. Robillard,et al.  The role of knowledge in software development , 1999, CACM.