The answer to the original question ('How do programmers keep it all straight?') is simple: they (we) don't. We try, sure, we plan ahead (at least we should), and in the end we get it right (at least we should), but I've seen ghosts, if you get my meaning ;)
Making software is a process, and...