Why Ruby?

M

Mike Stephens

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).
 
T

Tim Greer

Mike said:
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).
 
R

Robert Klemme

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
 
D

Dave Bass

Mike said:
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
 
R

Robert Dober

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 :(
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.

--=20
Il computer non =E8 una macchina intelligente che aiuta le persone
stupide, anzi, =E8 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
 
N

Nicholas Wieland

Il giorno 30/dic/08, alle ore 12:35, Robert Dober ha scritto:
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.

I disagree, I know a bit of how "pointy haired bosses" think (they =20
tried to turn me into something like that several times, unfortunately =20=

for them there's a small Zed Shaw in me and they can't destroy my =20
"your shit sucks and now you die" attitude :p) and I think the biggest =20=

problem is availability and cost of resources.
At the end they are something very close to end-users, they care about =20=

the final result, and of course they're not enough educated to make =20
decisions that actually make sense on the tech side. What they see is =20=

that they can choose between a bunch of developers with medium/high =20
salaries and a million of developers with medium/low salaries. What =20
they normally think is: let's take 20 junior developers and hire a =20
senior that acts_as_babysitter. That's the reason under the =20
outsourcing madness too, developers are exchangeable.
I think that the problem here is not companies or management, but =20
pretty much developers. If the only reason you choose a technology is =20=

the market:

a) In my opinion your skills are poor. In general, if "joy" isn't part =20=

of your choice you're a poor developer
b) They put themselves in the position of being exchangeable, they all =20=

have the same skillset, the same mindset, the same level of =20
disinterest about their job.

Corporations especially are particularly good in this, they behave =20
with every project as it already failed, that's why they always try to =20=

keep development costs as low as possible. The reason is simple, they =20=

often fail.
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 :(

Yes, we all have this kind of stories :)
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 =20
project in Python, they gave me 3 months (without asking me a damn). =20
After less than 2 month I was over, wrote the test suite (I remember =20
doing a no-no after the other, testing libraries, frameworks, just =20
because I was bored). The project, after 3 years, is still in =20
production. They switched to PHP of course, they weren't able to find =20=

enough Python developers, they didn't think at me whining because I =20
was bored, finishing my project a lot before, releasing it with an =20
uptime of years and without a single problem in all this time. They =20
wanted numbers.
This is idiotic I know.
At least, after a few days of doing nothing, I rewrote the whole =20
project in RubyOnRails (and finished it !!!), and actually felt in =20
love :)
--=20
Il computer non =E8 una macchina intelligente che aiuta le persone
stupide, anzi, =E8 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.

ngw

--=20
http://www.nofeed.org
 
C

C. Pohjanraito

Mike said:
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 Pohjanraito
 
M

Mike Stephens

C. Pohjanraito said:
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?
 
P

Phlip

Mike said:
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...
 
P

Phlip

Mike said:
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.
 
J

Juan Zanos

Languages affect the way you think about things and the way you are =20
able to solve problems. When
you have a language that gives you the tools to express your problem =20
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 =20
then Ant seems like a logical build system.
But if you look at Rake, which leverages Ruby, you realize how much =20
simpler a
problem is when you have language constructs capable of describing =20
the problem better.

Just to give you an idea of how good Ruby is at teaching different =20
ways of thinking compared to even some of the best languages just =20
take a look at SCons. SCons is written in Python (a very fine =20
language). And SCons is based on an award winning design for a build =20=

system. But in spite of taking advantage of the elegance of Python =20=

SCons isn't able to map the problem domain to the Python language the =20=

way Rake is able to do with Ruby. The Python looks like someone =20
trying to write something in Python where the Ruby almost looks like
it was specifically created to make a build system even though it =20
wasn't. That teaches me something useful that
I can use to simplify many things.

Cheers,
11 00
 
T

Todd Benson

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.


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
 
R

Robert Dober

Il giorno 30/dic/08, alle ore 12:35, Robert Dober 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

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
 
N

Nicholas Wieland

Il giorno 30/dic/08, alle ore 19:44, Robert Dober ha scritto:
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 =20=

his masterpiece.There's a part where the main character cracks an =20
account (on a word processor that one of the characters named =20
Abulafia, like the jewish philosopher of the mistic qabbalah) using =20
social engineering.
Try it if you have a chance.

ngw

p.s. sorry for the OT


--=20
http://www.nofeed.org
 
S

Steven D'Aprano

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.
 
P

Peter Booth

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 <[email protected]
 
B

Brian Candler

Steven said:
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.
 
R

Robert Dober

Stephen, all I snipped away is very sensible stuff, however
Can you say, "anyone else would
have made the same choice"?
Will you not get fired if you say such a stupid thing? Oh I lost that
chess game and yet I mirrored every move of
my opponent. I believe it has been shown that the most dangerous and
most devastator projects are those which have not taken any risks and
all decisions have been taken in a conventional way. In other words,
where is the added value of a person that takes the choice anyone else
would have made?
<More good stuff snipped away>

There is one other thing. I believe that starting a project in Ruby
and having to fall back to a more conventional language is still time
well spent in a sound design process. It will not work the other way
round though. Choosing Java will become a final decision ( nowadays of
course JRuby and friends might offer an escape route after all ;) very
quickly while choosing Ruby while leave you much more freedom of
choice later on.

Cheers
Robert
 
P

Phlip

Steven said:
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?

Point. A company may have hired only programmers who have learned ways to make
programming hard. They could, for example, only use languages with static
typing, and they might never apply real standards to their systems, or write
unit tests.

Then we come along making things easy, and this is outside their core competence
- and their comfort zone!

The same kind of thing happens in the hardware world, where one factory is using
"Taylorist" assembly line manufacturing, and their supplier or client uses Lean
Manufacturing. It's hard to place a Just-In-Time order for 2 days' worth of
parts if your vendor only gives discounts for allotments of 2 months' worth,
deliverable in 2 weeks!
If the original developer gets hit by a bus, can you get somebody to
replace him easily?

The best answer here is you don't throw the API over the wall to the client, you
collaborate _with_ them to specify the features, one by one, over time, with
their tests. Then the vendor knows how to run the test suite, and the Bus Number
is not so low. These are all industry Best Practices, which are very easy to
validate in real-time, not just after-the-fact.

And, again, if your client insists you throw the API over the wall, and don't
waste their time with your silly unit tests, you are screwed!
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?

Point. Certain languages lead to prima-donna-ism much more than others...

(-:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,183
Messages
2,570,969
Members
47,524
Latest member
ecomwebdesign

Latest Threads

Top