There's obviously a lot that goes into making a well-rounded programmer. Examples include, but are not limited to, having a deep understanding of multiple programming paradigms, knowledge of different data structures and algorithms, understanding of computer architecture and operating systems and networks, knowledge of higher mathematics, and lots of experience actually writing code.
However, this post isn't about those things. This post is just a very subjective sampling of very useful languages that are either useful for the ways of thinking they help you acquire or for the application domains in which they excel or for both. I consider these the bare minimum of languages that a hacker should know.
Here they are (with double newlines because I couldn't figure out how to do single newlines on HN):
A LISP dialect (preferably either Clojure, Common Lisp, or Racket)
Python, Ruby, or Scala
Haskell, ML, OCaml, Erlang, or Scala (don't pick Scala twice)
C
A Bourne-derived UNIX shell (Bourne, ksh93, or Bash)
HTML/CSS/JavaScript (at least basic proficiency)
Optional: Any logic programming language
Agree? Want to rip my eyes out? Let me know!
Cool list, though. Will probably inspire me to go back and try to further my understanding of Haskell, which hands down has had the most disproportionate effect on my understanding of programming.