Writing the README before the code feels backwards until you try it. It forces the questions that usually surface too late: what does this system do, who runs it, how does it deploy, what does it depend on.
If you can't write the setup section, the architecture isn't clear yet. If the deploy section is a paragraph of caveats, the deployment is too fragile. The README is a design document that can't lie.
It also changes the handover. The doc exists from day one, stays current because it's load-bearing, and the final handover is a walkthrough of something that already works, not a scramble to document a finished system.