I always believe that documentation is more important than the code itself. Hence, I make sure that I document everything that needs to be done, step by step, before I start writing a single line of code. By doing so I give myself more time to think about what I want to implement with all its use cases. Also, it makes development much easier and less time consuming.
What about you?
I don't document anything, but I write a lot of unit tests. Those tests sort of describe the functionality of my app, they also make sure stuff doesn't break.
I try to make things easy to understand via good naming and small components. When that doesn't work, I put helpful comments in the code. If I come back to my code later on and it takes a while to figure it out, then I add more comments.
I really like DDD approach. Works great if you and your team are domain experts in some way. In such a case you don't really need to document a lot of code.
Sounds like the workflow in a big bureaucratic company where even minor change takes days. Bootstrapping you need to move lightyears faster.