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

2017 August 03, 18:01 h - tags: ruby rails

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.

  • We were just recovering from the 2001 Internet dot-com Bubble Crash.
  • Social networks were starting to emerge, we had Orkut, MySpace, Friendster. Still no Facebook in the radar.
  • Blogs were starting to pick up steam and competing with traditional news outlets.
  • Big vendors focused solely on the Enterprise market at that point and the rest were deemed amateurish.
  • In the mainstream either you were doing .NET or Java on the Enterprise or doing hotsites in Flash and PHP for ad hoc agencies.
  • Even open source tools like Eclipse were primarily used through enterprisey umbrellas like WebSphere or WebLogic.
  • The Agile Manifesto has just been published in 2001 and the mainstream market didn't pay much attention. PMI and RUP were the order of the day.

Then we reached 2004.

  • Google successfully launched Gmail to much fanfare. Dynamic HTML and Ajax demoed how we could achieve Desktop-level applications in the Web. This is also where Javascript earns a new role beyond stupid web mini games or ads.
  • Facebook skyrocketed and we were shown glimpses of what granular social networks look like.
  • Apple consolidated its come back as a relevant tech giant with the successful resurrection of OS X, proving that Unix on the consumer desktop was viable.
  • Microsoft entered the 21st century after a super heavy antitrust case that almost obliterated the company. Bill Gates resigned, Steve Ballmer took the reigns and they had their darkest decade
  • Years of vendor lock-in finally started to wear off developers, no one actually wanted to use IBM, BEA, Oracle anymore and the promise of the open source revolution started in the 90's finally started to solidify
  • The dot-com crash left a depression in the tech market but it also left behind an infrastructure that was finally being put to good use

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:

  • Another Rails-based start-up is born: Heroku. If AWS EC2 coined the term "Infrastructure as a Service" (IaaS) Heroku defined what a "Platform as Service" (PaaS) means. It was able to put EC2 to good use and make its power approachable.
  • At the same time, developers have grown bitter of version control systems such as CVS and again, big vendor options such as Rational ClearCase, Microsoft SourceSafe, and others were just terrible. Subversion had emerged but its many shortcomings would become its demise. Linus Torvald's decides to fix the problem and release Git. Mainstream developers finally learn basic computer science terms such as DAGs ("Directed Acyclic Graphs").
  • The iPhone is released and a new mobile revolution takes place. Dominant players like Nokia and Blackberry were shaken to their core. Developers want a piece of it. Mobile Safari becomes high profile overnight. And it's WebKit core rises to stardom, eclipsing old veterans like Firefox/Gecko and Opera.

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.

2010:

  • The demise of Sun and Oracle as the new stewardship for Java. If things were not playing out cool for Java, that was a heavy nail in the coffin.
  • Apple declares open war against Flash. Another big push for Javascript and front-end heavy web apps.

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:

  • Distributed development derived from years of Open Source workflow becomes the new standard. Git and GitHub were key players. Big vendors have to play catch-up with their stinky enterprise alternatives such as TFS.
  • Agile is taken seriously in a new crop of tech startups evangelizing proper software development. Tests shift from unproductive obnoxious things into invaluable core technique. Tools like Hudson/Jenkins combined with Git workflow pave the way for what continuous integration and later continuous deployment would become.
  • AWS and the Heroku example pave the way to make old IT obsolete and create a new generation of infrastructure as software, and "DevOps". There is now the urge to deploy super web scale with zero friction. Time to market becomes a key factor: release early, release often.
  • Apple releases the AppStore and helps drive the Software as Service market, with apps requiring live internet to function. The "Cloud" reaches the masses.
  • By making everybody on Earth carry an always-on powerful device, a smartphone, we were never so close to the Orwellian future of 1984. Everything a person does is a data point. Big Data becomes a thing. Data Sciences becomes viable as a mainstream profession. I.A. related disciplines become a necessity to reason about so much data.

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.

Epilogue

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.

Comments

comentários deste blog disponibilizados por Disqus