Think first, code later

I enjoyed Jonathan McPherson's post about lessons he's learned from 20 years of software development. Here is my favorite tip:

Think first, code later. Just twenty minutes sketching out the outline of what I’m doing helps me think about what I’m building end-to-end. If I can’t at least walk through how it’s going to work in my head, I don’t often start coding, because I’m liable to waste time going down dead ends.

He also has a helpful introduction to Vim.