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.
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!"
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!
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.
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).
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.
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/