David Heinemeier Hansson (DHH) was interviewed recently on the Ruby Rogues podcast. It’s a long 90-minute interview, but everything I’ve written here is based on just the first part (maybe 30 minutes?), which is all I’ve listened to so far. I was expecting him to be as opinionated, thought-provoking and entertaining as usual, and he didn’t disappoint:
But I’m curious to know where the Elixir/Phoenix community would agree with him, and where we would disagree. I guess what I’m looking for most of all is a robust critique of his views on Rails, Phoenix and front-end stuff.
I have moderate front-end experience, very little Phoenix experience (yet), and no Rails experience, but here’s my view:
At Basecamp they keep the front end as lightweight as possible (Turbolinks and their own micro-framework working in combination). David was quite negative about the popular JavaScript frameworks (and very anti-Redux, which he likened to J2EE, only worse). He claimed if you’re either building an MVP, or trying to make software with as small a team as possible, why on earth would you want to build and maintain a complex back end AND a complex front end? To me, his approach has great potential, especially with Phoenix. If your back-end Phoenix app is already lightning fast, why bother with a heavy front end if you don’t have to?
His views on Rails and Phoenix were much less convincing for me. Here I would have liked to see him sparring with a robust Elixir and Phoenix combatant/advocate like Jose, Chris or Dave Thomas (preferably all three), rather than being listened to rather passively by the interviewers. (Maybe they challenge him more later on in the interview? In their defence, they probably don’t know Phoenix well enough to challenge him properly.)
So firstly, David as the creator of Rails can presumably get more efficiency, maintainability and performance out of Rails than almost anyone else. So most likely Basecamp is about as-highly-an-optimised Rails app as it’s possible to make. He argued that Rails was easily “fast enough”. But if Phoenix is much, much faster than Rails, then doesn’t that mean a Phoenix developer can put off performance optimisations much longer, perhaps indefinitely? That feels like a big win.
Also, I don’t know what “fast enough” really means. To me, a blazing fast web app like Trello is far, far more attractive than any app that doesn’t almost instantly react to a user.
Then David argued that Rails was a more simple choice than Phoenix. He claimed you had to make more choices yourself with Phoenix. Again, I wonder if this is true. I thought one of the big attractions of Phoenix was that there was much less “magic” than in Rails? That you can easily see exactly what’s going on, giving you greater understanding and putting you in a much stronger position. Also, doesn’t FP have a much smaller surface area than OOP?
Anyway, that’s just some of my thoughts on it. I’m curious to hear what the rest of you thought of the interview. He also talks about Basecamp’s hiring philosophy, and presumably lots more in the section I haven’t listened to yet. It’s definitely one of the most interesting interviews I’ve heard in a while.