Individual Developers: Cognition
Software developers spend much of their time understanding software, however, the individual cognitive processes of understanding are not yet clear. Programming is a young activity in evolutionary terms, for which the human brain probably has not yet developed specialized areas, as is the case for object recognition or speech recognition, for example. In order to understand how developers understand software, we observe developers during the process of understanding, using imaging techniques and eye tracking that have already proven themselves in the analysis of cognitive processes. With the use of this technique for the investigation of programming activities, we are leading the way in international research. We have found a proximity to language processing which suggests that the language competence of a natural language facilitates the learning of a programming language. Thus, after 40 years, we have found evidence for Edsger Dijkstra's claim that excellent programmers should also have excellent knowledge of their native language. However, contrary to many assumptions, we were not able to prove any relation to mathematical skills. The DFG is currently funding further research in this area [see Projects]
Individual developers: Training
In order to qualify as a software developer it is necessary to learn programming. There are typical difficulties, which many beginners to programming stumble over, but which experienced programmers do not cause any problems. For example, experienced developers read programs in a completely different manner than beginners who typically read from top to bottom, as is the case with natural language texts. In order to optimally support beginners in the transitions of their working methods to those of professional programmers, a customized programming training is necessary.