Writing software for thinkers