Hacker News new | ask | show | jobs
This is why learning Rails is hard [graphic] (readysetrails.com)
23 points by hijk 5135 days ago
7 comments

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/

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.

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.

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/

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

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

Ready Set Rails is running PHP? I'd think that a site promoting Rails and a Rails workshop would be, you know, using Rails. :-)
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...), and using it with Pow locally. :]

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

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

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

OS, IDE, GIT and Command Line as major branches make this way more daunting than it really is.
And that is why I won't be learning ruby any time soon. I think I'll stick to PHP.
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?

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.

Really!? So PHP simplifies all this for you, huh?
My experience with PHP has not been as terrible as most rails users make it out to be. Once I learned the PHP syntax I got flying with it, I didn't have a single problem.

I just don't see the point in ditching PHP now to learn ruby just because it has become the latest online fad, better to stick with what I know until I develop serious problems with PHP which I believe only changing languages could solve.

Always be learning.

Don't learn Rails to make a career out of it (although that may end up happening!), learn Rails to expand your mental models.

And don't just learn Rails!

Learn Django. Learn Sinata. Learn Erlang-Web or Nitrogen. Learn Smalltalk. Learn TeX. Learn JavaScript (actual JavaScript). Learn Node.js. Learn Meteor.

Learning a language doesn't mean "ditching" anything. You're adding!

And one more thing: Ruby[sic] is far from the latest online fad. That would be JavaScript and Node. Rails was the latest online fad back in 2007.

That kind of thinking is the exact type that will lead you to wondering why you can't find a programming job when you're 40.
Do you use a full featured PHP framework akin to Rails?