Spotlight: Chris Pine (Author)

A Hero’s Journey
with Chris Pine


Chris Pine, author of Learn to Program, Third Edition, discusses his journey to becoming a Pragmatic Bookshelf author.


Listen to the complete audio interview here:


We’re giving away one of Chris’s books to one lucky winner! Simply post a comment or a question in his AMA below, and the Devtalk bot will randomly pick a winner at a time of the author’s choosing … then automatically update this thread with the results!


For those who prefer to read rather than listen, the following are highlights from the interview.

Chris Pine started his Hero’s Journey in 2002 when he thought about using Ruby to teach people how to program. There wasn’t much Ruby documentation for beginners at the time, so he decided to stop thinking about teaching and start writing a tutorial aimed at beginners.

But the task of writing a great tutorial for non-programmers was a bit more challenging than Chris first anticipated. But, he kept at it—adding more and more polish with each revision. Because Chris made it so easy for people to contact him, he was able to rework the tutorial based on reader feedback.

Just as Chris was ready to wrap up the tutorial writing, he was contacted by a handful of publishers, including the Pragmatic Bookshelf—he’s been with us ever since and is now working on the 3rd edition of Learn to Program, which is currently in beta.

Listen to the rest of Chris’s story on this episode of the Pragmatic Hero’s Journey podcast.

You can stream the episode here: or subscribe to the RSS feed using the following link: Pragmatic Hero's Journey.

Now that you know his story, check out Chris’s book below!

PragProg Book by Chris Pine

Dont forget! You can get 35% off Chris’s book with the coupon code!


Connect with Chris Pine



We’re now opening up the thread for your questions! Ask Chris anything! Please keep it clean and don’t forget by participating you automatically enter the competition to win one of his ebooks!


Hey, everyone! Happy to answer any questions you have about writing a book, learning/teaching programming, or literally any other topic! (Quality of responses may vary; past performance is no guarantee of future results; always consult your physician before beginning a new exercise program; etc.)


@chrispine (or should I say ChrisPi :smile: )
Perhaps everyone will agree that the ideal teaching ‘use case’ is teaching a small group (ideally of size 1) of equally knowledgeable, equally skillful and equally motivated/eager to participate students.
Long time teachers have their tricks to keep the audience engaged and to make sure nobody checks out/drops out.
Would you share some of your favorites?


Interesting question! I’m not sure I have much of an answer, though, as nearly all of the teaching I’ve done has been one-on-one.

I suppose you could say that Learn to Program is the counterexample, but I don’t see it that way. I feel like the struggle in one-to-many teaching situations is making sure no one is left behind while moving at a good pace, but I never needed to worry about that when writing LtP. Each reader goes at their own pace, works on their own exercises, etc.

It probably also helps that I put my email address at the back of the book, in case anyone gets stuck. :grinning_face_with_smiling_eyes: I’ve helped thousands of readers over the past 16+ years. But always one at a time.


Oooo I’ve only just noticed this as it was in the PragProg section (which only shows threads on the main forum homepage that you’ve posted yourself or threads you have posted in - moved to the Spotlight section now :nerd_face:) - I’ll have a listen to the interview tomorrow but just quickly wanted to say that Chris has written one of my favourite tech books of all time - after reading it I felt so motivated and much more confident about embarking on my journey of learning to program! If you are in doubt yourself you just have to read this book! (Here’s my mini-review of the book in case anyone is interested.)

Here’s a quick question for you Chris - did you ever imagine that your book would have such a profound effect on so many would-be programmers? Your book really made me feel like programming is something I could do and I am certain that lots of other people would have felt the same after reading it :smiley: Whenever I kept forgetting things, or felt stuck or like I wasn’t properly understanding something - thinking back to what you wrote in the book really helped me. In fact I sometimes wonder whether I would have stuck with it at all if it wasn’t for you! So a huge THANK YOU from me Chris!! :orange_heart:


Given the time that has passed since your book was first published (nearly 20 years, maybe? I seem to recall it being published not too long after the ‘Pickaxe book’ which became available here in Germany early 2001): How did you keep it in sync. with the changes Ruby itself has seen during this time? — I can imagine that there are quite a few changes and new features that would be important to show & explain to people who learn to program.

Cheers & thanks for keeping the book up-to-date!



Hi @chrispine!

Is the 3rd version of your book, expected in July 2021, targeting Ruby 3 ?


Hi @DevotionGeo,

obviously I’m not @chrispine :smiley:.
Anyway, the preface say so:

For the 3rd Edition of this book, I’ve updated all of the examples for Ruby 3, the latest version of the language.
— Cris Pine. Learn to Program. 3rd edition.


Thank you @s2k! :slight_smile:


No, not in those terms.

For me, it was more like, “The world needs a resource for getting into programming that does not assume any prior knowledge.” Around the time I started, there were a few other tutorials that others were working on, and they were getting lots of praise… from people who were obviously already Ruby programmers. And I would ask, have you shown this to a non-Rubyist, or even a non-programmer, to see if this is helpful? No one ever said yes.

So I thought, well, I’ll do it myself. :slight_smile: It meant a ton more work for me, but in the end we have a book so much better than I could even have written on my own. :slight_smile: Of course I’m thrilled that it’s made such a difference for so many.


Because the book is mostly targeting the basics of Ruby, I haven’t actually had to change that much. It’s kind of surprising how similar the current examples are to the ones I originally wrote for Ruby 1.4 or 1.6. Even so, I did run every single example in Ruby 3.0 (and some of the release candidates before that) to make sure everything was correct. Sadly, there was no good way to automate this in the latest iteration of the PragProg toolchain, so it was a ton of manual work. Y’all are worth it, though! (If I were starting from scratch, I would set things up differently to make it easier to automate.)

The biggest change to the examples in the 3rd edition are actually not because Ruby has changed, but because the style of Ruby has changed: in the olden days (lol, I don’t feel that old!), we tended to favor single-quotes over double-quotes for most strings, and we tended to favor “poetry mode” (not using parens for method calls). Now parens are the norm in most cases.

Finally, part of the PragProg book process is technical review, where I sent a draft to a handful of professional Ruby engineers to see if anything looks weird to them, just to make sure I’m not overlooking anything. (Which I was, so thank you, reviewers!)


Hi @chrispine ,

Nice to talk with you here. I read your first edition book when I started my programming journey on ruby!
I have taught programming to students for a few years, and I will review all the material every time before I start teaching new group of them.
Thus I am quite curious what motivate you to update your book?
Also, as a book with some history, how will you decide to add or remove the content of the book?


Good questions! The short answer: I released the 2nd Edition when Ruby 2.0 came out, and the 3rd Edition when Ruby 3.0 came out. (Though honestly, almost none of my examples needed to be changed because of changes to Ruby. It just seemed like a good time for it.)

So that’s the cadence. As far as what to change, I guess there are three categories:

  1. What have I gotten a lot of questions about (because those parts are confusing people, so I should change/remove them).
  2. Do the examples look dated? If so, update them. (For example, it used to be very unpopular to use parentheses when calling methods, but now that’s the norm.)
  3. Are there cool things I could add that used to be just a little too hard, but are now pretty easy? (This is why I added the chapter on APIs, which was really fun to write!)



Hello everyone!

I’m your friendly Devtalk bot :nerd_face:

Thank you to all of you who participated in our Spotlight AMA!

This is now closed and all of those who commented above have been entered into the draw - meaning we’re now ready to pick a winner!

The process will be initiated when somebody clicks the special link below:

:arrow_right: :arrow_right: :arrow_right: :arrow_left: :arrow_left: :arrow_left:

Don’t be shy, we need one of you to help make the magic happen! :sparkles:


Thank you for initiating the draw process…

Entering the following members into the draw…

:arrow_down: :arrow_down: :arrow_down: :arrow_down: :arrow_down: :arrow_down: :arrow_down: :arrow_down:


And the winner is…

Drum roll…


Congratulations @DevotionGeo you are the chosen one!! We’ll be in touch about your prize via PM soon :smiley:

Thank you everyone who entered, and of course @ for taking part in our Spotlight - thank you! :blue_heart:


OMG, I only just realized who you are!! (I missed the chrispi and the sten1ee the first time.) How the hell are you!! It’s been almost 10 years, hasn’t it?


I think we all want to know who @sten1ee is as well now Chris - dunno why but it sounds like there’s a story to share there :smiley:


I don’t want to doxx an old friend, but we used to work together at Opera Software back in the day. One of the kindest, smartest people I’ve had the pleasure of working with!