DHH · 2025-07-12 · source ↗ · whole document (8)
Dynamic typing
`1:11:47`
I fully accept that you need different methods. What I object to is the idea that what's right for a code base of 10 million lines of code with a hundred thousand programmers working on it is also the same thing I should be using in my bedroom to create Basecamp, because I'm just a single individual. That's complete nonsense. In the real world, we would know that that makes no sense at all. That you don't, I don't know, use your Pagani to go pick up groceries at Costco. It's a bad vehicle for that. It just doesn't have the space. You don't wanna muddy the beautiful seats. You don't wanna do any of those things. We know that certain things that are very good in certain domains don't apply to all. In programming languages, it seems like we forget that. Now, to be fair, I also had a little bit perhaps of a reputation of forgetting that. When I first learned Ruby, I was so head over heels in love with this programming language that I almost found it unconceivable that anyone would choose any other programming language at all to write web applications. And I kind of engaged the evangelism of Ruby on Rails
`1:12:48`
in that spirit as a crusade, as I just need to teach you the gospel. I just need to show you this conditional code that we just talked about and you will convert at the point of a sharp argument. Now, I learned that that's not the way. And part of the reason it's not the way is the programmers think differently. Our brains are configured differently. My brain is configured perfectly for Ruby. Perfectly for a dynamically duck typed language that I can chisel code out of a text editor with. And other people need the security of an IDE. They want the security of classes that won't compile unless you call the methods on it. I have come to accept that, but most programmers don't. They're still stuck in, essentially, I like static typing. Therefore, static typing is the only way to create reliable correct systems, which is just such a mind blowing, to be blunt,
`1:13:49`
idiotic thing to say in the face of evidence, mountains of evidence to the contrary. This is one of the reasons I'm so in love with Shopify as the flagship application for Ruby on Rails. Shopify exists at a scale that most programmers will never touch. On Black Friday, I think Shopify did 1 million requests per second. That's not 1 million requests of images. That's of dynamic requests that are funneling through the pipeline of commerce. I mean, Shopify runs something like 30% of all e-commerce stores on the damn internet. A huge portion of all commerce in total runs through Shopify and that runs on Ruby on Rails. So Ruby on Rails is able to scale up to that level without using static typing in all of what it does. Now I know they've done certain experiments in certain ways because they are hitting some of the limits that you will hit with dynamic typing.