tl;dr:Here are the steps I take when I’m stumped. No huge revelations here, just hard-earned advice. First 3 steps: (1) Think hard about the problem for a few weeks before typing any code. (2) Type in a function or write a class that has the inputs and outputs you need. (3) Break the function down into multiple steps with clear objectives. You may not know how to achieve those objectives, but that’s a problem for your future self. Right now, you’re just trying to write out the high-level algorithm. Frank guides us through another 6 steps in this post.