One of the most important things for any developer is to be well rounded. They should know about functional, imperative, object-oriented, aspect-oriented programming, among others. They should know the difference between dynamic and static languages. They should know the difference between scripting, interpreted, compiled languages. Why? It opens your mindset. It lets you see things in a different light, which ultimately changes the way you will write your code, and for the better.
Read on...