DHH · 2025-07-12 · source ↗ · whole document (13)
Programming language for beginners
`5:22:28`
But at some point, you're gonna hit the limit and you should use something else. I'm not someone who prescribed just Ruby for everything. Just once you reach the level of abstraction that's involved with web applications, Ruby is superb. But if you're writing, for example, HTTP proxy, go, it's great for that. We've written quite a few HTTP proxies lately at the company for various reasons, including our cloud exit and so forth. And Kevin, one of the programs I'm working with, he writes all of that in Go. Go just have the primitives and it has the pace and the speed to do that really well. I highly recommend it. If you're writing an HTTP general proxy, do it in Go. Great language for that. Don't ride your business logic in Go. I know people do, but I don't see the point in that. — So what would you say the three, so Go, Ruby plus Rails, JavaScript? — Yeah, if you're interested in working with the web, I'd pick those three. Go, Ruby and JavaScript. — Go, Ruby and JavaScript, okay. Functional languages? — Someone's talking about Ocaml.
`5:23:29`
— They are always going to show up. It must be some kind of OCaml industrial complex or something like this. But they always say mention OCaml. — I love that there are people who love functional languages to that degree. Those people are not me. I don't care at all. Like I care about functional principles when they help me in these isolated cases where that's just better than everything else. But at heart, I'm an object oriented guy. That's just how I think about programs. That's how I like to think about programs. That's how I carve up a big problem space into a domain language. Objects are my jam. — Yeah, me too. So I program a Lisp a bunch for like AI applications for basic. So Othello, chess engines, that kind of stuff. And I did try OCaml just to force myself to program just a very basic game of life. A little simulation. It's much, you know, Lisp is just parentheses everywhere.
`5:24:32`
It's actually not readable at all. — That's the problem I've had with Lisp. — OCaml is very intuitive, very readable. It's nice. — I really should pick up a language like that at some point. I've been programming long enough that it's a little embarrassing that I haven't actually done anything real in anger in a fully functionally programming language. — Yeah, but like I have to figure out, I'm sure there's an answer to this. What can I do that would be useful for me like that I actually wanna build? — Yes, yes, that's my problem — That a functional language is better suited for. — That's right. — Because I really wanna experience the language properly. — [DHH] That's right. — Yeah, 'cause I'm still, yeah. At this point, I'm very object-oriented brained. — Yes, and that's my problem too. I don't care as much about these low level problems in computer science. I care about the high level. I care about writing software. I care about the abstraction layer that really floats well with web applications and business logic. And I've come to accept that about myself. Even though, as we talked about when I was a kid,
`5:25:34`
I really wanted to become a games programmer. And then I saw what it took to write a collision detection engine. And I go like, yeah, that's not me at all. I'm never gonna be into vector matrix manipulation or any of that stuff. It's way too much math and I'm more of a writing person than I'm of a math person. — I mean, just in the way you were speaking today, you have like a poetic literary approach to programming. — Yes. — Yeah. — It's interesting, that's actually exactly right. So I did actually a keynote at RailsConf 10 years ago where I call myself a software writer. I mean, I'm not the first person to say that software writer has been in the vernacular for a long time. But the modern identity that most programmers adopt when they're trying to be serious is software engineer. And I reject that label. I'm not an engineer. Occasionally I dabble in some engineering, but the vast majority of the time, I'm a software writer. I write software for human consumption
`5:26:37`
and for my own delight. I can get away with that because I'm working in a high level language like Ruby, working on collaboration software and to-do lists and all the other stuff. Again, if I was trying to apply my talents to writing 3D game engines, no, that's not the right mindset. That's not the right identity. But I find that the software engineering identity flattens thing a little bit, I'd like to think that we have software writers and software mathematicians, for example. And then those are actually richer ways of describing the abstraction level that you're working at than engineer. — Yeah, and I think if AI becomes more and more successful, I think we'll need software writer skill more and more. Because it feels like that's the realm of which, 'cause it's not writer. You're gonna have to do the software. You're gonna have to be a computer person.