Java: The dark side of Programming

There is an interesting discussion going on right now on the internet. It boils down to an argument along the lines of: Java rots your brain.

Long version: “Learning Java (or any imperative language with a “bad” type system) as a first language hinders your abilities as a programmer.”

The overall consensus seems to be that to learn proper programming, one should first do the math and then learn to code. I personally do agree to the opinion that of a proper Comp-Sci course curciculum should contain plenty of math. The thing I don’t agree to is the opinion that everybody without a proper math foundation is by definition a crap programmer. While not knowing something other then imperative programming is dangerous, it does not make every bit of code written by that person a bastard child of the devil. The thing is that there are people out there claiming to be the next super genious since Einstein, Nobel or Curie. Those are the people making foulish statements, claiming to know how things should be done. But when entering a discussion based on theory wipe out instantly. Those are the kind of retards you should recommend making a career change or to just generally to shut the fuck up. The problem though is that the bigest wind blowers usually have pretty good people skills. So whining about it, kicking and screaming won’t do you any good. It will only make you look like the retarded idiot while instead the other guy deserves that title.

So the problem is not how to detect and avoid these awful demon-spawns. You’ll just have to deal with them. There are usually three options, from easiest to hardest they are:

  • Blissfully ignore them and deal with the crap they generate.
  • Go around them and risk being hit with a stick because you’ll accused of not being able to interpret an organizational chart. (Managers love to delegate shit so it doesn’t bother them.)
  • Get rid of them and risk being dumped out yourself.

Which of these options to choose is entirely up to you. Usually it depends on how long you’ve been on the project. How receptive higher management is to your cries. The trust you and your oponent has with higher management. And a whole crap load of other fuzzy touchy feely things which aren’t based that much on logic. Believe me when I say you won’t win on being right alone. I’ve been there.

On the matter of Java induced brain rot. I’d probably be drooling right now if that were true. But I do believe that a theoretical foundation helps seeing beyond the lines defined by a particular language. If you don’t know what’s out there it is easy to think that the boundaries set by a language are the limit of all possibilities. Also when being a single minded (language wise) programmer you limit yourself because things like XSLT (declarative paradigm) and recusion (basics of functional paradigm) in an imperative language will likely seem very scary and complicated, while in fact it usually is dead simple.

Some recent related links:
Should Java be banned from schools?
Does Java cause self-delusion?
The Perils of JavaSchools