I sometimes describe programming as a one-way hash operation on requirements. A lot of information and context gets lost when writing software, and I haven't seen a workable solution to that problem yet.
Compare that to sloppy code bases with side effects everywhere where you don't know what it's supposed to do or what it does.