When learning, be willing to repeat the struggle of solving a problem.

As you learn, create intervals to go back and redo prior challenges from scratch. This will reinforce the techniques needed to get really good at those things.

On the job, this happens out of necessity. You don’t just keep learning more and more advanced techniques. You repeat patterns based on the needs of the software you’re creating.

While learning, this is a self-imposed discipline.