Close the loop
It’s hard to think more than a couple of steps ahead when you’re building something new.
When you’re walking in the dark, don’t leap forward because you’ll end up in a ditch. Instead, take things step-by-step, at each point gathering new information, re-evaluating where you are and what you want to do next.
Building new things is like that - action gives you information so you need to act to gather information and plan ahead. But you can’t plan too far ahead, because you only have a little bit of information, so you need to keep moving so you can plan further. Not having a plan is bad, but following a plan past its expiry date is worse.
Things are different, when you operate in well-lit areas or places you know like the back of your hand. There you can leap and run ahead without stopping to gather information, consider, and plan - you already have all the data about how the world looks!
None of this is very surprising, but the trap I see many people fall into (definitely not me!) is assuming you’re in a well-known area, while you’re actually exploring. This carries the risk of assuming too much and not noticing that you’re jumping right into a ditch that will take a while to get out of.
Specifically, this is what I have in my head when I’m building something I haven’t built before (which is most of the time). It’s important to build the whole thing end-to-end as simply and quickly as you can. Most likely it will be too simple and bad in many ways, but if it basically works you can improve it from there. Close the loop, then run through it a few more times.
If you do this and the thing you expected to work does not work, great! You just learned something - and you didn’t spend too much time going down a dead end.
The alternative, where you try to perfect individual components in sequence and only get a working system at the end is a bad idea, unless you’ve already built this exact thing before and you know exactly what lies ahead.
This general advice has been called different things in different places before, e.g. ShapeUp calls it slices and this post uses the speedrunning metaphor. It’s all similar ideas with different names, but “close the loop” is the phrase that stuck in my mind.
Next time you build something, close the loop first and then iterate on the whole thing.