For me, code reviews force that discipline.
My workflow is to edit code, figure out bottom-up how it really works, then look at all the mess, realize I could never get review approval, and stash it. Then I start over top-down, make the same changes again -- wiser this time -- add in comments which make sense to others, and commit to a new branch. Repeat with another new branch until everything in the stash has been incorporated.
With `git plan` I'd have to skip over the 1st exploration phase. Desirable, but irreducible.