Question: Ruby on Rails lowers the technical expertise necessary to create a web application; is expertise becoming less critical?
David Heinemeier Hansson: I think Ruby on Rails absolutely lowers the bar in terms of what it takes to get a web application going. Some people see that as a negative thing. Like, “Oh, the barbarians are at the gate” or “We've got all of these unwashed masses flowing into our beautiful, pristine programming communities.” I've heard things a lot of times before. Visual Basic before that was chastised for bringing in sort of "unpure" programmers. I think it's bullshit. There is no such thing as the "pure" programmer, and I think that what's magic about the Ruby in Rails community is exactly that it attracts people from all different camps, that it attracts people who are not primarily programmers. I find that often the best ideas come from people who are not programmers, people who bring just an entirely different perspective on things.
In fact, being a newbie is such an important stage because that's where you question everything. When I first came to Ruby, I questioned everything. I was like, “Why doesn't this thing exist? Why is this hard? That's stupid. We should change that.” You have this sort of initial naïve approach to things that makes it impossible for you just to see what should be impossible. You just do.
If I had known in the beginning how much work it would have been to actually create Rails, I probably would never have started. I started because I just found one little thing that to my naive newbie sense seemed easy to do. I think it's really important that we keep this flow of new people, new blood, fresh blood coming into the community, and I also think it's wonderful that we're creating a larger group of people who can create applications. Trying to have protectionism is never a good idea. Trying to sort of set up, like there should only be these carefully trained programmers who are able to make programs... Bah. That's not how it should be. We should absolutely have programmers of all kinds. Some of these programmers will be new, and they won't know everything, and they'll create shitty programs. But you know what? Most of the time, a shitty program solves the problem. You don't need perfect programs all the time. There are so many problems in the world that the tiny group of pristine, white knight programmers just can't solve. They can't solve all of them; there's just not enough of them. So we need programmers of all levels to solve the programming problems of the world.
Question: How simple can things get in terms of programming?
David Heinemeier Hansson: So, for me it's really there's two angles to this. There is we can absolutely make things simpler. I think I made a lot of web development a lot simpler with Rails. But there is a natural physical limit where at the end programming is just choices. How should the program work? What should happen when you click this button? Those choices are ultimately what's the key to programming, and you can't get out of that, which is also why I think that sometimes it's a little bit of a pipe dream to think that there's going to be these magical new environments where somebody who knows nothing about programming will just be able to drag and drop a few things into a box, and then, voila!, you will have the most amazing program in the world. No. It's really not gonna happen like that because to have the most amazing program in the world, you need to care about a thousand decisions, and recording those thousand decisions takes a programming language.
So, there is a lower limit to how simple it can get, and that lower limit is, “Do you care about these decisions?” Once you... All the decisions you care about have to be codified somehow, and I don't know of any more effective way of doing that than with a great program language. So I'm not a big believer that at some point we're all going to create these wonderful applications. There will be a class of applications where you design a niche and say: okay, if I have to just slightly tailor some accounting software—yeah, there can be something simple for that. But if you want the freedom of expression to create any type of web applications today, you need a tool that's expressive enough to enable that, and that is a programming language. It doesn't get any simpler than that.
Recorded on July 22, 2010
Interviewed by Peter Hopkins