I regard it as vitally important that everyone learn the assembly code of at least one instruction set architecture. Not so much because you will ever need to write any, but because all programming languages ultimately result in machine code.
If your java or php or sql or haskell or python suck, the reason your users can tell that they suck, is because your machine code sucks.
The simple awareness of what goes on under the hood will make you better at any language.
Aside from that its helpful to learn several distinctly different paradigms, like python, lisp, c++ and smalltalk.