Thoughts on Programming; what we do, and how we do it