Ruby vs. Java Myth #3: Ruby is too hard

Previous Myths:

  1. Project Size
  2. Ruby feature X makes code unmaintainable

Welcome to Myth #3: "Ruby is too hard." Honest, I am not making this up. People do seriously argue that Ruby is too hard for the average developer. This is problematic in many ways.

1. Programming itself is hard. It is not for dummies, and you cannot learn to do it in 21 days. Programming languages may have a gentle learning curve, but hard problems will require hard thinking in any language.

2. In what serious discipline is "It's too hard" a legitimate excuse? I have never seen a bank that eschews multiplication: "We use repeated addition here--multiplication was too hard for our junior staffers." And I would be uncomfortable if my surgeon said "I refuse to perform procedures developed in the last 10 years--it is just too hard for me to learn new techniques."

3. Java and Ruby are both hard. I have heard the same argument made about which features to use within Java: "We don't use reflection, it is too hard to understand."

4. "We use idiot-proof tools and save money by hiring the cheapest idiots" is simply not true because there are no idiot-proof tools. Even as wishful thinking this idea sucks. It won't impress customers, and the effect on morale is easy to imagine.

5. You cannot wish away difficulty by limiting language features. If a language omits a feature that developers need, they will find a way to simulate it. This can happen on a small scale: Start without blocks, and you end up with anonymous inner classes. Or on a medium scale: Start without implementation mixins, and you end up with design patterns as code smells. Or even on a grand scale: Start with no trivial way to compose dynamic systems, and you will end up with an enormous framework that requires a second language for tedious, error-prone configuration.

This last point leads to the circular framework argument:

  1. We cannot use language Hund. We need simple language Blub that everyone can understand.
  2. Ruh-roh. Blub is not powerful enough. We must build an elaborate framework for enterprise work.
  3. Blub doesn't have an elaborate framework! How can we possibly use it for enterprise development?!

More than half of the code in every Java enterprise framework exists purely to work around well-known, deliberately chosen limitations at the language level. Smart Java developers have paid a staggering price to prop up the illusion that the Java language is easy.

Perhaps this is all water under the bridge. The price has been paid, and Java works. Expert Java developers can do incredible things. Those of us in the Java community should be proud of the great code we have written, in spite of the incredible difficulty of Java development.

But we shouldn't, in the next breath, say "Ruby is too hard." I for one would have trouble holding a straight face.

Get In Touch