Experience report: getting novice programmers to THINK about improving their software development process

Expertise is developed through both a) self-reflection and b) making useful plans for improvement [3, 10]. Traditional novice-level programming assignments require neither of these skills to be used. Could we get students to think about improving their software development processes? What areas would they identify as needing improvement? Could they write effective plans for themselves? In this experience report, we analyze the results of an intervention with 236 CS1.5 students asking them to do these activities. We find that they most commonly make improvements in planning, compared to coding and testing. Additionally, over half of the plans they make are so vague as to be of little use in helping students identify if they have, in fact, improved. Finally, we asked students at the end of the term to reflect on how their experiences with programming assignments changed over the term. We discuss our results in light of how instructors can focus instruction to help students become more meta-cognitive about their own software development processes.