Why it is just lazy to bad-mouth Ruby on Rails

2017 August 03, 18:01 h

It's inevitable these days: we will see an article proclaiming the demise of Ruby on Rails every once in a while. It's the easiest click bait, like this one from TNW.

Now, you may say "another Ruby fanboy." That's fair, but a terrible argument, as it's a poor and common argumentum ad hominem. And on the subject of fallacies, the click-bait article above is wrong exactly because it falls for a blatantly Post hoc ergo propter hoc fallacy plus some more confirmation bias which we are all guilty of falling for all the time.

I'm not saying that the author wrote fallacies on purpose. Unfortunately, it's just too easy to fall for fallacies. Especially when everybody has an intrinsic desire to confirm one's biases. Even trying to be careful, I end up doing that as well.

On the specific subject of Rails, start here:

As a general rule, anyone announcing the future demise of anything is most probably wrong. It's fun to play guessing games, but articles in high profile websites like TNW should be more careful as many beginners in the field end up trusting their opinions.

Which is why I usually tell people to stop trusting opinions. Everybody has an opinion, which is why it's so cheap. Then people artificially grade "celebrities" or "gurus" as having opinions of higher value. I don't buy it, neither should you.

Black Swans do happen. But it's an exercise in futility to try to predict them. You may be lucky, once or twice. But it's useless to attempt. Which is why I am a high proponent of Antifragility, so I will give you the general rules to understand what to do.

Am I saying that Ruby on Rails will live on forever? Don't be absurd, of course not. Nothing lasts forever. More than 2 decades actively working in the field taught me that betting everything on one horse is a mistake. It's valid in the financial markets, it's valid in the tech market.

Instead of stock or bonds, your asset is your knowledge and your practice. Diversification of your portfolio is usually a better bet.

You invested all your 401k in Bitcoins. Now you will try everything to try to confirm your bias by subscribing to every news piece and opinion that confirms your bias, and you will denounce every article that may have an argument against your bet. Am I saying to not invest in Bitcoins? Hell no. Just don't be stupid and invest everything on anything.

You invested all your time learning Google Web Toolkit in 2006. Good luck for you finding an article to confirm that bias. This is one case, an after-the-fact, that we can't do much but consensually agree on its death.

The job of a proper professional programmer is not mastery of a single tool or even a single technology stack. Your job is to be as good as possible in learning and practicing in the technology field.

Having said all that, and even though the article structure is innaccurate. The feeling is not wrong. Ruby on Rails no longer represents what it was 10 years ago. Now, before you start freaking out, let's explore it down memory lane.

2003 - A New Renaissance

As an after-the-fact exercise, one has to realize that a series of events helped unfold the Rails phenomenon between 2003 and 2011. It was not by design. It was not planned. It could've been something else.

Then we reached 2004.

How Bill Blew it

Ruby on Rails shows up as a very small curiosity, in an obscure tech conference in Brazil, created by a small but promising agency called 37signals. Signaling something most developers never have seen before: a flexible language - unlike Java or C# or PHP - that could be used to implement Gmail-like web applications with a flavor of the Apple vision and steering away to everything that Microsoft and IBM represented while incorporating Agile-like techniques such as Test-Driven Development in a practical way and out-of-the-box.

15 minute blog

What else could you ask for in 2005?

Then 2006 happens: Amazon AWS release S3 and EC2 and the term "Elastic Cloud" becomes the new hype.

Up to that point, "web development" either meant expensive and bureaucratic IT departments in big corporations or inexpensive but weak shared hosting in services such as Dreamhost, 1&1, Media Temple.

Elastic Cloud holds the key to surpass the enterprise and make it possible for independent developers to build the elusive "web scale".

Ruby on Rails is exactly where it should be: started to be adopted by a new crop of Silicon Valley tech start-ups trying to make a dent in the universe in this new Ajax-based Cloud-era. Remember that Rails was first released with RJS, a way to write Javascript through Ruby using Prototype and Scriptaculous. jQuery was not even mainstream yet.

Twitter shows up. Groupon shows up. Engine Yard shows up. And much more follow.

It's all happening blistering fast, bear in mind that I am only touching the surface here.

2007 arrives and at least 3 big things happen:

2008: the birth of GitHub and the dawn of the DevOps.

Git was great but too low level. Several other contenders tried to become the new standard such as Mercurial and Bazaar. But the birth of GitHub would change all that. Again, another Rails-based start-up making the news.

There's an App for that

But the honeymoon is showing signs of reaching an end: prominent Ruby developer, Zed Shaw, loudly leaves the community by January.

During this year we also had the cold war between Engine Yard's Merb framework and 37signals' Rails, resulting in the controversial Rails-Merb merge, placing another crack in the community.

But we still had a lot of work to do, so we moved on.

2009: "there's an app for that!"

Apple finally releases a proper native SDK. Developers start building a new generation of productivity apps and games. WebKit starts growing in market share. Apple solidifies the concept of aesthetic in software development and Ruby on Rails is at its high at that point.

We begin the NoSQL era. When data storage and fetch start to really become a bottleneck, we quickly learn that traditional enterprisey databases are not "web scale" enough. MongoDB leads the pack. Web development starts an era of craze over NoSQL.

In parallel, Twitter, once the poster-child of the Rails generation creates a crack in the Ruby community when it declared that it's started to use yet another obscure language: Scala!

This starts the endless obsession era about "concurrency", yet another elusive concept that many talk big and talk a lot but only a few actually grasp its meaning. It's the start of the window of opportunity for Node.js, Scala, Erlang, Clojure, Go.

The honeymoon is over.


Thoughts on Flash

In my personal opinion, this is the year when Rails reached its peak in terms of influence. It was the go-to stack for developers in Macs wanting to create their brand new Lean Start-up.

2011: A New Era

In around 6 years the software development market did titanic shifts:

Android is getting closer to the iPhone. Microsoft is resurrecting from its ashes. In October, Steve Jobs dies, marking the end of the Era of the heavy influence of Apple.

But around 2011 another thing happened: we win.

Independent developers surpassed the status quo of enterprise developers. There is a shift of power. The conventions for the software development field don't come from the old big tool vendors anymore. We are not listening to IDE vendors like Microsoft, BEA, Oracle. We are now listening to the winners of this generation of startups: Apple, Google, Facebook.

The concept of "one language to rule them all" was shattered in the web camp by Ruby on Rails and in the native application space by Apple. 2 very unusual and strange languages, Ruby and Objective-C reached mainstream status. They proved that developers can learn and master exotic languages turning them into profitable products.

With those foundations set, a new gold rush emerges: new languages galore, free from the notion that to become successful one had to stick to Java, C#, C++ like languages, people finally started looking elsewhere to differentiate themselves, and thus a new generation of exotic languages arrive: Scala, Haskell, Ocaml, F#, Erlang, Clojure, Rust, Elixir, etc. The sky is the limit.

By killing Flash and accelerating HTML 5, ES6, and with all the controversies around concurrency, Javascript gained new life and fast adoption unlike nothing else before.


Is Ruby on Rails dead? No.

Is Ruby on Rails still the leader of the pack? No.

What is the legacy of the Ruby on Rails Generation? It played an important role in defining what we now consider the new status quo for web development: Git, CI, CD, Cloud, Metrics. It brought the Apple aesthetics thinking to the table in a big way.

That new crop of tech startups had a serious side-effect though: it put new engineers in the spotlight, elevating them to rock star levels and turning them into Steve Jobs wannabes. They just started taking everything we accomplished for granted. Recipe for disaster.

And while the big vendors' influence became thin compared to the 90's, they are not dead. After 2011 we ushered a new era of chaos, an era of dissatisfied developers. Where every couple of years a new derivation emerges and we have that unsatisfying feeling that we need to rewrite everything all the time.

The Ruby on Rails pool got diluted into smaller niche languages such as Javascript itself, Go, Elixir, Scala.

The Java/Microsoft mainstream is gaining new traction. Aesthetics also got diluted. Careful engineering is getting diluted. Social networks ubiquity and the easy path of quick cloud deployment is making people less and less patient. Crafting requires patience. People crave Likes, a new generation of vanity metrics arose.

We now have a larger number of independent non-enterprise developers with little to no patience, with an exaggerated sense of confidence, and not-invented-here syndrome, taking everything from granted and caring less and less about proper value.

In conclusion, the death of Ruby on Rails is indeed greatly exaggerated, it will keep on going for many years still - especially if the Ruby Core Team can actually deliver on the 3x3 goal. People like to share doomsday articles while optimistic and more realistic reports such as this Why Ruby on Rails is still the best choice? are largely ignored. Such is the way of social networks vanity.

But it will not be what it once was because the times have changed. We can now live by the "On Rails" workflow without Ruby on Rails. And it can't go on breaking the status quo, because it became the status quo.

I wonder where that will lead us. I do have a few clues, but as I said, I am not in the game of publishing click-bait headlines.

tags: ruby rails


comentários deste blog disponibilizados por Disqus