Interview with Dave Thomas – Advanced Ruby Workshop

Dave Thomas is one of the keynote speakers at Agile India 2014. Many of you might know him  as one of the 17 original authors of the Agile Manifesto or the founder of Agile Alliance or the person who brought Ruby programming language to the western world or the co-author of The Pragmatic Programmer or the co-founder of Pragmatic Bookshelf.

Dave Thomas

Besides the keynote, Dave is also running a one-day workshop about the advanced features of Ruby 2.0.

Dave Thomas Books

We did a short interview with him to understand his views about Ruby and programming in general.

1. Tell us a little bit about your first introduction to Ruby? What was your reaction?

I am a programming language nut. I love trying new languages. Back in the 90’s, I’d download languages from Usenet (ask your parents) and play with them—normally several a week.

Back in 1997 or ’98 I downloaded Ruby. I think it was version 1.4.

Normally when I try a language, I stop after an hour or so. Very few are different enough to warrant the time. With Ruby, I was still playing hours later. At the end of the day, I called my business partner Andy Hunt and told him he should try it too.

And I’m still using it today.

2. How do you think Ruby has changed the way we program today?

I think Ruby has done several things.

First, the Ruby community has really lead the way with  testing. Andy and I were among the authors of the Agile Manifesto, and so we helped spread the word about Ruby among the early Agile crowd. In turn, those folks used Ruby to experiment with agile concepts. The result is that the Ruby world probably has more commitment to testing than any other language.

Second, I think Ruby has shown that dynamic languages can be used in the real world. In the early 2000’s, there was a lot of skepticism—sure these “scripting languages” were fun, but to write real programs, you needed grown-up languages with type checking.

Of course, these people were wrong. They were wrong firstly because, at least back then, Java, their language of choice, was effectively dynamically typed—the majority of runtime objects were help in collections, and were untyped in those collections.

And secondly, they were wrong because type checking, at least as they meant it, didn’t really catch the kinds of errors people actually made.

So I think Ruby has made a fundamental difference to the way we see programming today.

3. What are the advantages of Ruby over other programming language?

It makes people happy.

4. After reading your book, Pragmatic Programmer, it changed the way I thought of my career as a developer. Recently Chad wrote another book, Passionate Programmer. How is it different?

Thank you for the kind words.

The Pragmatic Programmer was largely about programming—our advice was aimed at helping developers become better programmers.

The Passionate Programmer is a truly great book because it takes a different, and in a way more important, tack. It is not about programming. It is about  programmers. Chad writes about how you, as a programmer, can become a better, more rounded, and happier individual. Yes, it will make you a better programmer. But mostly it will make you a better person.

I think everyone should read this book (even non-programmers).

5. With power comes responsibility- How do you think the Ruby community is utilising the power of this languages responsibly?

We touched a little on this when we talked about testing and agility. But let’s flesh it out.

Let’s start with “with great power comes great responsibility.” That (I think) is a quote from Spiderman – Peter Parker’s Uncle is giving him advice. And look how happy that makes our hero. He is weighed down by the burden.

So, while the quote may be true, I don’t necessarily believe it is a good thing.

In general, great power is a burden – people with power constantly need to be exercising it or they feel that they are wasting a gift. It is also a curse, because people become scared of losing that power, and as a result tend to stagnate rather than try risky things. It is true of people, and it is true of communities.

So I’m proud of the Ruby community for taking a middle road. In general, I think that are pretty responsible and mature (with certain glaring exceptions :). But I also think that they remember to have fun. They do take risks, they do explore, and they do exhibit whimsy.

6. Are you happy with how Ruby, as a language and as a community has evolved? Where would you like it go?

I think I answered the first part of this.

The second part – well, I don’t think I have a direct answer.

You see, I don’t think programming languages are special things. They don’t exist because someone came up with a syntax, or because someone published a book.

Programming languages are simply tools. They let developers like us solve problems. The better languages help us to feel good while we are doing it.

So we need to be careful to avoid the trap of becoming religious about one particular language. We need to have the breadth to choose tools that are appropriate to the task at hand. Ruby is a particular tool, with strengths and weaknesses.

Maybe you’re a carpenter. After many years of searching, you’ve found a great hammer. It fits your hand, it’s the right weight, it drives all kinds of nails. And then you come across a screw.

There are two reactions to this. One is to say “my hammer is a great tool. Let’s see if I can adapt it to drive screws, too.” Maybe you weld a blade to it, or maybe you grind a ridge into the top that fits the screw slot.

Or maybe you go out and find a screwdriver.

That’s how I feel about Ruby. It is a fantastic tool, and one I still use daily. But I don’t want it to become something where developers say “I am a Ruby programmer.” Instead, I want to hear “I am a programmer, and I use Ruby in many jobs because it means I can deliver stuff better.”

So, what do I want Ruby to become? Anything that helps people be better developers.

7. What is the key takeaway from your Advanced Ruby workshop?

Ruby often seems magic. That’s part of the fun. But, in reality, the magic comes from some simple but subtle underlying principles. Understand this, and you master Ruby. And that’s where the _real_ fun is.

This workshop has limited seats and only few are left. Book early to avoid disappointments: http://booking.agilefaqs.com/agile-india-2014#workshops