
Ask HN: Should I Learn Ruby? - acpigeon
I would like to get some opinions on the value of taking a basic Ruby programming class.<p>About me: Recent Eng/Biz grad, want to eventually start my own company. I am much more of a business person than an engineer, yet having graduated from a top ten engineering school, I realize the value of understanding tech no matter what part of a startup you work on.<p>Because I am interested in the web tech space, I think it would be a valuable experience for me to take 6 week online crash course in Ruby in order for me to 1) be conversant in a very popular language in this space and 2) have the ability to do very rough mockups of product ideas, or at least understand what goes into building them, and 3) become more generally aware of peripheral issues in web tech and what goes into the development process.<p>I have taken C++ classes in the past (no HTML or CSS experience though), so programming itself is not new to me and I have no illusions about becoming some mad awesome programmer in a couple of weeks. I’m simply looking for a new perspective in seeking out and solving entrepreneurial problems.<p>I’d love to get some perspective from actual programmers and startup people on wisdom or tomfoolery of this idea. I am leaning towards going for it at this point, but might be dissuaded if the reasons are strong, or if better uses of my free time are proposed.<p>For the record, the class is cheap (&#60;$100) and is geared to beginners.<p>I’m all ears.
======
zedshaw
I'd say, learn Python or Ruby, doesn't matter, but try them both for a few
days. One will click and the other won't.

If you go the Python route, I've got a free book I'm working for beginners
that might be too beginner for you:

<http://learnpythonthehardway.org/>

But I reference two other books on that page which actually could be a good
start for you. After that, check out the Django book:

<http://www.djangobook.com/en/2.0/>

Which will teach you Django, a very popular web framework (more popular than
Rails actually).

I'd also say, take everything I say with a grain of salt. I'm humorously
famous for hating Rails.

~~~
acangiano
I generally agree with your comment, but I found this stament to be
inaccurate:

> (more popular than Rails actually)

[citation needed]. The largest websites/web applications in the world are
built in Rails much more frequently than in Django. And there is much more
demand for Rails developers in the marketplace. I fail to see evidence that
Django is actually _used_ more than Rails is in the real world.

~~~
andrewtj
You may want to reread his post. The penultimate sentence is a kicker.

~~~
binspace
Yeah it's a hoot, especially coming from the guy who will kill people not
using statistics, which is a great read btw.
<http://www.zedshaw.com/essays/programmer_stats.html>

I'm sure it's just an off-the-cuff remark. I've made plenty in my day.

~~~
andrewtj
_I'm sure it's just an off-the-cuff remark._

The guy weighs in on the opposite side of something that is common knowledge,
then says you should check what I'm saying because I could be fibbing, oh and
I'm famous for having a bias against the side I've just disfavoured — and you
reach that conclusion?

If I were a cynic I'd say both you and he were trolling, but I rather think he
was just taking the mickey and it's turned into a rather droll black comedy.

~~~
binspace
aah, it was supposed to be humorous. Jeez, I guess the jokes on me.

> and you reach that conclusion?

The only conclusion I have reached so far is that you are a dick.

~~~
andrewtj
I don't expect you'll respond, but, what happened in the 4 hours between your
first civil response and this second rather uncouth one?

~~~
binspace
It figures you downvoted me. You will probably downvote this one too.

I was sort of thinking about it, and I realized you were screwing with me.
It's sortof humorous and dickish (sorry douchey is more appropriate) at the
same time.

I don't hate you, but it's not how I would conduct myself, especially if
somebody is obviously ignorant over a certain context of discussion.

> second rather uncouth one

I thought it was appropriate. I could have been more high-brow about it, but
why bother? You would have downvoted me anyway and would not have been any
more sympathetic. It certainly made me feel better.

Also using lmgtfy, _classy_! (I had another comment but decided I didn't want
to get downvoted twice by you, so I merged it).

~~~
andrewtj
_It figures you downvoted me. You will probably downvote this one too._

So that's what concerned you. The points don't matter. Seriously, they don't
mean anything and certainly shouldn't change the way you interact with people.
Particularly as you don't know who is doling out the points.

<http://news.ycombinator.com/item?id=1505323>

~~~
binspace
> So that's what concerned you. The points don't matter.

That's your response? How very caviler of you.

It does matter because it's communication, albeit binary and pretty bad, about
how well your comment is being received. It matters emotionally, just like a
scowl matters, or a joke at your expense matters.

It's also a form of censorship and throwing rotten food on the poster.

> Particularly as you don't know who is doling out the points

Well, that is part of the problem, isn't it? Humans are not completely
logical, Dr. Spock. Including me and you... We gotta make assumptions
sometimes in absence of information. Well cool, I found out something new, you
got your jab in there. Win-win.

Point taken about how the voting algorithm works.

~~~
andrewtj
I can only assume that your vitriol stems from my lmgtfy post and so for that
I apologise. My comment about the points was and is both sincere and practical
advice and I hope you can revisit that post and my others in a less
antagonistic light.

~~~
binspace
Thank you, and no worries. It's been a few days and I'm well over it.

I get the message you were trying to get across and I agree with it.

Mainly, I perceived you as being rude and disdainful (lmgtfy, "That is your
conclusion?"). I can't speak for everybody, but my immediate reaction is to
feel stupid, and then get defensive. It's hard to take a step back and realize
how minor it is when in the moment.

I know that was not your intention. I really do appreciate you sticking this
out.

------
rufugee
As someone who has done 4 years of Rails development and has recently switched
to Django for new projects, I can tell you it would be worthwhile to learn
both. Ruby and Rails are great most of the time, and the Ruby way of doing
things is a great learning experience.

That said, I threw my hands up after running into multiple libraries duck
punching (monkey patching) ActiveSupport into a mangled, conflicting mess one
too many times. The open classes thing really is harmful, no matter what
anyone tells you. It's a feature that, when used with care, can be very
powerful...but the problem is in my experience it's not used with care very
often in the Rails world.

I've heard Scala solves the issue with open classes by keeping things in
context with the code that surrounds it, but I personally haven't verified it.
Besides, that's not what you asked.

Here's a metaphor that I really feel holds true: Rubyists are
magicians...Pythonistas are masons. If you have to rely on your own code only,
then by all means delve as deep into magic as possible. However, if you have
to rely on other's work, the mason's approach is much more intuitive,
reliable, and safe.

~~~
acpigeon
That's a helpful metaphor. What I'm looking for is a framework that can be
used for rapid prototyping, and it sounds like rails fits the bill.

~~~
rwhitman
Django is great for rapid prototyping. The admin area is built in, that alone
saves a ridiculous amount of time

~~~
grasshoper
The admin will definitely be extremely helpful to someone who is new to
databases.

------
waxman
For someone who isn't a serious programmer but is looking to prototype a
business idea, I think Ruby/Rails are more user-friendly than Python/Django.

\- Rails deployment and hosting are super simple with Heroku
(<http://heroku.com>), which, again, I think is more user-friendly than the
Python equivalent (Google App Engine)

\- There are some excellent free resources out there (check out
<http://railscasts.com>, <http://guides.rubyonrails.org/>, and
<http://railslab.newrelic.com/scaling-rails>)

\- There is a very vibrant community of plug-ins (gems)

Honestly, I think that getting a book (try this one:
[http://pragprog.com/titles/rails4/agile-web-development-
with...](http://pragprog.com/titles/rails4/agile-web-development-with-rails),
4th edition), and then simply practicing will get you up and running faster
than a course.

Also, now is a good time to get into Rails, as version 3.0 has just came out.

~~~
ahlatimer
I'd honestly suggest just playing around with Rails rather than trying to get
through the reference manual that is Agile Web Development with RoR. That book
seems to be well meaning, but it's slow and horribly long. I managed to get
through the first 200 or so pages, gave up, and just used Google, the API, and
a Rails developer I know to fill in the parts that I didn't know. I've now
been a professional Rails developer for over a year, and I can't say I would
be any more proficient if I stuck with the book. That said, YMMV.

An alternative is <http://railstutorial.org/book>, which has the advantage of
being free.

------
cubicle67
Do it.

Ruby is the perfect scripting language, and you'll be surprised at the sheer
utility of having something the ability to use something like this. Forget the
web side of things; just he ability to whip up a quick throwaway script (to
automate office tasks, calculate forecasts, do complex eng calculations etc)
gives you a massive advantage over others in your field.

~~~
neovive
I'm also considering learning either Python or Ruby, but was leaning more
towards Python due to its strong math libraries. Does Ruby have equivalent
capabilities for math and science?

~~~
WALoeIII
No SciPy is amazing and I wish ruby had something like it. Its also got a lot
of C so its pretty fast though you interface with it in Python.

<http://www.scipy.org/>

------
dotBen
At one level, I can't see any downside (I mean, short of loosing a hundred
bucks and your time).

But at another level there are other compelling arguments... Like you said,
understanding technology and the way web sites and web apps are put together
is useful.

But here's another thought: if you keep learning after the course ends and can
put some Ruby on Rails code together you'll always be able to find work as a
junior developer (or better, if you are good) somewhere - the industry is
desperate for more bodies.

Now I'm sure my fellow co-founders and startup entrepreneurs will comment that
we really need _highly talented_ engineers, but realistically we just need
more people across the board right now who can code well and so that means a
much lesser chance of being out of work for those who have these skills.

From the individual's perspective I think that is valuable in this economy,
esp if the area you really want to work in is suffering job wise.

~~~
acpigeon
Interesting... I had never thought of doing this as a way to develop a
marketable skill. And as you say, even if I'm just able to put some basic code
together, that would be a very useful ability to have in a startup environment
where everyone has to wear multiple hats.

Thanks for the perspective!

------
acangiano
For the record, Ruby is just one, albeit massive, component. You need to learn
a bit about each of the following areas.

Must have:

\- HTML

\- CSS

\- Ruby

\- Ruby on Rails

Really nice to have:

\- JavaScript / jQuery (or similar)

\- SQL / Database design

Nice to have:

\- Git (Revision control system)

\- RSpec or similar (Ruby testing)

You don't need to learn everything tomorrow, but I laid out sort of a roadmap
of things you may want to focus on.

PS: Can you provide us with a link to the course?

~~~
spokey
May I recommend that if you're new to Ruby and especially if you're new to
programming as a whole you may be better off with web framework like Sinatra
rather than Rails. Rails has a lot of "magic" and a fair bit of code
generation that is going to make it harder for you to understand what is
really going on.

I mean it's nice that rails can generate an "hello world" app without writing
a line of code, I think you'll learn more about programming and writing a web
app if you can better see what's going on:

Sinatra:

get '/hi' do "Hello World!" end

Rails:

rails generate controller hello

For that matter, don't let all this web and database stuff scare you off. Ruby
is useful and powerful as a stand alone scripting language. You'll learn a lot
just writing scripts that can run on the command line (and that will lay the
foundation for the web stuff if you'd like to dig deeper). The web stuff isn't
really any harder, but it's another layer of things to learn.

~~~
jshen
I completely disagree. Rails takes care of the foundation for you, and a
novice doesn't need to know how it's implemented for a while. It also has good
practices built in like dev,test,prod environments, testing infrastructure,
mvc separation, etc.

Sinatra assumes you will roll all of this on your own. A novice won't know to
do this, or how to do it, so I think it's better to have it done for you at
first.

------
cageface
Do it. Having some understanding of programming will be an asset even if you
don't use it and Ruby is a fun and easy language to learn.

If nothing else you'll appreciate why the engineering team usually considers
the sales team its enemy.

~~~
acpigeon
Agreed. Having been played for both "sides" at one point or another, I'm well
aware of the tension.

It's a fact that there is credibility in having some knowledge of both the
technical and business side of any operation, and it's definitely a part of my
consideration in doing this.

------
csexton
One advantage to learning ruby is that the ruby community tends to be more
entrepreneurial than other programming communities I have been involved in.
Something awesome about the scrappy freelancers and startup folks I have met
at the local RUGs.

If yup do decide to learn ruby, I highly recommend get involved in the
community. They'll make great technical resources and business connections.

------
CoachRufus87
learn rails. during this process, you'll pick up on the ruby that you actually
need to know, vs learning ruby and then learning rails. i learned rails over
the past year and now have a number of apps running in production for clients.

<http://railstutorial.org/> taught me rails. (along w/ stackoverflow.com)

------
cheald
Ruby is a marvelous language, and it'll serve you well to know it. It's
applicable in a lot of problem spaces, and it will introduce some concepts you
probably haven't run into elsewhere before.

------
samratjp
Yes, take the class if it's at that price range. Then, checkout tryruby.org
and railstutorials.org. Those two will complement your learning.
RailsTutorials is very much targeted for all skill levels and if you can find
your way to post on HN thus far, you may be able to follow along
RailsTutorials :-)

Edit: Also, look at my earlier comment
<http://news.ycombinator.com/item?id=1499755>

------
pierrefar
For a $100, if you have the time do it. Even if Ruby doesn't end up being your
favorite language, you'll still learn something new. At the very least, you'll
learn The Way of Ruby to solve problems and that will improve your coding in
many subtle ways. It's simply experience that paying $100 for is a bargain.

Besides, you might end up making new friends and contacts.

------
smitjel
Wait...6 weeks to become conversant in Ruby? A recent engineering grad (from a
top ten school no less) even takes the time to post this question? Why not do
a quick google search on learning ruby and find a wealth of free resources on
learning ruby and just dive in, like most engineering minds would?

Hmm...I guess that's just me, someone with an engineering degree myself.

<http://www.humblelittlerubybook.com/>

[http://www.sapphiresteel.com/ruby-programming/The-Book-Of-
Ru...](http://www.sapphiresteel.com/ruby-programming/The-Book-Of-Ruby)

<http://ruby-doc.org/docs/ProgrammingRuby/>

~~~
acpigeon
Recent engineering "survivor" would probably be a more accurate description
;-) As I mentioned, I'm much more of a business-minded guy. Don't ask...

------
twism
I think you should try teaching yourself. There are lots of free online
tutorials these days. I started to learn (still learning) and fell in love
with python by going through the django tutorial[1] first. But then again, I'm
a "throw me in the deep end" kind of guy.

[1] <http://docs.djangoproject.com/en/1.2/intro/tutorial01/> Best tutorial and
documentation I've read in a while. If you get stuck somewhere google it.

------
brianto2010
I don't see why not... go for it!

To supplement your Ruby knowledge and class, I'd say take a look at Ruby code
snippets from Rosetta Code[1] to get a 'feel' for what Ruby looks like in a
variety of applications.

[1] <http://rosettacode.org/wiki/Ruby>

Just out of curiosity, what kind of class is it? Is it in-person (with
classmates and lecturer) or is it a web class (like University of Reddit)?
What does the curriculum look like? Is there a website we can check out?

~~~
acpigeon
Absolutely. It's all online through a community college, description below.

[http://www.ed2go.com/monroe/online_course/rby/detail/Introdu...](http://www.ed2go.com/monroe/online_course/rby/detail/Introduction_to_Ruby_Programming.html?CategoryId=41)

~~~
brianto2010
Woah. It's a Ruby/Rails combo. You should have mentioned that.

The curriculum looks awesome: a lot of skills are introduced. However, the
curriculum looks very Rails centric rather than Ruby (the language) centric.
If you're going into website creation (and it looks like you are), go for it!

~~~
acpigeon
Indeed that's the plan. I guess everything I've heard about Ruby/Rails was
about the combo so I thought they went together as a matter of course.
Amiright?

~~~
brianto2010
Well shiver my timbers! I didn't know that. :-)

Anyways, good luck!

------
johnwatson11218
For what its worth, I was doing stuff in Ruby at work but I switched to Groovy
after a while. Things like Oracle db drivers, using "gem install" behind a
ntlm network proxy were some roadblocks that I ran into with Ruby in a locked
down enterprise environment. If you are going to be writing code and running
your own servers then Ruby is easier to work with. I still think there is a
cultural clash with Ruby in larger/more traditional IT shops.

~~~
silversmith
As for oracle side of things, you might want oc check out OraceEnhanced
adapter (blog.rayapps.com). It is developed by a very smart guy (oracle
developer of the year 2009), and we use it in several production apps - works
great.

------
acpigeon
For the record, the class is through a community college, course description
here. I haven't really looked around at other possibilities, so any advice
here is also appreciated. Thanks so much everyone for the help!

[http://www.ed2go.com/monroe/online_course/rby/detail/Introdu...](http://www.ed2go.com/monroe/online_course/rby/detail/Introduction_to_Ruby_Programming.html?CategoryId=41)

------
thereddestruby
Check out some screencasts too! Peepcode's are pretty good, although I think
there are some lynda.com ones that are alright, if a bit outdated.

------
msbarnett
Should you learn X?

The answer is always yes.

------
lfnik
My opinion is that it is more important to learn programming paradigms. That
way you are able to decide what language you believe is the best and learn it
easily.

For example, I've never programmed in Clojure but I can read quite a bit of it
because I understand functional programming. It wouldn't take me very long to
get the hang of it if I chose to learn it.

------
carbon8
See my comment here if you are looking for additional resources (I see you
mention else where that it's both a Ruby and Rails course):
<http://news.ycombinator.com/item?id=1088887>

To add to that list: <http://railstutorial.org/book>

------
LeBlanc
You could also try to teach yourself. If you already understand object
oriented programming, then learning ruby on your own should be doable. It
really depends on how you learn best. I prefer to teach myself, and was able
to learn ruby and rails in a few weeks.

------
sleight42
Chunky bacon!

~~~
TrevorBurnham
The parent isn't quite as inane a comment as it may seem. It's a reference to
Why's Poignant Guide to Ruby, a widely beloved introduction to the language
that you can read free online at

<http://mislav.uniqpath.com/poignant-guide/>

The Ruby ecosystem is very rich. You don't need a $100 course to learn the
language, though it might help to provide motivation.

~~~
acpigeon
Thanks for the resource! And indeed, it is exactly that "boot camp" motivation
I would be looking for in deciding to take a class.

------
Tichy
Personally I prefer books for learning, and they are cheaper, too. It's been a
long time that I sat in a course for a programming language, though - perhaps
the courses have improved.

------
gmosx
Python is probably a better option than Ruby. If your main interest is the web
tech scene, you should probably devote some time to JavaScript.

------
asdfasdf123123
I'd answer "no". The great thing about ruby, for those people who like it
(including myself), is that it's _fun_.

You didn't list "fun" in your reasons above, so my answer is "no, you
shouldn't learn ruby."

~~~
mping
I believe it's almost impossible to get away without knowing CSS/HTML and
JavaScript/jQuery/whatever. SQL is a _big_ plus, not essential but almost.

Im from a Java shop and recently started to learn rails, had a good experience
with grails. The good thing about web frameworks is that you can reapply what
you learn to other frameworks (ie, if you choose Django you can later apply
some of the knowledge to Rails or whatever). My only nitpick with the whole
ruby/rails stuff is that most of the stuff is mostly semi-broken in windows.
Some gems need patching, others need native code (sometimes this code has to
be compiled), others just don't work with gem X. I don't know how it is in the
Python/Django universe, but comparing Rails to Grails (or any other Java/maven
based project) I'm amazed at the low "respect" gem/plugin developers have for
windows users. Java is really write once run anywhere, Rails just seems write
once run in linux.

If you choose Rails, I would strongly suggest you to install a linux.

------
rortian
The best advice I could give to someone trying to learn a computer language is
to first pick something you'd like to do. You'd like to be able to put
together a website so that's a good start.

With an English background you might try something like:

Putting together a collection of books by an author (or as many as you want)
from Project Gutenberg. Come up with a rails site that lets you explore or
search these in an interesting way.

There's lots of things to try, but trying to do something versus trying to
learn something for its own sake, will give you a chance to focus and learn as
opposed to just learning all there is about a language. With Ruby, there is
way too much to learn, but you can get started quickly.

~~~
acpigeon
Excellent observation. It's exactly this sort of ready applicability that
appeals to me about web tech. Thanks!

------
WEREA
no learn python!

