Paul Graham, one of my favorite loquatious Lisp hackers, has written a great essay comparing software design and painting. His thesis is that as an art of making things, software design is really more like painting or architecture than engineering or science. One of the many implications of this view that he explores is choice of programming languages for software design:
A programming language is for thinking of programs, not for expressing programs you’ve already thought of. It should be a pencil, not a pen. Static typing would be a fine idea if people actually did write programs the way they taught me to in college. But that’s not how any of the hackers I know write programs. We need a language that lets us scribble and smudge and smear, not a language where you have to sit with a teacup of types balanced on your knee and make polite conversation with a strict old aunt of a compiler.
Lisp, of course, is like this, and so is Python.
The essay touches covers many other facets of software design, and it resonated strongly with me. Check it out.