Attributes contributing to the effective use of quality appraisal techniques by novice programmers
Over the past 40 years, numerous studies have been conducted to evaluate the programming performance of undergraduate Computer Science (CS) students (often referred to as ‘novice programmers’) and to identify possible reasons for the low quality of programs these novices developed. Humphrey (1999) proposes that CS educators must shift their focus from the students’ programs to the data of the processes the students use. Hilburn and Towhidnejad (2000) suggest that the quality of student programs could be improved if instructors taught their students “a software development process that emphasise quality techniques, methods, and analysis”. They also propose the Personal Software Process (PSP) as a good candidate to contribute towards the implementation of a curriculum that focuses on software quality. A number of CS researchers have reported on attempts to incorporate PSP principles and strategies in order to improve the quality of novice programmers’ software development practices. Based on numerous implementation and adoption challenges identified by these researchers - especially with regard to students’ use of quality appraisal techniques (i.e. designs, code reviews, design reviews and quality measures) - there have been various calls for further investigations into attributes that might influence students’ use of PSP principles and strategies. In response to these calls, the overall aim of this research study was to explore the attributes that could potentially influence novice programmers’ effective use of quality appraisal techniques in an educational context. In addressing the stated aim, this research study followed a mixed-method approach based on Plowright’s (2011) Framework of Integrated Methodologies (FraIM). This study was divided into three phases in order to distinguish between the three main sources of data (cases). Based on the emergent nature of the research design followed in this study, the data, evidence and conclusions of each research phase were used to make final decisions regarding the structure and focus of the next phase. In Phase 1, a survey approach was followed to evaluate the quality of the typical software development processes followed by novice programmers. By using the PSP quality improvement framework as an evaluation tool, the results of Phase 1 revealed that the novice programmers typically used a code-and-fix development strategy, their designs were almost non-existent, they mostly relied on testing to remove defects and they did not make use of measurements to gain insight into their development processes. In a follow-up investigation, an integrated experimental case study approach was followed in Phase 2 to form a better understanding of the differences between novice programmers’ perceived and actual development processes [including their use of quality appraisal techniques (QATs)] through the collection of both actual process measurement data and narrative data. The collected data was also used to identify nine attributes that could potentially influence novice programmer’s use of QATs: understanding of development phases, technical programming skills, accuracy of measurement data, ability to find and fix defects, design skills, design review and code review skills, value of process measurement data, motivation orientation, and achievement goal orientation. It was, however, concluded that to ensure effective use of QATs, programmers first need to make the decision to change their current software development processes. This issue was addressed in Phase 3 where a case study approach was followed to identify factors that could influence novice programmers’ intent to adopt QATs. It was revealed that novices’ intentions to adopt QATs are driven by six factors: ease of use, compatibility, usefulness, result demonstrability, subjective norm and career consequences. By combining the results of Phase 2 and Phase 3, this research study therefore identified 15 attributes that could potentially influence novice programmers’ effective use of QATs.