How Practitioners Perceive Coding Proficiency

Coding proficiency is essential to software practitioners. Unfortunately, our understanding on coding proficiency often translates to vague stereotypes, e.g., "able to write good code". The lack of specificity hinders employers from measuring a software engineer's coding proficiency, and software engineers from improving their coding proficiency skills. This raises an important question: what skills matter to improve one's coding proficiency. To answer this question, we perform an empirical study by surveying 340 software practitioners from 33 countries across 5 continents. We first identify 38 coding proficiency skills grouped into nine categories by interviewing 15 developers from three companies. We then ask our survey respondents to rate the level of importance for these skills, and provide rationales of their ratings. Our study highlights a total of 21 important skills that receive an average rating of 4.0 and above (important and very important), along with rationales given by proponents and dissenters. We discuss implications of our findings to researchers, educators, and practitioners.

[1]  Barry W. Boehm,et al.  Improving Software Productivity , 1987, Computer.

[2]  Tracy Hall,et al.  Code Bad Smells: a review of current knowledge , 2011, J. Softw. Maintenance Res. Pract..

[3]  Miryung Kim,et al.  Does Automated Refactoring Obviate Systematic Editing? , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[4]  Peter Wendorff,et al.  Assessment of design patterns during software reengineering: lessons learned from a large commercial project , 2001, Proceedings Fifth European Conference on Software Maintenance and Reengineering.

[5]  Thomas Fritz,et al.  Software developers' perceptions of productivity , 2014, SIGSOFT FSE.

[6]  R. Fisher 019: On the Interpretation of x2 from Contingency Tables, and the Calculation of P. , 1922 .

[7]  Robert E. Kelley,et al.  How to be a star engineer , 1999 .

[8]  Amit Prakash,et al.  Elements of Programming Interviews: The Insiders' Guide , 2012 .

[9]  Gregorio Robles,et al.  Practices and Perceptions of UML Use in Open Source Projects , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP).

[10]  Gary D. Scudder,et al.  Improving Speed and Productivity of Software Development: A Global Survey of Software Developers , 1996, IEEE Trans. Software Eng..

[11]  David Lo,et al.  Fusion fault localizers , 2014, ASE.

[12]  Emerson R. Murphy-Hill,et al.  The Design Space of Bug Fixes and How Developers Navigate It , 2015, IEEE Transactions on Software Engineering.

[13]  Timothy Lethbridge,et al.  A survey of the relevance of computer science and software engineering education , 1998, Proceedings 11th Conference on Software Engineering Education.

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

[15]  Christian Bird,et al.  Build It Yourself! Homegrown Tools in a Large Software Company , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[16]  Paul Luo Li,et al.  What Makes a Great Software Engineer? , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[17]  Nikolai Tillmann,et al.  Pex4Fun: A web-based environment for educational gaming via automated test generation , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[18]  Martin P. Robillard,et al.  How effective developers investigate source code: an exploratory study , 2004, IEEE Transactions on Software Engineering.

[19]  Jeffrey C. Carver,et al.  How Practitioners Perceive the Relevance of ESEM Research , 2016, ESEM.

[20]  Richard A Armstrong,et al.  When to use the Bonferroni correction , 2014, Ophthalmic & physiological optics : the journal of the British College of Ophthalmic Opticians.

[21]  Jian Zhou,et al.  Where should the bugs be fixed? More accurate information retrieval-based bug localization based on bug reports , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[22]  Premkumar T. Devanbu,et al.  Belief & Evidence in Empirical Software Engineering , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[23]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[24]  R. Fisher On the Interpretation of χ2 from Contingency Tables, and the Calculation of P , 2010 .

[25]  David Lo,et al.  How practitioners perceive the relevance of software engineering research , 2015, ESEC/SIGSOFT FSE.

[26]  Cláudio Sant'Anna,et al.  On the Effectiveness of Concern Metrics to Detect Code Smells: An Empirical Study , 2014, CAiSE.

[27]  Gabriele Bavota,et al.  Mining Version Histories for Detecting Code Smells , 2015, IEEE Transactions on Software Engineering.

[28]  Christoph Treude,et al.  Summarizing and measuring development activity , 2015, ESEC/SIGSOFT FSE.

[29]  Giuseppe Scanniello,et al.  Documenting Design-Pattern Instances: A Family of Experiments on Source-Code Comprehensibility , 2015, TSEM.

[30]  Christopher B. Mayhorn,et al.  Quantifying developers' adoption of security tools , 2015, ESEC/SIGSOFT FSE.

[31]  Marian Petre,et al.  UML in practice , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[32]  Foutse Khomh,et al.  Evaluating the impact of design pattern and anti-pattern dependencies on changes and faults , 2015, Empirical Software Engineering.

[33]  Mark Guzdial,et al.  What game developers look for in a new graduate: interviews and surveys at one game company , 2010, SIGCSE.

[34]  John Mongan,et al.  Programming interviews exposed: secrets to landing your next job , 2000 .

[35]  Jacob Cohen A Coefficient of Agreement for Nominal Scales , 1960 .

[36]  Shane McIntosh,et al.  An Empirical Comparison of Model Validation Techniques for Defect Prediction Models , 2017, IEEE Transactions on Software Engineering.

[37]  Tom DeMarco,et al.  Programmer performance and the effects of the workplace , 1985, ICSE '85.

[38]  Andreas Zeller,et al.  Locating causes of program failures , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[39]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[40]  Stefan Wagner,et al.  Links between the personalities, styles and performance in computer programming , 2016, J. Syst. Softw..

[41]  R. Nigel Horspool,et al.  Code Hunt: Experience with Coding Contests at Scale , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[42]  Emerson R. Murphy-Hill,et al.  Cowboys, ankle sprains, and keepers of quality: how is video game development different from software development? , 2014, ICSE.