How I Develop Things and Why
> Before I start writing a single line of code, I write the README and fill it with usage examples. I pretend that the module I want to build is already written and available, and I write some code with it.<p>I write the same way.  It forces you to think of how intuitive and natural your code <i>should</i> be.  I've run into so much code that makes me wonder, "did they even consider how someone will want to use this?"  Software should resonate with how people expect to use it, coming in with little-to-no understanding of the actual implementation.