

This is why learning Rails is hard [graphic] - hijk
http://www.readysetrails.com/index.php/181/this-is-why-learning-rails-is-hard/

======
jdlshore
It's a cute graph. But not really specific to Rails. Programming is hard...
let's go shopping:

Starting at the top-right, and comparing to other professional web development
languages, we have:

RUBY. Well, yes, you need to know a programming language in order to program.
Ruby does some things well (closures!) and some things poorly (monkey
patching!). Overall, it's no harder or easier than most OO programming
languages. Price relative to Not-Rails: ¤0. Let's move on.

RUBY / GEM MANAGEMENT. Ruby is crap at versioning and isolation. So is nearly
everyone else. (Ever heard of DLL Hell?) And at least gem downloads, installs,
and handles dependencies for you. Overall, it's a bit better than average, but
not great. Price: ¤0.

RAILS FRAMEWORK. You know, I've programmed a fair amount of Ruby, but I've
never used Rails. Most of the stuff listed inside that section seems fairly
typical to me. But let's take the article at its word and assume it's kind of
hard. Price: ¤100.

GIT. You gotta use version control if you wanna be a real programmer someday.
Git's a brain-bender, but you don't have to use it. Next! (Price: ¤0.)

TESTING. From what I've heard, Rails doesn't have the greatest support for
good TDD. There's a lot of integration testing needed, which is slow, which
necessitates asynchronous integration, which leads to automated build servers,
which lead to people ignoring broken builds, which lead to bugs, which lead to
pain, which leads to suffering, which leads to... <gasps for breath>... er,
sorry, you pushed one of my buttons. Let's just say that testing could be
better, although, in fairness, the other frameworks are probably worse. Still,
in Rails you're actually expected to test. Good on them. Price: ¤1,000.

AGILE PROCESS. Hey, it's my favorite poorly-defined marketing term. But let's
say you're using a rigorous approach to Agile... say, practicing Agile the way
_I_ think you should [1]. That does take some work. Incremental design, in
particular, takes real practice. I don't think it's actually harder than any
other rigorous software development approach, though. I mean, seriously,
compare "face to face communication" with "requirements phase gate
documentation and sign-offs." Yikes. Price: ¤0.

IDE/TEXT EDITOR. Really? REALLY? Any pain here is of your own making, Mr.
vimacs. Price: ¤0.

COMMAND LINE. There was a day in which every real programmer knew how to use
the command-line. I've been dismayed to discover professional programmers who
can't, and instead use Visual Studio or Eclipse for everything. Shocking, I
say. Kudos to Rails folk for bringing it back. Price: ¤200.

DEPLOYMENT. Meh. Someone's gotta do it. Doesn't always have to be you. I doubt
Rails changes this. Price: ¤0.

SQL: Object-relational impedence is gORMless. (See what I did there?) Price:
¤0.

OPERATING SYSTEM: Umm. Really reaching on this one, aren't ya. Price: ¤0.

WWW: That shit be hard, man. Really fucking hard. I don't know half of it half
as well as I should like; and I like less than half of it half as well as it
deserves. Half of it doesn't even work half the time. And... that's not really
a Rails thing, is it? Price: ¤0.

Final bill: ¤1,300: a bit harder than other web programming, but only because
the Rails folks actually do testing, despite Rails not being great at it.

I'll let you decide what the exchange rate is.

PS: Yes, I know this rant is barely related to the point of the linked
article, not nearly as funny as I wish it was, and really a giant waste of
time on my part. Allow me my procrastination.

[1] <http://jamesshore.com/Agile-Book/>

------
studiofellow
I'm a designer who learned Rails to build a web app, and the learning curve
was steeper than I expected. I still don't know everything on this graphic.

I bought several rails books, read the humble little ruby book, pro git,
github docs, rvm, etc. I still suck at testing and lots of other important
stuff.

That's part of learning programming in general, but "learning Rails" is often
presented to be much simpler than it really is. There are so many
dependencies. A graphic like this should be at the front of every single Rails
book, just so newbies can see what to expect.

~~~
shane-armstrong
It would most likely scare them off, if they were coming from little to no
programming experience, but I agree. In fact, I think that what you said
applies to most languages, learning them is often a lot harder then it is
portrayed.

I for one am sick of hearing "Learn Python in just ten days", "Learn Ruby, the
easy way!", "PHP Programming in ten minutes or your money back"... you get the
idea.

But if it was easy, there would be a lot more developers and companies like
Google and Apple would not pay half as much as they do, nor specifically head-
hunt talent, it would come begging to them, so I suppose that there are both
pros and cons to this.

~~~
xyzzyb
I haven't heard phrases like that since browsing book covers years ago. In
large part -- although perhaps just online -- the programming community seems
to have moved on from the "Hey, this is so easy! Buy my book!" phase.

We now have tutorials that try to make the case "Hey, this is so simple and
intuitive if you are already a programmer with a solid foundation in the
language that we designed our tool for!"

And we have the Learn X the Hard Way books, starting with the awesome:
<http://learnpythonthehardway.org/>

------
kennystone
Most of that graphic is about a classic web stack - only one branch is rails.
Still, a nice visual representation of how hard the job is.

------
Sodaware
Most of the chart could apply to other web languages, including everybody's
favourite whipping boy PHP.

For me, the hardest part of rails was getting a working environment setup on
my server, development and build machines.

~~~
hijk
It's true. With lots of my students, just getting running is a fairly large
stumbling block. Everyone seems to hit a different issue. Hopefully some of
the newer initiatives can resolve this. In the meantime, I'm trying to think
of better ways to help my students. Let me know if you have any ideas!

~~~
shane-armstrong
Getting started is normally the hardest part, I remember giving up on java
because I couldn't get the darn compiler to work.

Hello world never made it to my console :(

------
xyzzyb
Ready Set Rails is running PHP? I'd think that a site promoting Rails and a
Rails workshop would be, you know, using Rails. :-)

~~~
hijk
Heh, good eye. Ultimately, I'm a pragmatist, and there isn't a blogging
platform as flexible and as powerful as WordPress built in Rails. I like to
think it is my pragmatic approach to learning Rails that separates my workshop
from other ("Kitchen sink included!") training options.

But to keep it a part of my normal Rails workflow, I'm running WP on Heroku
([http://decielo.com/articles/350/wordpress-on-heroku-up-
and-r...](http://decielo.com/articles/350/wordpress-on-heroku-up-and-
running)), and using it with Pow locally. :]

That config stood up to HN traffic quite well on the one free dyno from
Heroku.

~~~
xyzzyb
Heh, no worries. It just caught my eye (former WP dev). I'm actually really
impressed with offerings like Octopress or, more Rails specific, Bloggy:
[http://www.engineyard.com/blog/2012/introducing-bloggy-a-
sim...](http://www.engineyard.com/blog/2012/introducing-bloggy-a-simple-way-
to-add-a-jekyll-blog-to-any-rails-application/)

But, wow, that configuration deserves an HN traffic spike recap blog post!

------
hexvector
OS, IDE, GIT and Command Line as major branches make this way more daunting
than it really is.

------
shane-armstrong
And that is why I won't be learning ruby any time soon. I think I'll stick to
PHP.

~~~
Pewpewarrows
To be fair, you need to know the entire left-hand side of that graphic with
PHP. The bottom-right quadrant is stuff you _should_ be doing (formalized
methodology, version control, and testing). And the top-right quadrant is
language-specific, in that you can replace it all with PHP and your PHP
framework of choice (if necessary).

How exactly does PHP make it easier again?

~~~
shane-armstrong
Because I already _know_ PHP.

The experience would be different for someone new to programming but I have no
reason to learn Ruby at the moment.

