Thursday, October 7, 2010

He Man Java Haters Club

If you ever watched Little Rascals, you know about the He-Man Woman Haters Club. Well now that there are a billion new languages for the JVM, I'm starting to see another club, the He-Man Java Haters Club, and it has a similar oath. First, I'm not saying Java is the one true language that replaces all others. Learning new languages is important. And its important even if you don't use them right away because it gives you a new way of looking at a problem, a new way of thinking. As Einstien said, "Problems cannot be solved by the same level of thinking that created them."

For instance, after I learned a little Haskell, I think I wrote better methods that didn't have side effects. As much as I would enjoy coding for a while in a Lisp based language, I realize that most of my work involves coding Java and since I am a consultant, most of my future work will also involve Java. So I try to include the essence of it in my programming until I can get a chance to program in it.

Does that make Java stupid or ugly or whatever negative adjective you can think of? The answer is no. Of course it has limitations, so does every language and if you don't see that you are missing the point. Java is an object oriented language, this is where it excels, it has a mature set of tools and a ready source of developers. That is why it is popular for enterprise level programs that need to model a business problem. That is why it works well in implementing the Model in the MVC pattern. It's also why new disruptive websites programs that need to evolve quickly and are starting to be written in other languages.

But hating Java is like hating the hammer because you can't use it as a screwdriver. Mainframe programming is still being used in some big companies. What made it a good tool before is why it is still around. It may have gotten a bad rep for trying to do everything, and it took it awhile to find its niche, but for certain problems it still works well.

So, learn the other languages. Figure out what they do well and add them to your toolbox. But don't do the same thing that the old language did, which is try to do everything with your shiny new tool. Don't be a one tool programmer, because if all you have is a hammer everything looks like a nail.