Ruby from a Project Manager POV: Pros vs Cons

Rodrigo,

While there might be people better able to answer your more technical
questions, I thought I should offer you my view regardless.

I am also a project manager who started my current job 3 months ago. I
would consider my role to be 50% project management and 50% hands-on
development. When I joined this company, the state of our proprietary
and patent-pending software was in disarray. The software could not
keep up with our sales, and could not handle the load. The software
would not scale even an inch further. Critical components were failing
and a team of three people were spending most of their time holding it
together with duct tape.

One of the first things I did was suggest a change in platform to Ruby
and the Rails framework, which was immediately approved. We started
hacking away and now, we have a long-term plan that includes a
solution to our scalability issues. The future is looking exceedingly
bright.

We chose Ruby. Here's why:

1. It's a do-little-receive-lots language.
I know this has been re-hashed and replayed by many, and that only
confirms the validity of the claim. If I'm lucky, I have four hours
per day in which I can code. With tight deadlines. Ruby and Rails
allows me and the rest of the team to get results with less work.

2. TDD.
Rails in particular feels as if it's built for testing. Previously,
we've had limited testing as the past platform made them difficult to
automate. With Rails, on the other hand, you can do unit, functional
and integration tests out of the box--and there are plenty of other
options as well. While we haven't yet been able to move to a
completely test driven development environment, we're getting there.

3. Fast and vibrant community.
The Ruby and frameworks communities are growing and moving rapidly. If
you're looking for a solution to a problem--authentication, background
processing, etc., chances are a quick Github search will solve the
problem for you and save days or weeks of development. And they've all
got their own tests, so you can make sure they work in your
applications.

4. Quick and effective help.
Because of 3., there's lots of help to get. Some of it is even free
(*waves!*). If you want to pay for it, there are plenty of top-notch
companies and individuals who can consult you on any number of things.
They're so easy to find that I won't even link to them.
Documentation's fine--I've never had any issues with finding what I
need.

5. Ease-of-deployment.
Personally, I first looked at Rails before v1.0, but moved away from
it sometime in '06 because deployment was clunky and didn't fit my
needs. Since then, systems like Phusion Passenger (aka mod_rails) have
emerged, making deployment a breeze--to take simplicity to extremes,
you can just FTP your application to your production server.
Naturally, you may not want to go *that* far, and so there are options
such as Capistrano. There are options everywhere on the complexity
scale.

6. It can scale.
Yes, Twitter had well-publicized scaling problems, but they got over
it and are still mostly running Rails (part of their stack is in
Scala). There are plenty of other high-volume sites running Rails,
too. Yellow Pages and Github are a couple. It can most definitely be
done.

7. It's sexy.
I said "Ruby" and "Rails" and our CEO and Board of Directors clapped
their hands in joy. Much as I hate to admit it, they're buzzwords and
the higher-ups loves them--regardless of whether they know what it is
or not. (If you really want to make their socks roll up and down,
mention "cloud computing" in the same sentence.) I realize that this
is a completely non-technical reason for choosing Ruby, but it might
be worth taking into consideration anyway.

As for your other questions... to me, maintaining software is more
about planning and source control. If you plan your app well and use
the right source control tools (git is excellent), it doesn't really
matter what language you're using.

I can't reliably answer the ones about caching and databases. I know
Rails support different vendors and that there are lots of caching
options.

I hope any of this helps.

Best,
Sebastian