Tuesday, August 23, 2005

Ruby on Rails

Ruby on Rails is the buzz right now in the java community. At our company where we are predominantly a java shop, we have recently done a significant project in Ruby on Rails (ROR).

It is perhaps premature to pass judgement since we haven't developed in it for very long, but it is too tempting to resist predicting the future.

Coming from a background of programming in many different web programming languages on large projects, I have a different perspective from many people who have become entrenched in particular languages. For better or for worse, I see things differently than many people.

In this case I see ROR as being a major player in the future but still seriously flawed.

Let me give some background before elaborating on that thought. Today there are many programming environments within which a person can build effective websites. From a management perspective, it really doesn't matter which platform you build on, as long as it works.

From the trenches of programming, however, there are markedly different people who make up the group known as programmers. Many people who go to solid 4 year schools that teach theory end up making up a certain group of thinkers. On the other side of a polar extreme is a group of home grown computer hobbyists and programmers--and dare I say it entrepreneurs. Like anything in life, the situation isn't black or white, but the dichotomy of these two groups and the philosophies they bring to work each day has really driven a lot of the creations, the languages, frameworks, and platforms, that are making a splash and going places in the technology community today.

Ruby on Rails has a strong appeal to java developers. For the most part, the people that drive java architectures at any company tend to be school educated people who are well based in theories about Object-Oriented advantages and Model View Controller architectures. This group cares a lot about writing "good" software and following "good" methodologies. Within a company of java developers there are architects that are considered very bright and there are guys who learned how to do java witout much theoretical schooling (or they got the schooling and never cared) and they often go with the flow and learn repetitive tasks.

On the street I see the hobbyist programmers making up a lot of the millionaires and they really do things differently. For them, they care about business models and not software models. They tend to gravitate toward simple and straight forward approaches to problems, and are drawn to the easiest programming environments around.

When I see ROR, I see something that appeals to the educated and those that follow the latest theories on software development, but to the entrepreneur it is filled with a lot of baggage that does not get the job done clearly and effectively.

One of the main differences between java or ruby on rails and other scripting environments is how a developer perceives a website. Java and ROR tend to make you think of a website in terms of an inter-related "project", like a car engine for instance that has lots of parts and touches electrical system and air conditioning and the transmission. Many scripting languages, such as Perl or PHP tend to approach things in much more discrete units, maybe like a table full of cups of soda. Rather than being tightly related, they are more loosely related and you can toss and replace an individual unit cleanly without affecting the rest of the system (which is a place to grab a drink).

A hobbyist developer is someone who will throw up a couple web pages and organize them into folders if it occurs to them. They might decide to do something neat someday, like return content from google or interact with a credit card gateway. By perceiving of the problem as a one or two page problem, and by using a scripting language that allows them to do these phenomenal tasks in a couple lines of somewhat readable code, they are able to learn programming quickly and keep their focus on business models.

From the perspective of a hobbyist who has a web page, trying to learn about object-oriented programming and inter-related software systems and patterns and frameworks of implementation are too much of a leap for them. Although Ruby on Rails writes a lot of code for you, it takes you out of a paradigm that is simple and based around the idea of a simple web page.

Looking toward the future, I see entrepreneurs continuing to use tools like PHP, while the educated groups out of colleges will lean toward object-oriented languages and significant theoretical underpinnings of frameworks and patterns. Because of this trend the better educated people will write the best software from a technical standpoint, and the entrepreneurs will continue to lay golden eggs with sites made of easy to learn scripting code.

After all is said and done, this situation really parallels the sitauation we are in today. I guess the more things change, the more they stay the same.