Java and great programmers
The other day I wrote about Joel’s claim that java only schools where making it harder to find great programmers. My focus then was on how various programmers I know express their greatness in different ways . This put me at odds with his suggestion that one of the best ways to find great programmers is to look at the way they handle pointers and deep recursion.
But today I want to come back around to where I agree with Joel. Schools that teach java, and only java, do make it hard to find or become a great programmer. This is because every time you learn a new language you learn a new way of thinking, and new way of seeing the problem in front of you. Learn Scheme and you see things differently. Great programmers have open minds, they are practitioners of continuous learning, and that means they know more than one language, and can choose the right tool for the job.
JavaSchools teach you that you can do anything in java — and this is probably true. But there are definitely problems that can be solved more elegantly in C, or Python, or Ruby, or Lisp.
I’d say if you are in a school that does not teach you C/C++, and Smalltalk, Python, and Ruby, you need to take time out to learn these things on your own. And if you graduated without learning them, I think you will be well rewarded by learning them.
I’ve been using OO for years, but in the last week and a half I’ve learned more about Design Patterns, and MVC than I have in the past year. All because I started researching the history of MVC from Smalltalk 80 on forward. But that’s a post tomorrow.