Helping programmers become professional programmers