Tuesday, December 26, 2006

Attacking Ruby on Rails

[Note added 12/28/2006: Caution - this posting was a holidays fogged, sugar-high induced feeble attempt at satire and humor that apparently rubbed many people the wrong way. Don't take it too seriously......]


The Swiss Army Knife


The Swiss Army Knife is a cool tool. It slices. It dices. It has scissors. A long knife blade. A corkscrew. A short knife blade. A file. A saw. Pliers and a screwdriver. If I'm stuck out in the wilderness with just one tool, I want one of these, or a Leatherman, or some similar tool. But I don't use a Swiss Army knife to gut a deer or a fish - it's too big and not something I want coated in blood and entrails. I don't use its screwdriver or pliers when I'm working on a car - it's too small and doesn't fit in tight spots. I don't use its saw to cut wood for the fireplace.

Using the right tool for the right job is a pretty simple concept. So why do so many people forget this when discussing programming languages and software frameworks? They're just tools, and can be selected in the same way. Are people really so stupid as to think that Java, or .NET, or PHP, or Python, or PHP, or LISP, or (insert your favorite language here) is the best tool for every job? I don't think so. So what's really going on when otherwise smart people go ballistic and become zealous warriors for their favorite technology when the topic of Ruby or Rails comes up? Here are some characers I've encountered that shed some light on the subject:

The One Trick Pony

"I've created dozens of kick-ass web sites in PHP. I can do anything in PHP that you can do in Rails. There's more lines of code in PHP than in Rails. There's more PHP job postings than for Rails. No way am I learning anything new, dude. It would cut into my partying and napping time..."

Propellerheads
"Ruby is just a degenerate form of LISP. Rails is just an over-hyped Lambda expression."


Python is demonstratably better than Ruby
We have infinite frameworks to choose from
Our superior intellects will make you weep
Take your upstart toy and be gone
The Wise Wizard

"Bow down to my Enterpriseyness! How dare you think you can apply your puny little framework to Serious Business Stuff! You foolish mortals know nothing of the dangers you will encounter. Inflexible DBA's! WSDL, BPEL and Enterprise Buses! Evil database API's! Message Queues! Enterprise Application Integration and Business Process Orchestration! Technology Stacks containing complexities which your feeble minds can't begin to comprehend! Now take your stupid little dog and go back home before someone gets hurt."

The Corporate Framework Guru:
Keep Your Filthy Problem Domains Away From Me


"We have a well-established seniority structure here. The new programmers work on customer-facing code: printed output, reports, user-interfaces. The intermediate programmers work on the business logic that the customers care about - they build classes and business rules that make the system work. The senior programmers work on the fun things that the customer doesn't care about - presentation layers, message processing, persistence engines, process orchestration rules engines. The smarter you are, the better you insulate yourself from boring customer problems. I don't want a fancy framework coming in here and messing up this my nice ivory tower..."

The Drone

"I got my Visual Basic certification just 10 years ago. 3 years ago the company made me go to a training class to learn VB.Net. Now I have a jerk of a new manager that wants me to use C#. My head hurts just thinking about it. No way am I going to experiment with Ruby or Rails. The company won't even let me install it on my machine at work, and I'm too busy to learn anything at home...."

The CIO/CTO

"Open source - isn't that something only commies use? Who provides your support contract? What does Gartner have to say about it? I can't possibly tell the CEO this is a good idea! Blah! Blah blah! BLAH!!! Now get out of my office - I have lots of magazine reading to catch up on and a golfing --er I mean a technology conference trip I have to schedule."

The Chicken


"I'll prototype it in Rails, then build the real app in X."

(This is how I got sucked into using Rails full time. Prototyping is a dangerous gateway drug...)

The Best Tool for the Job

If I was thrown out into the wilderness and forced to pick one toolset without knowing what kind of problem would come along I'd want the .NET Swiss Army Knife. If I was integrating with a rich corporate infrastructure rife riddled with legacy applications, pre-established database schemas, message queues, with some WS- sauce thrown on top, I might want the Java Leatherman. (OK, I'm lying. Actually I'd want to quit, run away, and start my own company with a fresh slate, but that's a different story....)

But if I'm working on a new web-based application, backed by an application database, Rails is the best tool for me, whether the job is large or small.

14 comments:

dibblego said...

Why do you encounter these people? I think Paul Graham summarises it well with the Blub Paradox, despite inadvertently calling himself a Blub Programmer.

You should rephrase "X is the best tool for the Y job" to "X is the best tool that I know of for the Y job". Thankfully (or is it unfortunately?), the industry expectations are set low enough that nobody will even notice if you are using an inferior tool for job Y and so Ruby will work.

Good luck with it.

Anonymous said...

Answers.com needs to point their definition of strawman to this post.

Anonymous said...

.NET a Swiss Army knife? It's more like a set of woodworking tools that only work with expensive propietary wood that is only made by one company. Well, you can use it on one other kind of wood but only some of the tools work and some not fully and you void the warantee by using them on that wood.

And, Ruby can run on .NET and JVM anyway so I'm not sure what your point is. Here's the analogy you should use, Ruby is a canoe, JVM and .NET are rivers. Canoes are better than rivers for transportation (on rivers).

Orry said...

Anonymous...
"Here's the analogy you should use, Ruby is a canoe, JVM and .NET are rivers. Canoes are better than rivers for transportation (on rivers)."

That analogy doesn't work. If we used it, you'd effectively be screwed if you were using neither JVM or .NET, since Ruby wouldn't have a river to float on ;)

I'm a longtime PHP developer, and I use it exclusively for my job (the lead developer is only interested in technologies he knows - don't blame me). That said, I've also played with Ruby. I see certain things that I like, other things that I don't. Same with every other language though. Right tool for the right job.

Anonymous said...

"That analogy doesn't work. If we used it, you'd effectively be screwed if you were using neither JVM or .NET, since Ruby wouldn't have a river to float on ;)"

I didn't say that JVM and .NET is the set of all rivers.

If I say the Nile and the Danube are rivers, would you think I was saying that the Nile and the Danube are the only two rivers in the world?

This is what is sometimes called 'basic logical reasoning'.

Anonymous said...

"Answers.com needs to point their definition of strawman to this post."

So true.

Peter Hendriks said...

Quote 1 from you: "Are people really so stupid as to think that Java, or .NET, or PHP, or Python, or PHP, or LISP, or (insert your favorite language here) is the best tool for every job?"

Quote 2 from you: "But if I'm working on a new web-based application, backed by an application database, Rails is the best tool for me, whether the job is large or small."

Conclusion from me: you are just like the people you describe, you just picked a different tool.

Anonymous said...

"Using the right tool for the right job is a pretty simple concept. So why do so many people forget this when discussing programming languages and software frameworks?"

Because it doesn't take years to become proficient at using a Swiss Army knife or any of the other tools you mentioned. Mastering a language does.

James McGovern said...

Maybe in a future blog entry you could post what Gartner says about Ruby on Rails...

ptoland said...

"Because it doesn't take years to become proficient at using a Swiss Army knife or any of the other tools you mentioned. Mastering a language does."

No, it doesn't. Many people make the assumption that learning a new language is incredibly difficult. Its not.

Mads Kristensen said...

In the end it all boils down to your personal preferences. It's not about using the right tool for the right job, but being most efficient in the long run.

Efficiency is also a skill concerning maintainability and reuse across the dev team and they might not have the same preferences as you do. I've been using PHP, ASP and ASP.NET and only one of these tools have given me the whole nine yards and that is ASP.NET - but that's just my personal preference. I'm much more efficient using .NET than PHP for instance.

What seems to be the most interesting part about this discussion is the discussion it self. That's because we deep down know that the personal preference always win over the new/hip/cool/hyped framework or language. Yet, the dicsussion have never been higher and broader than it is now.

Robert said...

Another point, if I may.
Sometimes an all-purpose programming language is not the right tool for the job.
Not enough attention is paid to specialized programming languages.
For data crunching and statistical analysis, these would be not-so-exciting languages such as S, SPSS, SAS, and Vilno.
Not so exciting, but sometimes the best tool for data preparation or analysis.

mineral makeup said...

companies marketing mineral makeups and also get the best bargains in mineral makeup you can imagine,
find aout how to consolidate your students loans or just how to lower your actual rates.,
looking for breast enlargements? in Rochester,
homeopathy for eczema learn about it.,
Allergies, information about lipitor,
save big with great bargains in mineral makeup,

change edition interviewing motivational people preparing second
,

interviewing motivational people preparing second time
,

interviewing people motivational preparing for a second time
,

black mold exposure
,

black mold exposure symptoms
,

black mold symptoms of exposure
,

free job interview questions
,

free job interview answers
,

interview answers to get a job
,

lookfor hair styles for fine thin hair
,

search hair styles for fine thin hair
,

hair styles for fine thin hair
,

beach resort in the philippines
,

great beach resort in the philippines
,

luxury beach resort in the philippines
,
iron garden gates, here,
iron garden gates,
wrought iron garden gates
, here
,
wrought iron garden gates
,
You: The Owner's Manual: An Insider's Guide to the Body That Will Make You Healthier and Younger
,
eat eating mindless more than think we we why
,


texturizer,
texturizers here,
black hair texturizer,
find aout how care curly hair,
find about how to care curly hair,
care curly hair,
lipitor rash,
lipitor reactions,
new house ventura california,
the house new houston tx,
new house washington dc,
new house pa philadelphia,
san antonio tx house new,
house new pa philadelphia,
new house washington dc,
new house ventura california,
the house new houston tx,
house new san antonio tx,
the house new houston tx, that you are looking for,
new house ventura california, you need to buy,
new house washington dc,
house new pa philadelphia,
new house san antonio tx,

hair surgery transplant
,

air filter allergy
,

refurbished dell laptop computers
,

hair surgery transplant
,

air filter allergy
,

refurbished dell laptop computers
,

hair surgery transplant
,

air filter allergy
,

refurbished dell laptop computers
,

chocolate esophagus heartburn study
,

chocolate esophagus heartburn study
be informed,

digestion healing healthy heartburn natural preventing way
,

digestion healing healthy heartburn natural preventing way
,
sew skirts, 16simple styles you can make!,
sew what skirts 16 simple styles you,
rebates and discounts on sunsetter awnings,
sunsetter awnings discounts and rebates,
discount on sunsetter awnings


truck and bus tires 12r 22.5, get the best price,
tires truck and bus 12r 22.5 best price,
tires truck bus tires12r 22.5 best price,
plush car seat strap covers,
car seat strap covers,plush,
car seat strap, plush covers,
oscoda voip phone systems, the best!,
oscoda voip the phone system,
oscoda voip phone systems,
exterior iron gates,
oriental wrought iron gates,
powder coated iron garden fencing,

fero 52 said...

black mold exposure,
black mold symptoms of exposure,

wrought iron garden gates,
your nest iron garden gates, here,

hair styles for fine thin hair,
search hair styles for fine thin hair,

night vision binoculars,
buy, night vision binoculars,

lipitor reactions,
lipitor reactions,


luxury beach resort in the philippines,
beach resort in the philippines,

homeopathy for baby eczema.,
homeopathy for baby eczema.,

save big with great mineral makeup bargains,
companies marketing mineral makeups,

prodam iphone praha,
Apple prodam iphone praha,

iphone clone cect manual,
manual for iphone clone cect,

fero 52 binoculars night vision,
fero 52 night vision,

best night vision binoculars,
buy, best night vision binoculars,

computer programs to make photo albums,
computer programs, make photo albums,