Writing software has a lot of similarities as writing an essay. Reference [Paul Graham, March 2005](http://www.paulgraham.com/writing44.html) ---- There are several principals that hold true in this essay about writing essays that hold true for writing great software, at least in the manner that I have learned and ascribe to. They are: * Write a fast 1st draft that will be bad, no edits, just write, and get all the words out there. * Rewrite your 1st (maybe even a 2nd or 3rd draft) * Review by yourself and others for improvements and corrections * "Design" your essay for readers who will not read it as carefully as you have done during your editing and rewriting. I think each one of these can be applied to software development where: * Fast 1st Draft == Just get something working * Rewrite == Refactor or Fresh-Starting * Review == Code Review and/or Pull Request * Design for Light Readers == Clean API and Good Docs