Software Trim
Recently, I’ve been learning more about how homes are constructed (In the US at least). One thing that caught my attention is the way that acceptable tolerances are increased. That is to say how the way things are constructed limits the need for precision. Shoe moulding means you don’t need to cut floorboards to the perfect length, outlet and switch plates remove the need for precise drywall cuts, and drywall itself hides rough framing work. These approaches don’t entirely remove the need for careful construction, but they allow for a lot quicker “roughing in” than more traditional building methods.
This idea is an interesting one to try and extend to software development. The most obvious analogy to me would be to interfaces and functions. You can have a very messy implementation behind a clean interface, and for the end consumers of the interface (other parts of your codebase, or other applications in the case of an API), the implementation just doesn't matter as much. Of course you can have too sloppy of an implementation that will defeat even the best designed interface, but you can hide a lot of crimes this way. A Philosophy of Software Design covers this same idea, providing guidance towards "deep modules" with "shallow interfaces".
In the world of AI assisted coding this is something I've been trying to be a lot more deliberate with. AI does a great job of "rough framing" with its code, but it's still important to get the interfaces right if you hope to extend your code later. While this has always been an important skill for a developer, I imagine we'll see an increased importance on the skill of interface design as AI usage grows.