An empirical investigation of voice as an input modality for computer programming