In my experience, it's easy to think one has understanding without actually understanding. The process of applying that tentative understanding to a problem to test it is essential to figuring out what the flaws are in the tentative understanding so that real understanding can eventually be achieved. Once it gets to the point that a person can crank through problems without significant errors, then I think further problems don't do much good except as an occasional refresher.