Why Ruby?


#1

I have never seen or heard of Ruby in a corporate context. The single
exception (where I first came across it) was a supplier who was using it
with Watir for testing a Java application.

If you supply services to corporates, what sort of case can you make for
using Ruby rather than Java, which is in use everywhere? (I’m not
thinking of Rails here, which is a rather specialized).


#2

On 30.12.2008 08:44, Mike S. wrote:

I have never seen or heard of Ruby in a corporate context. The single
exception (where I first came across it) was a supplier who was using it
with Watir for testing a Java application.

If you supply services to corporates, what sort of case can you make for
using Ruby rather than Java, which is in use everywhere? (I’m not
thinking of Rails here, which is a rather specialized).

If I type “why ruby” in my favorite search engine’s form the first hit
is http://www.ruby-doc.org/whyruby

My personal reasons are

  • lots of things can be done on few lines
  • it has a clean syntax
  • it is pure OO

Kind regards

robert


#3

Mike S. wrote:

I have never seen or heard of Ruby in a corporate context. The single
exception (where I first came across it) was a supplier who was using
it with Watir for testing a Java application.

If you supply services to corporates, what sort of case can you make
for using Ruby rather than Java, which is in use everywhere? (I’m not
thinking of Rails here, which is a rather specialized).

Why Java? Why Python? Why Perl? Why PHP? Why fill in the blank?
There is no why. Ruby has been around a while. Some people like the
syntax of the language. Some people don’t. Ruby has been getting more
popular compared to some languages that have been around longer, or
that have seen they busiest days. I doubt any of them are going
anywhere, and at some point, maybe soon or maybe not soon, some other
language will be the more hyped one, and people will start using it
more. It might be a new one, or one with a new service or framework,
or just something else to make it more exciting (even if it’s been
around a while).

People might see it as more interesting, more aligned with their ideal
of how a language should be designed, or think it’s the next big thing.
If you don’t like ruby, that’s cool. There are a lot of good,
effective languages. Maybe you’ll never see a request or demand for
ruby development in the companies you work for, or when you look for a
job? Maybe you’ll end up looking for a job and find that a bunch of
companies you’re considering all want ruby developers? Maybe they’ll
say “or another language” or they might have their entire project
dependant upon you knowing it really well. The same can be true of any
language, it might depend on the job and company, or the specific
field, though.

There’s no reason to learn ruby if you don’t want to. Plenty of people
still use other languages and will continue to. You might not ever
miss an opportunity, but you also can’t try and excel at all of the
most used or hyped languages (regardless if they deserve the hype of
not), because you’ll never get really good at all of them and new stuff
comes out all of the time. I first started looking into ruby probably
back in '95 or '96, but never got into it then. I dabbled a little,
but didn’t get into it. I liked Perl too much (I still like it better
than Ruby, Python or PHP), but when the ruby on rails framework buzz
hit, a lot of people jumped on it quickly (at least it seemed). I
don’t recall anyone I knew that programmed knowing what ruby was in
around 2001 or 2002, but in 2003-ish, it started to take off. Don’t
let the popularity of a language make you think it’s more of less
worthy. It might be worth investigating if it gets popular, so you’re
not at a disadvantage though.

I worked for a company that had a project in Perl. Worked fine, Perl is
a great language. They wanted it all changed to heavily OO Perl code.
Fine, so that is nearly done. Then they said they wanted it in
mod_perl with Mason. Fine. Then it was a project in PHP. Okay. Then
they dropped that and wanted it done in Python. I’m not great at
Python coding, so that wasn’t fun, but that was short lived and the
company owner got all hot and bothered about Ruby on Rails when it was
really first hitting sites like slashdot. My head sunk. Instead of
getting the job done, the owner was more interested in new, interesting
things (to him), and out of all of the coders on the team that were
experts in C, C++, Python, Perl, PHP, we all had to stop and learn
ruby. I quit that week.

I mean, I get paid, I’ll do whatever the boss wants, but when things are
ignored and projects never get done and you have a company owner
telling his entire client base that this massive project will be done
in 1 to 2 weeks time, expecting everyone to learn a new language and
have the code be secure, stable and efficient, from scratch, that’s too
much stress. We literally got the news one day in a meeting and were
told we’d get bonuses if we stayed up through the night, in some vain
hope we could roll out a major update in a new language (to us), using
a new web framework, and actually have a working, productive project.
I slept that night while everyone spent the next 2 months straight
trying to get a handle on that one single portion of the project that
would have taken a matter of hours in a language everyone knew already.
Obviously this wasn’t the fault of ruby, but it really made me dislike
the whole idea of it.

The point is, sometimes you have to ask yourself “why”? Sometimes it’s
to add another language to your resume, sometimes it’s to actually work
in it, see what the benefits are, and sometimes just to be prepared to
be able to handle what’s thrown at you. Some people enjoy it a lot and
even despise languages I personally like better. Maybe they had a boss
with their heads in the clouds that went the way of the latest buzz,
too? I think the initial exposure to certain technologies are what
primarily affect a person’s view. However, at some point, you have to
(hopefully it’ll be quick) just take it for what it is and try and look
at it without bias or comparing it to the languages you already know.
That is, needless to say, few people have a good reason to learn
another language (to the point where they are truly good at it), if
they already know other languages where they can do anything they want,
and do it well (being efficient, secure and stable).

So, don’t let anyone or any buzz or web sites that are for or against it
sway you. For whatever reason, you’re here, so you’ve heard of it. If
you feel it might be something in demand in your field, maybe look into
it. Maybe it’ll be a language you’ll enjoy, or maybe it’ll just never
agree with you? Personally, I like it, but I like a lot of languages.
Ruby isn’t my favorite, though. Same with PHP – it’s not my #1
choice, but I like it enough to use it. Knowing them (and others)
comes in pretty handy regarding web related programming topics and
projects. Be it a client asking for help because their script isn’t
working, or maybe a project you got because you at least showed the
company that you have an open mind and are willing to work with the
choices they’ve made? I’ve found that a little goes a long way with
things like that.

I’ve told people point blank that “I can code this in PHP or Ruby”, but
that I “strongly prefer Perl”, and thus can develop the project faster,
and feel more confident about my code. That’s not to say I suck at PHP
or ruby, but that I’ve been coding in Perl since maybe 1992-ish, and
I’m probably always going to know it better and feel more comfortable
with it over something like PHP, Ruby, Python or whatever else. I find
that, so far, except that one company being the exception, they
ultimately don’t care as long as the results are quality and you don’t
create some alien spaghetti code, and make good, relevant comments.
Perhaps one day, something else might be my #1 language… maybe it’ll
be ruby? Probably not, but I don’t think it’s going anywhere, so enjoy
using it, if you have the time and desire (or motivation).


#4

On Tue, Dec 30, 2008 at 12:14 PM, Dave B. removed_email_address@domain.invalid
wrote:

Mike S. wrote:

If you supply services to corporates, what sort of case can you make for
using Ruby rather than Java, which is in use everywhere?

Not a very good case: Java rules.
It is indeed the ignorance that rules today. This ignorance however is
nothing a single person has to be ashamed of. It is imposed by
ridiculously short decision times, extreme budget pressure and an
overall stressful environment.
I am not capable of quoting any studies on this and would welcome any
pointers. It is however quite obvious (my favourite prove method ;),
that the pressure which exists in our professional lives discourages
reflexion, deep understanding of what we are doing and innovative
decisions. It is my believe that the winning business model will be
one that breaks this vicious circle.

My personal experience is that when I am talking to a decision taker
about Ruby and she asks me why, my first sentence is already
completely misunderstood - I am well aware of my responsibility in
this kind of misunderstanding. But I never get a chance to discuss
matters during say an hour. The cherry on top of the cream was one
internal encounter with the decision maker, where I suggested to stop
developpement in Java and start with Ruby using JRuby for an easy
transition. This was considered to much risk taking and too much time
consuming (sic). After presenting my case (1800s) the aforementioned
response was made in less than 300s. Immediately after that they
stalled the project for two months (yes that is 5184000s, you got that
right) in which they discussed a migration from Java to C#(1). I have
not stayed along to experience the outcome of this… one has only
one stomach you know :frowning:

For me, Ruby was an upgrade from Perl, which I’ve used for everything
from CGI scripts to the sort of number crunching one would normally
associate with C. Development of Perl 6 seems lost in the wilderness so
I jumped to Ruby.
Exactly my reason, thank you Perl6 team ;).
I don’t regret it, but I still use Perl 5 where
appropriate. And PHP. Even a little JavaScript. Horses for courses.
Perl used in a sober way can be very beautiful.

Cheers
Robert

(1) And that for one reason, the new maintainer of the package
thaught, correctly or incorrectly that the GUI would be sexier with
.NET.


Il computer non è una macchina intelligente che aiuta le persone
stupide, anzi, è una macchina stupida che funziona solo nelle mani
delle persone intelligenti.
Computers are not smart to help stupid people, rather they are stupid
and will work only if taken care of by smart people.

Umberto Eco


#5

Il giorno 30/dic/08, alle ore 12:35, Robert D. ha scritto:

one that breaks this vicious circle.
I disagree, I know a bit of how “pointy haired bosses” think (they
tried to turn me into something like that several times, unfortunately
for them there’s a small Zed S. in me and they can’t destroy my
“your shit sucks and now you die” attitude :p) and I think the biggest
problem is availability and cost of resources.
At the end they are something very close to end-users, they care about
the final result, and of course they’re not enough educated to make
decisions that actually make sense on the tech side. What they see is
that they can choose between a bunch of developers with medium/high
salaries and a million of developers with medium/low salaries. What
they normally think is: let’s take 20 junior developers and hire a
senior that acts_as_babysitter. That’s the reason under the
outsourcing madness too, developers are exchangeable.
I think that the problem here is not companies or management, but
pretty much developers. If the only reason you choose a technology is
the market:

a) In my opinion your skills are poor. In general, if “joy” isn’t part
of your choice you’re a poor developer
b) They put themselves in the position of being exchangeable, they all
have the same skillset, the same mindset, the same level of
disinterest about their job.

Corporations especially are particularly good in this, they behave
with every project as it already failed, that’s why they always try to
keep development costs as low as possible. The reason is simple, they
often fail.

stalled the project for two months (yes that is 5184000s, you got that
right) in which they discussed a migration from Java to C#(1). I have
not stayed along to experience the outcome of this… one has only
one stomach you know :frowning:

Yes, we all have this kind of stories :slight_smile:
Mine is from my pre-Ruby days, where I used to be a Python developer.
One of the biggest banks in Italy hired me to develop an internal
project in Python, they gave me 3 months (without asking me a damn).
After less than 2 month I was over, wrote the test suite (I remember
doing a no-no after the other, testing libraries, frameworks, just
because I was bored). The project, after 3 years, is still in
production. They switched to PHP of course, they weren’t able to find
enough Python developers, they didn’t think at me whining because I
was bored, finishing my project a lot before, releasing it with an
uptime of years and without a single problem in all this time. They
wanted numbers.
This is idiotic I know.
At least, after a few days of doing nothing, I rewrote the whole
project in RubyOnRails (and finished it !!!), and actually felt in
love :slight_smile:


Il computer non è una macchina intelligente che aiuta le persone
stupide, anzi, è una macchina stupida che funziona solo nelle mani
delle persone intelligenti.
Computers are not smart to help stupid people, rather they are stupid
and will work only if taken care of by smart people.

Umberto Eco

I see that Abulafia is well known outside Italy as well :slight_smile:
I love “Il pendolo di Focault” as well, one of my favourites.

ngw


#6

Mike S. wrote:

I have never seen or heard of Ruby in a corporate context. The single
exception (where I first came across it) was a supplier who was using it
with Watir for testing a Java application.

If you supply services to corporates, what sort of case can you make for
using Ruby rather than Java, which is in use everywhere? (I’m not
thinking of Rails here, which is a rather specialized).

It is very handy for making conversion and import scripts. I’ve been
using it for converting between geographical coordinate systems, for
processing translations in a spreadsheet, and for generating svg and
html from algos and xml.

Just to name some small stuff…

It is a nimble little language!

Casimir P.


#7

C. Pohjanraito wrote:

It is a nimble little language!

One of the reasons I favour Ruby is it isn’t Java. Anything mainstream
gets coated in layers of bureaucracy.

The question is not so much whether people like it versus something
else, it’s how it might find a niche in a corporate context. Rails has
given Ruby a sort of USP so almost always when you see a vacancy it’s
for Ruby with Rails. My objection to Rails is you’re back to having to
learn more than one set of things before you can get going.

I’m thinking along these lines -
very simple to install;
zero licence fees;
extensive integration features;
fully OO - a fast agile cousin of Java

As a matter of interest - is it really all that nimble, or is it that
nimble people use it?


#8

Mike S. wrote:

If you supply services to corporates, what sort of case can you make for
using Ruby rather than Java, which is in use everywhere?

Not a very good case: Java rules.

For me, Ruby was an upgrade from Perl, which I’ve used for everything
from CGI scripts to the sort of number crunching one would normally
associate with C. Development of Perl 6 seems lost in the wilderness so
I jumped to Ruby. I don’t regret it, but I still use Perl 5 where
appropriate. And PHP. Even a little JavaScript. Horses for courses.

Dave


#9

Mike S. wrote:

I have never seen or heard of Ruby in a corporate context.

That’s because difficult and bloated systems like VB or Java were
invented to
sell to managers in corporate contexts. That makes languages with merit
hard to
squeeze in.

The single
exception (where I first came across it) was a supplier who was using it
with Watir for testing a Java application.

That’s because Watir is a killer app - one whose value has exceeded the
shock of
Ruby. Like Rails, people learn Ruby to use Watir.

If you supply services to corporates, what sort of case can you make for
using Ruby rather than Java, which is in use everywhere? (I’m not
thinking of Rails here, which is a rather specialized).

If “services” is a web api, why should they care what language you wrote
an
application in?

Either way, a company might think they need to see what language you use
as a
“due diligence” thing, to see if you are really a member of the Java/C#
club.

If so, you can win by using Ruby. You typically accomplish twice the
features in
half the time and 1/10th the code, compared to Java. You can easily
overwhelm
your competition…


#10

Mike S. wrote:

As a matter of interest - is it really all that nimble, or is it that
nimble people use it?

Ruby code is absurdly easy to write, test, and refactor. Java uses
static
typing, and Perl (for example) uses helplessly cluttered notation and
ridiculous
defaults. That’s why Ruby statements can be cleaner and more expressive.


#11

Dave B. wrote:

Mike S. wrote:

If you supply services to corporates, what sort of case can you make for
using Ruby rather than Java, which is in use everywhere?

Not a very good case: Java rules.

If all the other companies just … jumped off a cliff, would you?


#12

Languages affect the way you think about things and the way you are
able to solve problems. When
you have a language that gives you the tools to express your problem
space with ease and simplicity you’re
in good shape. If you don’t then you have unwanted complexity.

Here’s a simple example. If you’re only familiar with Java and XML
then Ant seems like a logical build system.
But if you look at Rake, which leverages Ruby, you realize how much
simpler a
problem is when you have language constructs capable of describing
the problem better.

Just to give you an idea of how good Ruby is at teaching different
ways of thinking compared to even some of the best languages just
take a look at SCons. SCons is written in Python (a very fine
language). And SCons is based on an award winning design for a build
system. But in spite of taking advantage of the elegance of Python
SCons isn’t able to map the problem domain to the Python language the
way Rake is able to do with Ruby. The Python looks like someone
trying to write something in Python where the Ruby almost looks like
it was specifically created to make a build system even though it
wasn’t. That teaches me something useful that
I can use to simplify many things.

Cheers,
11 00


#13

On Tue, Dec 30, 2008 at 9:39 AM, Phlip removed_email_address@domain.invalid wrote:

exception (where I first came across it) was a supplier who was using it
with Watir for testing a Java application.

That’s because Watir is a killer app - one whose value has exceeded the
shock of Ruby. Like Rails, people learn Ruby to use Watir.

Alright. I have a small gripe about that concept. I think I’m part
of a small minority when I say that Rails learners don’t know crap
about Ruby. But, I have to qualify that statement with the fact I use
Ruby for different things and started learning it long before Rails.
I have yet to really get into Watir.

Todd


#14

Il giorno 30/dic/08, alle ore 19:44, Robert D. ha scritto:

I see that Abulafia is well known outside Italy as well :slight_smile:
I love “Il pendolo di Focault” as well, one of my favourites.
Actually all I could read was “Il Nome della Rosa” everything else,
well mi dispiaceva ;).

Ah, too bad, that’s a citation from “Il pendolo di Focault”, probably
his masterpiece.There’s a part where the main character cracks an
account (on a word processor that one of the characters named
Abulafia, like the jewish philosopher of the mistic qabbalah) using
social engineering.
Try it if you have a chance.

ngw

p.s. sorry for the OT


#15

On Tue, Dec 30, 2008 at 3:12 PM, Nicholas W.
removed_email_address@domain.invalid wrote:

Il giorno 30/dic/08, alle ore 12:35, Robert D. ha scritto:

I disagree,
Do you? I felt that you said pretty much the same. Ok I take your
variations into consideration
and I am quite happy that you had better experiences than your humble
servant. But what I really wanted to express is the need for numbers,
guidelines, etc. etc. which somehow obscures needs and realities.

PHP of all languages brrrr

>> Il computer non è una macchina intelligente che aiuta le persone >> stupide, anzi, è una macchina stupida che funziona solo nelle mani >> delle persone intelligenti. >> Computers are not smart to help stupid people, rather they are stupid >> and will work only if taken care of by smart people. >> >> Umberto Eco > > I see that Abulafia is well known outside Italy as well :) > I love "Il pendolo di Focault" as well, one of my favourites. Actually all I could read was "Il Nome della Rosa" everything else, well mi dispiaceva ;). Ciao Roberto

#16

On Tue, 30 Dec 2008 07:36:03 -0800, Phlip wrote:

If you supply services to corporates, what sort of case can you make
for using Ruby rather than Java, which is in use everywhere? (I’m not
thinking of Rails here, which is a rather specialized).

If “services” is a web api, why should they care what language you wrote
an application in?

Put yourself in the shoes of the company paying for the software. There
are many reasons why you should care about the language it is written
in.

Does the language make it easy or difficult to write correct code? How
easy is it to maintain later?

If the original developer gets hit by a bus, can you get somebody to
replace him easily? What if he turns out to be a real prima donna, or
gets bored halfway through the project and leaves? Is there is a
shortage
of developers in this language? Are you going to be reliant on a single
lone-cowboy, or even a single company? What is the learning curve to
train somebody new in the language? Is there a steady stream of new
developers learning this language so you can maintain it years from now?

If (when) the project goes over-budget and late, can you prove that you
used industry standard practices? If you use some weird language nobody
has heard of, and things go bad, will you be blamed for choosing a toy
or
experimental language not up to the job? Can you say, “anyone else would
have made the same choice”?

In five years time, or ten, will the chosen language still be supported
and updated? Will there be security patches, or will it be abandoned?

Generally, corporations are risk-averse. Their decisions are made more
on
the basis of “What if this goes wrong?” rather than “What’s the best
that
can happen?”. If you’re risk-adverse, you’re expecting that the project
will end up late, over-budget or missing features, and let’s face it, IT
projects are notorious for doing all three. The IT world is full of
people who will promise you the world, and then fail to deliver. Imagine
you’re not a developer yourself, or your only development experience was
a bit of VB ten years ago, and maybe a few Excel macros. Why should you
believe these brash young kids with their Ruby or Haskell or Python?
Talk
is cheap, and it’s not their money being spent.

That’s the rational reasons. Of course there are plenty of irrational
reasons too. But if you can’t make the case for Ruby against the
rational
concerns, you certainly won’t be able to get past the irrational ones.


#17

Steven D’Aprano wrote:

If (when) the project goes over-budget and late, can you prove that you
used industry standard practices?

That is: “nobody got fired for buying IBM”

It seems that everyone is risk-averse, but nobody thinks about
opportunity costs. (e.g. if we pass up the opportunity to deliver a
workable solution in one month instead of six, how much money does that
lose us?)

Similar considerations apply to XP ideas too (e.g. “do the simplest
thing which can possibly work”, “you ain’t gonna need it” etc). If your
business won’t do XP because it thinks that only the waterfall model is
valid, then equally it’s not going to consider using a different
language.


#18

These concerns are exactly the ones I was asked at the first two
companies where I wrote ruby. They are valid concerns and whilst they
didn’t prevent me from using ruby they certainly influenced my career
sucess. Managing these forces requires skill at persuasion and
marketing, a lical track record, and good luck.

Sent from my iPhone

On Dec 30, 2008, at 9:19 PM, Steven D’Aprano
<removed_email_address@domain.invalid


#19

Mike S. wrote:

I have never seen or heard of Ruby in a corporate context. The single
exception (where I first came across it) was a supplier who was using it
with Watir for testing a Java application.

The shame they could not test Java with Java is overwhelming.

Obese platforms like Java are invented to sell to corporate managers.

If you supply services to corporates, what sort of case can you make for
using Ruby rather than Java, which is in use everywhere? (I’m not
thinking of Rails here, which is a rather specialized).

The main selling point is: Getting twice the features written, in half
the time,
with 1/10th the lines of code, and with no bugs (under Test Driven
Development).

Yes, Java supports TDD, but Ruby is a dynamic language. That makes
everything
easier, including the testing.

In Java, you must declare the class hierarchy for every interface, and
you must
declare which types are allowed in what variables. This overhead is
remarkably
similar to the (Taylorist) principle that to do anything in a big
company you
must first fill out your paperwork, in triplicate, get it approved by
your
managers’ managers’ managers, bury it in peat for a decade, etc. Java is
an
example of “overcontrol”, yet that is exactly the selling point that Sun
makes
to your managers.


#20

Thanks Phlip.

If I add all the responses together I think we get Ruby can be
positioned for agile rapid applications, prototyping etc. Java is
typically more long-winded but suitable for big expensive structured
mainstream projects requiring all the bureacratic strategic
architectures and policies.