I try to start every programming task with some thought.

I don’t mean thought as in hacking things together to see what works.

I mean some thought as in thinking about possible solutions and refusing the accept the first one.

I think this is a lost art. As programmers, we spend more time accepting solutions then we do thinking through solutions to make sure we are solving the right problem in the best possible way.

Spending a few minutes scribbling down some notes in a notebook might be the best thing you can do to develop better solutions to problems.