Sunday, 9 September 2007

Why's Poignant Guide to Ruby - annoying, irritating, slow

I've known about Ruby for a while, and picked up on the hype, mostly because of the Ruby on Rails framework. I started learning Ruby just a few weeks ago at work, courtesy of our architect looking to stretch the development team's repertoire. It wasn't hard to learn, and the fact that the built-in libraries are clearly not as extensive as in Java (of course) - it wasn't really much of a hurdle, as most programmers probably use only a fraction of what's in the JDK. The fact that it has multiple method names for doing the same thing (Array has size() and length() - WTF?) also wasn't that much of a deterrent. In contrast, I've been planning to learn Python for the past few years, but never seem to have gotten over the completely useless self parameter in its constructors. I like what I've seen so far in Ruby, the integration of regular expressions in the language, meta-programming and the whole "domain specific languages" aspect, and Ruby gems - almost all good so far. At one point I was wondering why I didn't give it a go much earlier.

Then I remembered the biggest thing that turned me off: "Why's Poignant Guide to Ruby". I have never seen a more self-indulgent, verbose, time-wasting programming language tutorial. The first time I came across it I was completely put off by the cutesy cartoons, the "trying hard but not good enough" humour, and the irritating and annoying asides and stories. I think I got through a chapter or two and gave up in exasperation. I was clearly not the audience this dude was writing for. He was possibly writing for children - "oh yes, the array is like a biiiig caterpillar, and the commas are its legs!", or teens with ADHD who needed frequent distractions to keep them reading the text (yes, I don't know how that's supposed to work).

I'm going through it again, this time as someone who doesn't actually have to learn from his text, and while I appreciate some of the things he seems to be reaching for, the abstractions he's trying to convey, I still think it takes up too much time to get to the point. It just smells too much of condescending "edutainment". If you ever wanted to read a document that treats you like an idiot - waay more than those "For Dummies" or "Idiot's Guide" books - this is it.

And yes, I know there are a lot of other excellent Ruby tutorials out there, but at the time I first encountered the Poignant Guide, I didn't actually have any use for Ruby at my then-workplace, so my exploration never went any further.


Photodeus said...

Oh yea, same here.
I was trying to read the guide and totally got frustrated by all the chunky bacon that didn't help me learn anything.

I did like the comedy in some of the strips, but in the end I had to give up reading it, cause I noticed I was skipping huge blocks of text trying to find something worthwhile.

krangsquared said...

Thanks for posting. So what resource material did you find useful in learning ruby?

The main one that got me moving along was the "Pickaxe book" - Programming Ruby. I found The Ruby Way also pretty good for its tips. But the biggest thing was actually working on something useful - in my case it was a script to scrape content from a website.

kristen cumings said...

I found Why's Poignant Guide to Ruby to be a great introduction to a programming language. I'm an older novice (40) & although I've been interested in programming for several years, many of the books & online tutorials that are available assume knowledge I just don't have. I have searched level upon level of definitions of terms I don't understand, & have always eventually gotten lost & given up, feeling too stupid to learn. I can understand how knowledgeable programmers or even advanced general tech-geeks would find the tone off-putting, but I found Why's Poignant Guide to be accessible in just the way I need a tutorial to be. Why thinks like an artist, & I appreciate his random sidebars & cartoons. They have allowed me to stay in the struggle to learn something new that I wasn't sure I was capable of learning, which is refreshing.I feel that I have learned some basic terms and concepts that will now be a bridge to more traditional texts & tutorials, & for that I am eternally grateful.

krangsquared said...

That's great Kristen, I'm happy that it was exactly the right learning material for you. There were a lot of people who loved this tutorial, and back when I was first reading up on Ruby, this kept getting mentioned constantly. Different strokes for different folks! :)

Are you just getting started now? The best learning experience comes from getting something up and running, something you find cool or useful enough for you to keep at it and see it through to completion.

charliefortune said...

I agree. I got fed up of skipping all the juvenile crap to get to a bit with some actual information in. I appreciate the fact that the author was probably trying a new style that could appeal to people who can't handle technical books, but I found it a waste of time. It was the pointless list of chapter headings in the contents that finally finished it off for me.