One critical programming lesson
Just read these 14 lessons and it reminded me of one of my own: developers should write the user documentation first draft. Why? On many occasions, while I was doing this exercise, I found that I got stuck explaining a work flow in a way that I thought the technical writer would grok. Or I started writing a paragraph explaining some limitations of the software that I thought might trip someone up. And in those cases, I always end up going back and changing the code to be easier to describe, or to remove that limitation. It changes the economics: by making the developer write the docs, you have made them bear the technical debt. If it takes less work to fix the problem than to document the problem, then the problem just gets fixed.
