Another paper that caught my attention at the recent Psychology of Programming workshop was presented by Matt Jadud from the University of Kent. Matt's research focuses on understanding how novices learn to program and to develop teaching methodologies that take this understanding into account. In his paper, Matt described how he had analysed data collected from an instrumented version of BlueJ, a popular IDE used to teach Java to Computing Science students.
Matt presented an excellent analysis of the behavior of students when the IDE reports a compiler error and when students have a syntactically correct program. Matt’s analysis indicated that students prefer to write large amounts of code, and then repeatedly compile their code to find all of the syntax errors in the code. The data indicated that 51% of compilation events occurred less than 30 seconds after the previous event and that the amount of code changed between these events was minimal (along the lines of adding or removing a semi-colon).
There was an interesting discussion at the presentation about whether or not the students coding strategy was a good strategy and what things the tool could do to shape students behavior to improve their strategies. The discussion centred around the extent to which guidance in a teaching tool simply conditions students to behave in one way or another. In Visual Studio .Net we do a lot of things to aid developers such as highlighting syntax errors, indicating matching parentheses etc etc. While Visual Studio .Net is not primarily designed to be a teaching tool, are there still some disadvantages to these features even for developers who are not using the tool to learn how to program but to get a job done? Are we at risk of conditioning developers not to pay attention to these details?