An empirical investigation of the tacit plan knowledge in programming