Episode #474 from 1:13:55

Scaling

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, idiotic thing to say in the face of 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 one million requests per second. That's not one 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. Some of those limits you hit with dynamic typing are actually, by the way, just limits you hit when you write 5 million lines of code. I think the Shopify monolith is about 5 million lines of code. At that scale, everything breaks because you're at the frontier of what humans are capable of doing with programming languages. The difference in part is that Ruby is such a succinct language that those 5 million, if they had been written in, let's just say Go or Java, would have been 50 or 25. Now, that might have alleviated some of the problems that you have when you work on huge systems with many programmers, but it certainly would also have compounded them; try to understand 25 million lines of code.

Why this moment matters

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, idiotic thing to say in the face of 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 one million requests per second. That's not one 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. Some of those limits you hit with dynamic typing are actually, by the way, just limits you hit when you write 5 million lines of code. I think the Shopify monolith is about 5 million lines of code. At that scale, everything breaks because you're at the frontier of what humans are capable of doing with programming languages. The difference in part is that Ruby is such a succinct language that those 5 million, if they had been written in, let's just say Go or Java, would have been 50 or 25. Now, that might have alleviated some of the problems that you have when you work on huge systems with many programmers, but it certainly would also have compounded them; try to understand 25 million lines of code.

Starts at 1:13:55
People and topics
All moments
Scaling chapter timestamp | DHH: Future of Programming, AI, Ruby on Rails, Productivity & Parenting | EpisodeIndex