Every so often, I read a bunch of snark on Twitter about Ruby on Rails and how it “doesn’t scale”. I think these folks are missing the point.
Many startups don’t make it off the ground because a) they either don’t solve a problem that people care about, or b) the solution doesn’t solve the problem at hand. This is what’s known as lacking product-solution fit. You’d better pivot to try and identify something that does, otherwise you’re going to run out of runway without building a business.
A capital-constrained startup is going to want to invest the smallest amount of money/effort necessary to get to product-solution fit. This might mean that even a software startup will not invest in building out an elaborate software solution at first. The most famous example is Zappos, where founder Nick Swinmurn drove around to physical stores to fulfill the initial orders rather than building a complicated shopping cart system. What he was trying to validate was the then-unproven hypothesis that people would order shoes online. The hypothesis wasn’t whether a team of developers could create an order management system for shoes, because it’s pretty obvious that you can.
For entrepreneurs, and particularly for those who are non-technical, Rails has been a gift. It allows anyone with a rudimentary knowledge of programming to build enough of a software product to get to product-solution fit. As Tim O’Reilly said, “Ruby on Rails is a breakthrough in lowering the barriers of entry to programming. Powerful web applications that formerly might have taken weeks or months to develop can be produced in a matter of days.”
You may bristle at my use of the words “rudimentary knowledge of programming”. I can hear you screaming now: “But this is the fundamental issue! Unqualified people are writing code that I need to clean up later!” It’s certainly true that Rails projects can end up as unmaintainable spaghetti. However, that’s an easier problem to recover from than the possibility that the underlying business idea is flawed. What kind of company would you rather be working for: one that has a wonderful, beautifully-written application in a market that has no customers, or one that has a less-than-perfect application for a clearly-defined market?
Which brings me to scale. Scale is a problem you have after you reach product-solution fit. It doesn’t happen on day one. Now I know engineers like to complain about technical debt and having to rewrite or refactor applications to keep up with demand, but again, this misses the point. If you have scaling problems like Instagram right out of the gate, it means you’re really successful as a product. It also means that yes, you are probably going to have to rewrite or refactor your apps, maybe not in Rails. You should embrace this, because it’s your job as a software developer to kill your darlings (which is a topic for a whole other post). Don’t forget the reason you’re doing it. It’s because the product is awesome, customers love it, and you need to scale it to scale the company.
So everyone, please stop hating on Rails, because it’s a great way for lots of people to get their ideas into code quickly so they can validate them. I wouldn’t hesitate to choose it myself for my next startup.