Last week in a virtual chat room at the React Summit Kent C. Dodds was asked an interesting question: What does he think of Rails? “I hesitate sometimes with frameworks that abstract a lot. It certainly worked out well for Rails. If you fit within the rails, pun intended, then everything’s gonna be fine. React has a totally different approach. We’re just gonna let you do this one thing really well and let you build around it.” Within that freedom greater innovation is born, he suggested. “I’ve never used Rails,” he qualified his statement.
It stands in contrast to the other industry cult-leader, David Heinemeier-Hanson (who goes by DHH), giving the keynote to the Rails Conference on the same week.
DHH was on-brand: he delivered a fire-and-brimstone polemic railing against Big Tech monopolies. He begins by throwing a Molotov cocktail at the JavaScript industry: Gmail ships with 3.5MB of JavaScript, and that Hey.com (an email platform he launched last year) ships with a mere 40 KB. Translated to laymen-speak: Hey.com has shipped a product 14 years after Gmail was first introduced to the public in 2007 with dramatically less frontend code, it loads and operates faster on modern devices and on older devices, and is easier to maintain and ship.
DHH claims that Rails 7 (the next version) will mean Rails “now has a grand unifying answer for front-end.” In one section of his talk, his anti-Node sentiments flew out like bats from a closet door one rarely opens: “Is there an opening here where developing modern web applications do not require transpiling or bundling?” He continued later, “I don’t want to F around with Node.”
The implicit assertion by DHH is that the JavaScript world (and React) has become overly complex: its patterns create huge, unmaintainable intertwined codebases. JavaScript-heavy apps and apps written in React are unnecessarily weighed down with layers that, at best, turn off new entrants into programming, and at worst, help further the monopolistic practices of Big Tech.
“Ruby had been such a bring light for me, such a revelation, such a different path…I took on a role — in a highly antagonistic fashion ([I’ll] cop to it as it is) — to evangelize Ruby in a confrontational manner. Not just: Hey this is just another church you can join. No, I was like: Hey Java programmers, look at this sh*t! Look at this! It’s all this [little] code! And, like boom! Then it’s just this much code! Then what! Then what!” Although he proclaims this like a little kid, he does have the self-awareness of a man who has led Rails for nearly two decades, sheepishly admitting this attitude was a phase of his life he had to grow out of.
On the React side of things — I was attending both conferences concurrently at my desk — things sounded quite a bit different. The ideology was less anti-capitalist, sponsored ads were broadcast on periodic schedules between talks, and the whole program seemed less focused on cult leaders. The React community moves fast. It’s more of a hodge-podge of competing ideas and everyone — like Gen Z itself — is enamored with the idea that democracy lifts up the winner among a field of competing technologies.
Years ago class-based components were how React JavaScript was written, (we’re talking about object orientation, not capitalism), but last year the React world officially changed both its syntax, implementation details, and made a major shift away from object-oriented patterns towards functional programming (FP) using what is called the “hooks pattern” or just “hooks.”
The React world sees ‘closed’ ecosystems like Rails — perhaps even DHH himself — as the oligarchy precluding innovation. Ironically, DHH sees himself as the opposite: He is the David in David vs. the Goliath of the fight against tech monopolies. Apple, Google, and their corporate power to control who codes and who does not are the true enemy.
View Post
He said, “This is the titanic fight of the century. The fight against concentrated power and money. The biggest companies, not just in the US but in the world, are tech monopolies. They are slowly squeezing the life out of people at the edges while still providing products that people enjoy. This is why this is not the same clear-cut case that you can imagine, like railroads or tobacco [were monopolies], but I think it’s going to be that.”
For myself, my career advanced during the golden age of startups (2008–2014) but was dramatically usurped by age of platformization in tech. The eight years I spent building e-commerce were rendered no longer necessary by Shopify. In short, my career was replaced by a robot.
As a 42-year-old seasoned developer on the job market, it’s challenging to make a switch. I generally think most hiring in React probably see me as too old to even be relevant. (Mr. Heinemeier-Hanson, whom I have never met but interacted with online, happens to be one month to the day older than me. Kent Dodds, whom I have also never met and only saw as an audience member at this virtual conference, is 10 years younger than DHH and I are.)
The interviews I do get are all for Rails positions and have a common theme: A large team of mid-career devs in an organization with an old Rails codebase. The codebase shows years of slipped (or non-existent) testing practices, inconsistent patterns and design systems, and rushed code abstractions problems (or, as we say in the biz, “code smells”). People throw around terms like every developer reinvents the wheel. These teams speak to a larger pattern in the tech ecosystem: A very few select Rails apps from the golden age of startups survived, and all the others failed. (If your name is Github, Shopify, or Basecamp please stand up.)
The ones that failed number in the thousands and thousands of Rails apps. They were tech startups that didn’t cross the chasm, or at least didn’t do so on Rails. This left Ruby on Rails as a paradoxically more specialized but smaller community, like the frontrunner everyone forgot about.
(In his famous 1991 book Crossing the Chasm Geoffrey Moore asserted that in the technology adoption lifecycle, a tech company could probably get its friends and family to be innovators and early adopters.Then, the critical make-or-break period is when a tech company moves, like a tortoise, across a large chasm in a desert with predators [competitors] on all sides ready to take it down.)
An experience gap in the industry has left a void: Quality standards aren’t what they should be.
Unlike 2008, today there are tech-haves and tech-have-nots: working at an early-stage startup is now seen as risky, aberrant, and probably a place where soloism is fostered. For early career entrants into software today, it seems they are all hungry to get positions at late-stage tech company (like Google, Apple, Microsoft, Amazon, Facebook, Adobe, Paypal, Shopify, Spotify, etc). When I was in the tech bubble in San Francisco in 2008, if you didn’t get in a Google, Apple, or Yahoo you could certainly be a founder of your own tech startup to gain similar cachet (I’m talking about prestige and admiration, not computer memory). Today nobody ‘goes into’ startups.
Rails was born out of a rebellion against Java. “Look at how little code we can write, Java devs. Now what!” DHH proclaimed proudly. It was always an anti-corporate framework that helped startups get from the innovators to the early adopters. But did Rails apps survive crossing the chasm to early majority?
People ask me what I predict will happen in the future of mobile, e-commerce, web development, and hardware tech. I haven’t the foggiest, I tell them, and if I knew I likely wouldn’t tell you. Keep testing and carry on.
—
Jason Fleetwood-Boldt is runs the consulting agency VERSO COMMERCE. We can help you with site speed, analytics, competitive research, Wix, Shopify, React, or NextJS/Node apps. Get in touch today at https://versocommerce.com
Cover art by IncrediblyBizzy
Top comments (3)
It is rare to get a frank appraisal from someone who has seen both worlds. Thank you!
Would you advise a programming newbie to skip Ruby and go straight into the JS world? Rails is easier to learn, and it's good to learn multiple stacks, but on the other hand there are not many junior positions for Rails. It's true that I could learn JS frameworks after Rails, but I'm not sure that is worthwhile. I don't have infinite time to learn everything and then get a job. Maybe Rails is easier for a solo learner to build portfolio apps with? But if there's no Rails job at the end of the tunnel...
There are definitely Rails jobs to be found!
The author’s critiques about Rails are mostly valid: it’s important to recognise its limited palette of abstractions and move beyond them when needed. Many Rails teams don’t have the modelling experience to make this transition well, and that’s why so many Rails apps end up as big balls of mud.
But as a way to iterate, prototype, and get from 0- something very fast, there’s still very little quite like Rails out there.
Thanks. That is reassuring. I did a quick job search, and I see that there are plenty of jobs out there. Even if I will have to look harder for a junior position, there is hope.