Rapid Red

Your rapid development experts

Ruby on Rails by proven experts.

Roads and places

This Saturday, I ran ten miles for the first time in my life. I’ll be running a half-marathon soon. As I ran, I contemplated the differences between places and roads. It was a fascinating philosophical exercise that took my mind off of the road.

I’ve come up against many vehement arguments for a technology, or a language, or a framework, or an idea with the same religious fervor that one might use to describe, say, Mecca, or Jerusalem, or Bethlehem.

Sometimes, a language can feel a whole lot like a place. You can spend a whole lot of time there, and you can lay down some serious roots.

Arguing for place
————————-
Technically, you can describe a language in pure mathematical terms. You can express most languages using a regular grammar. And a typical programming language won’t drift very far from it’s foundation. From that standpoint, you could call Ruby a place, and even argue that Java 5 a mere suburb of, say, Java 1.4, and by extension, Java 1.3, 1.2, 1.1, and even Java 1.0.

More than a place
—————————-
But the second that you dig under the surface, you quickly begin to realize that Java is much greater than the description of its behavior. All languages are. To do a credible job describing a language and its practical uses, you must consider the community supporting it, the frameworks and design patterns that form the foundation of the solutions you are likely to employ, the politics that govern extensions and standards—really, the entire ecosystem.

When you let yourself make such a connection, you can start to see the journey that is Java stretch out before you. For example, read the following words. Applets, swing, servlets, JSP, EJB, struts, Hibernate and Spring. Do they evoke memories and emotions associated with a place? Or can you sense the movement? A commercially successful language is much greater than any single idea. A language is much more of a journey than a destination.

A language is a road, not a place.

Changing conditions
—————————-
The minute you arrive, the world around you moves on. And you need to change again. Today’s Java is more than just applets or a language for distributed toasters. Java has become a tremendous economic machine that stretches beyond the confines of Sun. Java, the language, is now extended into Spring, AOP, and byte code enhancement, so the solutions you employ are dramatically different from anything imagined back in 1995. And the needs, too, are different. Oak, the foundational language of Java, was developed to do simple embedded distributed systems, but it has grown into much, much more. In truth, the world demanded that Java change to keep up. We needed more.

Now, try these words. Sun, open source, JCP, Microsoft, antitrust, IBM. That set of words adds a political dimension. The political arena for Java has moved beyond a political struggle with the Microsoft giant, and into new realms. Now, the battle is for control, and it stretches into the broader Java community, across companies, and even into open source projects. Once again, Java does not act very much like a destination.

What does it mean?
—————————
Some people feel betrayed that my writing has changed through the years. I once strongly supported Java, and now offer a broader perspective, and often speak out against it. I once promoted Spring as my favorite framework; now, I’ll frequently write about Ruby on Rails and other alternatives.

But my road has been remarkably consistent. I look for the most efficient way for my customers to solve their problems. My road is one of simplicity. I do occasionally change directions, but primarily, those changes are based on my understanding of my surroundings, and the needs of my customers.

Other readers have gone through the transition with me. We’re on the same road. I got a wonderful note from a developer who has followed my work through the Bitter series, BFLJ, Spring, Beyond Java, and even into From Java to Ruby. He made the point that the style and technical frameworks have changed dramatically, but the foundation was still the same. It was a refreshing read. After all, you’re looking at a road, and not a destination.

Blog