There is nothing like doing the problem sets when it comes to learning something like math or computer science. If you did the problem sets successfully but didn't read anything else or go to lectures you pass the class.
Lately I decided I was going to completely understand Java Generics (like how exactly the solver works) and found that there weren't any good books or web pages on the subject, instead I was going to have to read Chapter 18 the Java Language Specification as many times as it takes and come up with my own problem set. (I just wish I had a way of making a unit test that "passes" if the function doesn't compile!)
Real world coding has very little to do with leet code problems. Debugging, problem solving, diving deep into legacy code and reducing or skillfully dealing with complexity. That’s more like real life.
So what? How much of your time do you spend changing jobs, versus everything else you do?