Evaluating a programmer's efficiency with realistic programming tasks