The most important single aspect of software development is to be clear about what you are trying to build.
Psychology is a science, and teaching is an art; and sciences never generate arts directly out of themselves.