Background: Despite similar education and background, programmers can exhibit vast differences in efficacy. While research has identified some potential factors, such as programming experience and domain knowledge, the effect of these factors on programmers' efficacy is not well understood. Aims: We aim at unraveling the relationship between efficacy (speed and correctness) and measures of programming experience. We further investigate the correlates of programmer efficacy in terms of reading behavior and cognitive load. Method: For this purpose, we conducted a controlled experiment with 37~participants using electroencephalography (EEG) and eye tracking. We asked participants to comprehend up to 32 Java source-code snippets and observed their eye gaze and neural correlates of cognitive load. We analyzed the correlation of participants' efficacy with popular programming experience measures. Results: We found that programmers with high efficacy read source code more targeted and with lower cognitive load. Commonly used experience levels do not predict programmer efficacy well, but self-estimation and indicators of learning eagerness are fairly accurate. Implications: The identified correlates of programmer efficacy can be used for future research and practice (e.g., hiring). Future research should also consider efficacy as a group sampling method, rather than using simple experience measures.
翻译:背景:尽管接受相似的教育并拥有相近的背景,程序员之间的效能仍可能存在巨大差异。虽然已有研究识别出一些潜在因素,例如编程经验和领域知识,但这些因素对程序员效能的影响尚不明确。目的:我们旨在揭示效能(速度与正确性)与编程经验衡量标准之间的关系,并进一步从阅读行为和认知负荷角度探究程序员效能的相关因素。方法:为此,我们开展了一项受控实验,涉及37名参与者,采用脑电图(EEG)和眼动追踪技术。我们要求参与者理解最多32个Java源代码片段,并观察其眼动轨迹及认知负荷的神经关联指标。我们分析了参与者效能与常用编程经验衡量标准之间的相关性。结果:我们发现,高效能程序员阅读源代码时更具针对性,认知负荷更低。常用的经验水平并不能很好地预测程序员效能,但自我评估和学习意愿指标相对准确。启示:所识别的程序员效能相关因素可用于未来研究和实践(例如招聘)。未来研究还应考虑将效能作为分组抽样方法,而非仅使用简单的经验衡量标准。