Vary your perspective
Sometimes when you’re faced with a really tricky problem it can be hard to figure out where to get started. You have a few ideas of things that might be worth trying out, but you don’t have enough information to know which one is most likely to succeed.
One strategy I like to try is, much like a jigsaw puzzle, to work in from the edges. Here’s how that works.
Build up from the bottom edge
Along the bottom edge you start from first principles. Making as few assumptions as possible you build up ideas that will support your progress. You try to build upwards as fast as you can in the right direction. At some point things will go wrong. You may well run into a brick wall, and that’s a sign you’ve learnt something. A prototype is a great example of this. Thinking in terms of types and data structures can also be helpful.
Break down from the top edge
Along the top edge you take all of the knowledge that you have from the world and attempt to filter it down. You start with an idea of the “finished” product in your head, and work backwards to find the path that leads there. At each stage you break it down into its pieces until you understand what each piece is and how it works. Eventually you are left with the individual building blocks - atoms in chemistry, or nuts and bolts in engineering. Perhaps you can envisage a machine that makes toast. You know there needs to be some kind of mechanism to feed in the uncooked bread, a heating mechanism, and some kind of device that knows when to stop heating to avoid burning. Diagrams can be helpful here. You pick the system apart, layer by layer. Each system, each subsystem, can either be treated as a whole or viewed as a set of parts that fit together.
Meet in the middle
Both of these approaches can be powerful on their own. Often that’s all you need, one or the other. Taken together they can help you spot new insights.
Perhaps the end goal is so ambitious that you can’t quite picture what the pieces would look like. Starting from scratch and building something up can help.
Perhaps you’re staring at a blank canvas or text editor and can’t figure out which direction to head in. Zooming out and taking a look at one of the bigger systems might give you enough of a nudge to know what your next move is.
The key is to vary your perspective. Move around the problem, looking from different angles. You might see something you haven’t seen before. This is similar to how artists work. They will come up close to the canvas to paint individual brush strokes, then step back to look at the overall shape and feel of the picture. Both steps are necessary to produce a great painting. Software deserves this same level of craft.