DHH On The Freedom Of Server-Side Programming
As I've been digging into the Hotwire framework recently, I've also been looking for external input on the same topic. In that vein, I came across an old episode of the Full Stack Radio podcast hosted by Adam Wathan. In Episode 151, Adam interviewed DHH (David Heinemeier Hansson) on building Hey with Hotwire. And, while the Hotwire content was fascinating, it's not why I'm bringing this up. What truly struck me about the interview was DHH's perspective on the freedoms that server-side programming gives us; and, that there is something fundamentally important about being able to choose technologies that bring us the most joy.
With Adam's permission, I've pulled out this portion of the audio in order to rebroadcast it below:
Audio Transcript
This transcript was generated from the MP3 file using AWS Transcribe. But, I edited it manually afterwards:
David Heinemeier Hansson: I think JavaScript is a fine language. It's not a horrible language. It's not a great language, for me. Right? My personal truth there: Ruby, best programming language ever made - for me - when I'm trying to write web applications. No interest whatsoever in giving that up. Right? So whatever drawbacks there may be to allowing me to use my favorite programming language in the entire world to create the applications that I do, I'm gonna look into that, I'm gonna figure it out, I'm gonna find a way to make it work.
Not just for Ruby either, right? That's the other big part of this appeal, is that server-side sets the programmer free to choose the programming language that they hold dear. Instead of this idea that, oh, we should all be writing JavaScript for everything. No. I guarantee if you ask 1,000 programmers, "What's your favorite program language?", you're not going to get 1,000 people telling you: "It's JavaScript, I love it to end of the world", right? I keep hearing from people who write Python or Closure or Erlang or whatever. That's their favorite program language and that's so wonderful - that diversity that the web allows us to have because on the web no one knows if your server is a Commodore-64 or Vic-20 or running Ruby or running Erlang or running C, or you're running anything else.
It's one of the greatest gifts to programmers this world has ever seen. If you want to write a web app, you can use anything. I mean, you can literally use any program language that's ever been invented in the history of time to create your web application. That's amazing! Amazing! And people don't recognize just what a unique gift that is; and, ergo, they don't work all that hard to preserve it.
And that's one of the things we've found, that unless you exercise those freedoms, they atrophy, they disappear. And some of that has happened in web development at large. I'd say that there - in certain circles - is this assumption that, well, of course, we're gonna use JavaScript and it's gonna be isomorphic and like, that's the only answer. What!? Fuck no! Absolutely not.
Adam Wathan: Yeah. That's like giving up what you view as sort of a fundamental freedom that's given to you by the web.
David Heinemeier Hansson: Yes. And perhaps in many ways, for the enjoyment of the individual programmer, one of the absolute most important.
Whatever Goofy Shit Makes You Feel Alive - Do That
A while back, I walked by a car that had the bumper sticker, "Whatever goofy shit makes you feel alive. Do that.". It's a funny sticker; but, I think it speaks to a much more profound truth about being alive. That there are things that we like and dislike in a way that can't be explained by logic. They are simply fundamental to what makes each of us a unique and beautiful individual.
As I get older, I'm finally beginning to understand just how completely subjective everything is. And, slowly, I'm giving myself permission to lean into that subjective nature instead of wasting energy trying to fight it - trying to explain-away why I love some things and dislike others.
I freakin' love ColdFusion! It's an amazing programming language that does so many things right. But, my well articulated list of benefits won't matter to you if CFML doesn't spark joy in your heart. And, that's OK! Instead of arguing about one programming language or another, I think we need to take a cue from DHH and just celebrate the fact that the web gives us the unbelievable freedom to follow our passions without having to justify them.
Reader Comments
Yes. Well. DHH is speaking from a privileged position of being "famous" so he can indulge himself and do whatever he wants because ppl will pay him for being DHH, not because he likes Ruby.
In reality, people don't necessarily have the option to just do whatever language they like, or stick with one because it's their fave: they need to find work that will pay them, and in sunsetting environments (like CFML), it's foolhardy to base one's decisions on "well I think CFML is the bestest, so...".
You yourself are a good example of this: your gig is moving away from CFML because of whatever reasons the decision-makers concluded that was the right thing to do (my guess: difficulty in getting good devs who want to sink effort into CFML, but that is just a guess). So you can love CFML as much as you like, but it's gonna stop putting bread on the table for you before too long. At least @ Invision anyhow. I also suspect had you not been a company founder, that bread supply would have been cut off a while back, so you too are speaking from a position of privilege here.
I think - for most people - sticking with a language "because I love it" is self-indulgent and self-defeating. For one thing I see a lot of devs - and this is rife in the CFML community - concluding their language is the best in the world, despite really not having much experience in any other language, certainly not enough to make informed decisions. Too many of them see to go "well I don't like this cos it's hard compared to CFML", without thinking that they are comparing their CFML knowledge now - after spending 10yrs at it or at least the same 1yr ten times over - with "New Language" @ zero experience. That's not the basis for a well-informed conclusion.
Comments like DHH's serve mostly to give ammunition to ppl who want to justify their - poorly reasoned - position: "well DHH said, so...". The logical fallacy in play here is "appeal to authority". This is not a slight on DHH specifically: he's in "good" company with a lot of the well-known "speaking from a position of privilege" ppl in our industry.
My recommendation is to lean in to the notion of "it's all subjective", but reach the opposite conclusion you seem to. It's subjective so it's not necessarily right. Go check out other stuff. Experience other things. Build a body of well-informed and more objective information as a basis for making more nuanced decisions. And perhaps treat programming languages more like a means to an end rather than an end unto themselves. Cattle not pets. Or at least don't just languish in one's comfort-zone because that is easy, and chalk it up to "it's all subjective so this is the right decision".
@Adam,
I think you're assessment of DHH is a bit unfair. He doesn't get to choose what he wants because he's well known - he's been choosing what he wants for decades; and, he's well known because he's obtained success doing it. The way you are coloring it, it sounds like he's been doing PHP for years, and is only now being like, "Hey, let's stop PHP and do Ruby on Rails because I love it," which is not the case.
As far as being privileged, though, you are right. Anyone who gets to make decisions about how a project is implemented is privileged. Heck, simply having free time and extra money to throw at a side project is coming from a place of privilege. So, I'm not going to disagree with you there. And, privilege does have its limits - to your point, it's not like I'm going to go in and tell my company to switch from Golang back over to CFML. I have neither the authority, nor would that be a value-add.
As for the rest of your comment, I'm not even sure how to respond to it because - with all due respect - I'm not sure you're really making any points to object to. It seems like you're saying, "Don't do the things you love because there may be better things out there"... which, why? If I have a side-project that I want to start, I'm going to choose the technologies I love - I'm not going to just randomly choose something else because maybe it's better? That doesn't seem like a wise step forward.
@Adam,
You seem very wedded to the idea of moving away from CFML; so, maybe let's not cloud our conversation with a CFML flavor. What about Ruby on Rails. If DHH / Basecamp is going to create another product (I did hear them say they are going to start a new product soon) - do you think they should use Ruby on Rails? Or, do you think they should explore something new?
RoR is not unlike CFML. It's an old language / framework and is past its peak hype-curve. Is it harder to hire for Ruby these days? Probably. Are tons of engineers excited to see Ruby listed in a job posting? Probably not. So, what would you say to the people running Basecamp?
Post A Comment — ❤️ I'd Love To Hear From You! ❤️
Post a Comment →