I write code the same way I write blog posts: as if someone is going to read it. I want to make sure they understand, to the best of my ability. So I leave clues, and use names that hopefully give the reader an idea of my intention. With code, it has to work, at a machine level, so sometimes you have to trade off some human sense for machine sense. But the basic motivation is the same. If I can't work on it later, even when it isn't fresh in my mind, it's not worth nearly as much. #