At my job if a code change is expected to take more than a day, you have to write a spec for the changes and have someone else review it.
This helps cut down on re-work from misunderstandings, as well as provides a historical record of why something changed.