This is very interesting proposition in the "learn to code" e-learning field. HackerRank uses a variety of methods to reinforce learning: hands-on problem solving through trial and error, gamification ...