If I could upvote this more than once, I would.
It doesn’t just apply to writing human readable text, either. It’s great while developing software as well. I’ve learned to try and get some minimal deployable unit complete, then start filling it in. The sooner something is deployable, the sooner you’re iterating on it rather than having some huge first iteration before you get feedback.
It may not be useful at first, but it’s great for finding integration problems early, nailing down interfaces so that others can build off of it (e.g., start with an in memory representation before writing a persistence layer, so it “works”, with a bug being that it loses all info after a restart)
It also means that you can get metrics and monitoring in early, so you’re not having to tack that on at the last minute.
Once I internalized this, I found it made it a lot easier to fit in with writing user stores pretty well. Once you’ve got that first deployment done, you’re a able to have a feedback loop, so instead of designing some big system up front, you can get something small out and validate that it meets it’s need. and that there is a need.