Season 1 Episode 4 Jun 3, 2020

Should Ruby Still Be a Thing in 2020

Pitch

We get into why DEV is a Ruby shop, and what the pros and cons are of using the language, with James Harton, software engineer at Balena, and Vaidehi Joshi, senior software engineer at DEV.

Description

Ruby is a scripting language created in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan. It's popularity surged in Japan by 2000, which was also when the first English language book about the language, Programming Ruby was printed. After that, Ruby had its sunrise and sunset in terms of favor amongst developers, but continues to have a robust community of users. In this episode, we talk about the history of the language, some of its benefits and pitfalls, and why we continue to use it at DEV, with Vaidehi Joshi, senior software engineer at DEV, and James Harton, software engineer at Balena, and author of the 2018 DEV post, "Please stop using Ruby."

Hosts

Ben Halpern

Ben Halpern is co-founder and webmaster of DEV.

Jess Lee

Jess Lee is co-founder of DEV.

Guests

James Harton

James is a senior software engineer based in Wellington, New Zealand. He has over 20 years experience in network and software engineering, and system administration. He is strongly focused on diversity, collaboration, ethics, and mental health in the tech industry. He loves to make things.

Vaidehi Joshi

Vaidehi Joshi is a senior software engineer at DEV, and creator of the Base.cs blog series and podcast.

Show Notes

Audio file size

66840026

Duration

00:46:29

Transcript

[00:00:01] JL: This season of Dev Discuss is sponsored by Heroku. Heroku is a platform that enables developers to build, run, and operate applications entirely in the cloud. It streamlines development, allowing you to focus on your code, not your infrastructure. Also, you’re not locked into the service. So why not start building your apps today with Heroku?

 

[00:00:22] BH: Fastly is today’s leading edge cloud platform. It’s way more than a content delivery network. It provides image optimization, cloud security features, and low latency video streaming. Test run the platform for free today.

 

[00:00:35] JL: Commerce.js is a headless ecommerce platform built for developers. With Commerce.js, you can rapidly build and ship custom ecommerce integrations without needing a ton of experience or a big engineering team behind you. Head to commercejs.com/devto to sign up for free now.

 

[00:00:53] BH: DigitalOcean offers the most easy to use and developer-friendly cloud platform. It simplifies managing and scaling apps with an intuitive API, multiple storage options, integrated firewalls, load balancing, and more. Get started on DigitalOcean for free with a $100 credit DO.co/devdiscuss.

 

[00:01:16] VJ: I think that sort of makes it a little bit unique compared to other languages. It’s sort of like a gateway programming language in the best way possible.

 

[00:01:23] JH: The first that’s free.

 

[00:01:37] BH: Welcome to Dev Discuss, the show where we cover the burning topics that impact all our lives as developers. I’m Ben Halpern, co-founder of Dev.

 

[00:01:45] JL: And I’m Jess Lee, also a co-founder of Dev. Today, we’re Talking Ruby and are joined by James Harton, Software Engineer at Balena, and Vaidehi Joshi, a Senior Software Engineer at Dev. Thank you both so much for joining us.

 

[00:01:57] JH: My pleasure.

 

[00:01:58] VJ: Happy to be here.

 

[00:01:59] JL: So James, you started a healthy debate on Dev by publishing an article titled, “Please stop using Ruby”. And then about a week later, you followed up with, “Please keep using Ruby”. Can you tell us about your background with the language?

 

[00:02:13] JH: Yes. I’ve been using Ruby since I think about 2005, 2006 as a professional Rails dev for most of that, also one of the few certified Rails developers in New Zealand. I was a committee member for the Ruby New Zealand Association and also organized a rails camp in Auckland when I lived in Auckland.

 

[00:02:37] JL: Vaidehi, can you tell us about your background?

 

[00:02:39] VJ: Ruby is the first language that I really ever started learning. My background is a bit nontraditional. I did a coding bootcamp and that’s where I started working with Ruby and pretty much I’ve been using Ruby with Rails ever since and it’s been like six years. So I’ve done other things too, but Ruby has always been very close to my heart.

 

[00:03:02] BH: As a member of our team, you want to talk about what you’re doing right now with Ruby and just kind of what you’re working on with Dev in general?

 

[00:03:11] VJ: As far as working on Dev, I work on a team that’s really focused on making the Dev experience magical and delightful for new users. So a lot of the first pages when you’re onboarding onto Dev or some of the first notifications that you get are sent via our Rails app and I work on that part of our code, which is really exciting when you think about all the different folks who are entering the tech industry and starting off by checking out Dev and maybe signing up for an account and reading some posts on there. So those are the folks that I’m pretty focused on making life great for, at least on the Dev platform.

 

[00:03:54] BH: Yeah. Well, Dev is a Ruby Shop, which is a big reason why Vaidehi wound up joining up with us in the first place and how Jess and I met. It’s got an ecosystem. It’s been around long enough to have its journey by this point. Both of you have a fair amount of experience with it. high level. What would you say sort of the biggest reasons Ruby has taken off in the first place? Why has it reached the popularity it has?

 

[00:04:23] VJ: Well, I think it’s really hard to talk about Ruby without talking about it in the context of Rails, I think, especially if you think about how many people are using Ruby because of Rails. And as far as why it’s taken off, I think it’s a very opinionated community, and there are also lots of great conventions that have been set out when you use Ruby in conjunction with Rails. So I think that’s a big part of why it’s so popular, but also the community has really flourished in the last like 10 plus years, even more than that. I don’t even remember when Rails really came about. But it’s really got its own voice now because the community has welcomed so many new folks into it and they’ve contributed resources and documentation and tutorials. And so it’s really easy to get started with it because there’s such a good foundation of that language and the community that’s built around them. That’s probably my guess of why it’s done so well.

 

[00:05:25] JH: I’d have to agree with pretty much everything you said. The Ruby community seems to be what makes it the most friendly and inviting language that I’ve ever come across. It stems from Matz’s original idea of making a language that is optimized for developer happiness and I think everything stems from there. So for those who are playing a lot at home, Matz is the name of the initial inventor of the Ruby language. Well, the totaling that has grown up around Rails and then is spread out into the rest of… got its fingers into the rest of the Ruby community also helps make it a very conventional and comfortable experience to write Ruby. And I should say that Ruby was the language that made me fall in love with programming, again, after years of not wanting to do it anymore.

 

[00:06:14] BH: That kind of resonates with me pretty well. I mean, I got into programming a little bit and other languages and then sort of falling off. Ruby actually really helped me sort of fall back in love as well, and I think that’s a pretty typical story and with all its flaws that we’re going to talk about as well, I think that’s a pretty consistent story that people actually just really love the programming language or at least really fell in love with it at one point or another. When I read your posts, what really stood out to me was the valid point that I think a lot of what made the Ruby ecosystem so special when it was really I think an innovative language 15 years ago, maybe it’s really right as it was starting to take off. A lot of the qualities have been adopted by other environments, other programming languages, and while taking some of the good parts of Ruby, they’ve sort of also fixed some of the issues, thought concurrent and parallel from the beginning. What do you think about that?

 

[00:07:14] JH: I think that’s still basically true. The languages that have come along in parallel with Ruby over the last dozen years or so have definitely learned a lot that I think Ruby is one of the languages that really led the way, especially the Rails community led the way on tooling and testing. These are non-negotiable. We need good tools, we need a good developer experience, and we need strong conventions. And I think you see the output of that in languages like Rust, which has really, really good tooling, very strong conventions. And also Elixir, which I like to say is feeling empowered by thousands of angry Rubyists.

 

[00:07:54] BH: Yeah. You can really tell when a community has Rubyists in it, even if it’s not a language like Ruby, it’s not inspired by Ruby, but there’s a lot of sort of the corners of the ecosystem, which were sort of adopted by the Rubyists who wanted something else but are still kind of part of that sort of Rubyist ecosystem.

 

[00:08:17] JL: So community has been mentioned a bunch here as well as developer experience. Can you tell me a little bit more about what that actually means? Because I hear a lot that Ruby has a really nice community and Matz has always cared about the developer experience, but like what does that actually mean and how does that differentiate from other programming language communities?

 

[00:08:37] JH: I guess one of the cooler things about the Ruby community is this concept of MINASWAN, which is an acronym that stands for, “Matz is nice and so we are nice.” So he kind of leads the way on just being thoughtful, kind, and very caring in his responses to the community. I can imagine that as a language creator and designer, a lot of the feedback that you get from users is possibly not the most pleasant, especially people like me writing articles about all its flaws, but he has consistently maintained a positive attitude and that has had a very positive effect on the Ruby community and also has spread its tendrils across the industry as a whole. For example, Jose Valim, who is the creator of Elixir and a former Ruby core team member, I don’t know if his style of communication has inspired by Matz, but it’s certainly very similar, very, very patient, very careful to give good answers, never tells anyone they’re dumb, that sort of thing. On the other side, the developer experience is having good tooling is super important, but also having a language that allows you to implement your ideas and sort of stays out of the way until necessary in terms of the restrictions that places on you as the implementer of a feature. I’ve been programming a lot of Rust lately for work. I love the Rust language, but it’s kind of the opposite. Everything is in your way. As a developer, you have to think about everything. You have to think about how long a piece of my data is going to sit in memory, what the types are, what they’re generic over. All these things are just things that aren’t something you really ever have to think about in Ruby. And of course that’s one of the reasons why we pay the performance penalty we do to use Ruby.

 

[00:10:30] BH: Vaidehi, what’s been your thoughts about the Ruby community? I know you’re very involved in the conference scene and stuff. How have you felt about the Ruby ecosystem versus other spaces in software?

 

[00:10:44] VJ: I think the Ruby ecosystem is unique and that it has set a lot of trends. It’s a little bit hard to pull that apart now, if you’re getting into tech, because a lot of other ecosystems have started picking up on things that Ruby was already doing and James sort of alluded to this, but there are a lot of folks who started off in Ruby at some point and now have branched off into Rust or into parts of the JavaScript ecosystem. And you can see a lot of very basic Ruby core tenants reflected in those communities as well. And for me, those core tenants are like obviously MINASWAN, “Matz is nice and so we are nice.” But also just generally welcoming any kind of member into the community regardless of their background or maybe their technical skills or if they have a CS degree or not. I think you see a lot of people start off with Ruby. I think partially because the community is so welcoming and they are always excited to get you involved in conferences or contributing to open source or sitting and pairing with someone. I’ve seen that at lots of different events, but I think the other part of it is also that it’s really easy to hit the ground running with the language. And I don’t know that I could say the same for many other languages. And I’ve worked with Rust as well, and I remember being very amazed by its performance benefits, but also like feeling a little bit like a newbie again. And when you start with Ruby, you can sort of just go from 0 to 60 very quickly. And that’s a really empowering feeling to be able to just build quickly. And as James mentioned, sometimes you pay the price for it, but I think that’s why the Ruby community has such a diversity of thought and members and ideas that come forth from it. And some of them are not even related to Ruby, like some of them are just broader concepts related to technology. And a lot of those patterns you can find some of the best explanations of technological patterns and patterns and programming implemented in Ruby because people are willing to convey those ideas to different folks in the community.

 

[00:13:01] JL: Can you expand on how Ruby makes it so easy to go from that 0 to 60 feeling?

 

[00:13:06] VJ: It’s just like when you couple it with Rails especially, but even if you’re just writing a Ruby script, I think the language itself really reads well. And I will add the caveat that if you’re a native English speaker, you might have a different experience versus someone who is maybe not as familiar with English or English as a second language, but when you just look at a file of Ruby code, I think you could show it to somebody who perhaps even hasn’t written any code and it might still really make sense. So I think there’s like a lower barrier to entry when it comes to starting to write your very first piece of software. That’s part of it. And then also you can just start rendering things on a page, and if you follow the conventions set forth by a framework or if you follow examples of scripts that exist, you can just go and make requests to APIs and it’s a really validating feeling to get a response back from somewhere or to get like a picture rendering on a page and you suddenly feel like, “Oh, I didn’t know how to program, but actually I did this thing.” And so that’s that amazing 0 to 60 feeling that I think Ruby provides and there aren’t as many hoops to jump through, and I think that sort of makes it a little bit unique compared to other languages. It’s sort of like a gateway programming language in the best way possible.

 

[00:14:32] JH: The first that’s free.

 

[00:14:50] JL: Commerce.js is an ecommerce platform that is changing the way developers are introduced to and experience the world of custom ecommerce. Commerce.js sits around your code, your designs, your stack, not the other way around. This means that you can actually take full control from the storefront, to the checkout, to the receipt. Head to commercejs.com/devto. It’s free to sign up with platform wide features and no trial windows.

 

[00:15:16] BH: With DigitalOcean’s cloud infrastructure, you’ll be able to build faster and scale easier from predictable pricing, to flexible configurations, to world-class customer support. You’ll get access to all the infrastructure services you need to grow. Plus, DigitalOcean’s community provides over 2,000 tutorials to help you stay up to date with the latest open source software, languages and frameworks. Get started on DigitalOcean for free with the $100 credit at DO.co/devdiscuss.

 

[00:15:46] JL: So now that the three of you have sold us all on Ruby, James, could you start by sharing some of the flaws that you mentioned in that first article that you wrote?

 

[00:15:57] JH: Yeah. When I got Levi’s, your producer’s email, I realized that [inaudible 00:16:03] article that I wrote while I was probably feeling a bit low was definitely coming back to bite me. So Ruby definitely has some flaws. It is slow in terms of its speed, just as an interpreted language. The core team has definitely made a lot of improvements over the last, God knows, 10 years on the performance of the virtual machine, but we’re not choosing Ruby because we want to run code really fast. There are definitely other choices for that. The concurrency story, whilst also getting better, is kind of floored by just the initial design of the language, like one of the problems of having everything being runtime mutable including types and classes and modules means that it’s very, very hard for the virtual machine to optimize and to make smart decisions about what data is being shared between threads and things like that. It’s really just not great for those use cases, I guess.

 

[00:17:02] JL: Vaidehi, if you could change one thing about Ruby, what would it be?

 

[00:17:07] VJ: I really like that you have the sense of safety with some other languages where you know you’re not going to get unexpected errors in production. I’ve seen that with like Elm. Rust is the one that I’ve worked with that I was sort of flabbergasted when I realized that I could never run into those types of errors in that language. It would be really cool to not ever see like trying to call a method on nil error ever again, that would be great. I think that’s a really big ask, but getting rid of unexpected errors in production would be really great, but that basically means changing Ruby to be Rust which is what I’m asking for without sacrificing how much I love Ruby. But if anybody wants to make that happen, I would not be upset about it.

 

[00:17:55] JH: I think there’s definitely some things Ruby can take from those other languages and bring back. I mean, there’s been a lot of proposals to add types and there’s been progressive-type proposals and various other proposals to try and add types to Ruby, and I don’t think that’s quite going to work, but also it’s clear that duck typing is great from an academic OO design kind of idea, but it often doesn’t meet reality because you don’t have people. When you have a team of developers, they all have to be the same level of careful and that is very difficult to maintain. But there are definitely things from other languages that we could take. For example, I think one thing that would make an immediate benefit to Ruby is more use of result types rather than just returning nil for things that you don’t know what they are. So that you have a better idea of whether the thing was successful or failed and why.

 

[00:18:46] JL: What is duck typing?

 

[00:18:47] JH: Duck typing comes from the classic saying, “If it walks like a duck and quacks like a duck, it’s a duck,” and the programming or in the typing context that means that if you have an object and it implements the methods or the behavior you want, then you don’t actually need to know what it is, what type it really is. As long as it can pretend to be a duck, then you’re fine. If you pass an object as an argument to one of your methods, for example, and you can tell it to quack, then that’s fine. You don’t actually need to know if it’s a duck or something that’s pretending to be a duck.

 

[00:19:23] JL: Ben, I wanted to ask, why did you choose Ruby to build Dev?

 

[00:19:30] BH: Honestly, it was really a developer happiness play. I wanted to do something I would just enjoy kind of spinning up and working on and it was really sort of a backlash against this sort of other programming I was doing at the time, which was mostly Node and JavaScript. For me, it’s not like JavaScript is that different from Ruby and in the regards that we’re talking about, but I felt like I was missing the simplicity of Ruby and the conventions of Rails. And I bought into the notion that it was a pretty ideal environment for the sort of ultimately the simple task that Dev is trying to accomplish, which is render a page on the internet. And in that regard, I thought it was the right tool for the job. It was going to help me create your basic website and life’s really a journey, not a destination. So I wasn’t really thinking about the end product. We’re up to a couple of dozen developers on the team. We’re kind of a bigger company that I envisioned becoming when it was just an idea about making a website. And so I didn’t try to get to the point where we are now at the beginning. I just wanted a nice process for myself when I just wanted to kind of take something in my head and put it on the internet. And hard to say that I would have gotten this far if the off-the-shelf solution wasn’t friendly enough, like rails generate models. They really make it easy to get from zero to one.

 

[00:21:08] JL: I’m just realizing that if Dev wasn’t a Ruby shop, the two of us probably never would’ve really teamed up because Ruby was what I knew the best coming out of my bootcamp. And yeah, so thank you for that decision.

 

[00:21:21] BH: Yeah. I was thinking about that before the call as well because it’s not like right now it matters so much what language we’re running in terms of what we ultimately developed in a working relationship and a team, like it doesn’t seem like it matters that much. But when we met and you were looking for some professional software mentorship trying to break into the space, I don’t know if I would have been all that helpful or would have wanted to do all that much if you were kind of working in an environment I didn’t know as much. And so just like how the community and the ecosystem, it matters sort of who’s involved and how they bring people in. We can definitely you and I think our shared knowledge of Ruby for sort of starting to work together at all, even if that’s just kind of like a detail looking back.

 

[00:22:14] JL: Yeah. I mean, just thinking about side projects, it’s great that you chose a language that you were comfortable with. I feel like if you were exploring something on the bleeding edge, we probably wouldn’t have gone this far.

 

[00:22:29] BH: Yeah. I was doing more bleeding-edge stuff at the time in JavaScript because I feel like everything is pretty much bleeding edge in JavaScript.

 

[00:22:39] JH: It may.

 

[00:22:41] BH: Yeah. And it’s a whole different kind of software development and Ruby sort of chooses to be a year or two behind the trends typically. Even though at one point it was trendy, I think it created a lot of trends, like the whole package ecosystem that Rust and JavaScript took and ran with in other places. But as it stands, it’s also sort of this old boring programming language that is kind of funny and they don’t teach it in universities surely and they don’t really teach it in bootcamps either anymore. It’s kind of just this point in time. Ruby like had its time in the limelight and that is kind of over, but it’s going to be around for a long time with this kind of era of big software projects and GitHub and Shopify and Stripe and hopefully Dev as we grow. We are going to be writing Ruby for a long time to come, but it will be interesting to see sort of what that means for the software ecosystem in 10 years. How long until we are talking about Ruby like as if it’s the new COBOL. Yeah.

 

[00:23:56] VJ: I don’t know. I have a theory that everything in software comes back again. Like if you look at how people got really into distributed systems this decade, I feel like, but distributed systems were around in like the ’80s and it’s like people are rediscovering papers from them. So I have a theory in like 20 to 30 years. People are going to be like, “Oh my God! Did you read this book by Sandi Metz? She’s talking about object oriented programming.” So I think Ruby might come back into the limelight at some point.

 

[00:24:25] JH: I think you’re definitely right, and in fact Ruby itself is a proof of that and that it’s basically small talk coming back around 20 years later.

 

[00:24:34] JL: Would you say that the performance issue is what makes Ruby not as popular as it once was as a main reason?

 

[00:24:41] JH: I think it’s probably more fed based. I mean, I myself have hopped on about concurrency, but I feel like it’s more about fashion that people want. They look at Node and they get told about how it does everything asynchronously and that’s pretty cool apparently. They get told about how they can use Coroutines and Go and that’s pretty cool apparently. All these different paradigms will vie in for our attention and which one is the shiniest at the time. I mean, remember most people get into… Well, here’s a gross generalization warning. A lot of people get into software engineering because they like shiny things. So it’s funny because one of the things that I’ve learned over the last years as I’ve matured, shall we say, as an engineer, is that boring is great and that’s one of the reasons I still love to see Ruby in production systems because when I’m working with a team and I’m looking at a pull request and I’m reviewing the code, I’m really looking for a deeply unsurprising result from that person and Ruby is usually the language that gets me there.

 

[00:25:45] JL: Now that Ruby isn’t the shiny object of attention anymore, something we noticed recently is that we work with a consulting company and they were looking to hire another Ruby developer and they’re based out of India and it was actually very difficult for them to find somebody who could code in Ruby and wanted to. Yeah. I’m curious how that is affecting the industry job market. But I will say that, I’m not really seeing that in the US because we got lots of applications when we were last searching for engineers.

 

[00:26:22] BH: Yeah. I think depending on the markets, there’s a lot of like if you’re closer to the heart of the software startup space, you might sort of like see a lot more people kind of catching on with Ruby and like the bootcamps are doing Ruby for so many years. But if you’re sort of like in a different market where a lot of the big companies are looking for a lot of Java developers in their consulting sort of space and then like if you’re a brand new startup, you’re probably looking in the JavaScript and it’s such a human network sort of thing, like that popularity element, like James, what you were talking about, it’s hard to say like that market is always very rational, like people are kind of adopting the right things. It’s kind of like there’s going to be these sort of almost like friendship based ecosystems where you're going to probably do what other people in your environment are doing. And part of that is because they’re going to teach you how to do it and then part of it is just like this is what you perceive to be the market because this is like what’s become the market and this whole sort of like big complex thing. And really it ultimately is driven by these fads. One thing starts as a fad and then it just becomes the thing you have to do because it got adopted by so many people that became so popular. It’s like a chicken egg thing, I think.

 

[00:27:53] VJ: Yeah. And it’s really interesting if you think about it from the perspective of who’s actually in charge of making a lot of the decisions of what tooling to use, especially if you’re sort of entering the industry more recently, you’re probably learning X, Y, and Z language because that’s what people are hiring for or because the company you started at is using that for their newest app and you weren’t there to make the decision and that the person who made the decision to use whatever framework might’ve made it because of the fad or because it was easier to find developers doing that at that moment in time. So it’s so interesting cause it’s really ebbs and flows and you sometimes have no idea why people made the decisions they did at the time.

 

[00:28:53] BH: Empower your developers, connect with your customers, and grow your business with Fastly. It’s the most reliable and performant-edge cloud platform. Fastly CDN moves content, data, and applications closer to your users at the edge of the network. It helps your websites and apps perform faster, safer, and at a global scale. Test run your platform for free today. We use Fastly at Dev and we’ve been really happy with the results.

 

[00:29:16] JL: Over nine million apps have been created and ran on Heroku’s cloud service. It scales and grows with you from free apps to enterprise apps, supporting things at enterprise scale. It also manages over two million data stores and makes over 175 add-on services available. Not only that. It allows you to use the most popular open source languages to build web apps. And while you’re checking out their services, make sure to check out their podcast, Code[ish], which explores code, technologies, tools, tips, and the life of the developer. Find it at heroku.com/podcast.

 

[00:29:58] BH: Now we’re going to move to a segment where we look at responses from you, the audience, responses that have come into a question we asked relating to the topic of this episode.

 

[00:30:07] JL: The question we asked you all this week was, “What’s your opinion on the Ruby programming language?”

 

[00:30:13] BH: Our first response is from Andrew, and we have a voice memo.

 

[00:30:16] ANDREW: So when I first started out learning web development, I partook in the Odin School Program, which attempts to teach web development using only Ruby on Rails. I quickly realized that most of the web was written in JavaScript and changed to that path. But what I did realize is that a lot of the powerful tools that we use, like Dev and Reddit and Homebrew are all made using Ruby. So maybe I should have given it more of a fair shake.

 

[00:30:56] BH: I think that’s a really interesting response because I think it goes into sort of the thought process a lot of people get into, especially if they’re early on in their careers, like, “Did I make the right choice? I heard the internet is written in JavaScript.” Depending on your perspective, you might say the web is mostly written in PHP.

 

[00:31:16] JL: I was just going to say that.

 

[00:31:16] BH: You know, like on the server and stuff, but in another way everything is written in JavaScript. Some of these big companies, like if you use GitHub in our ecosystem, you very much know that like the Ruby platforms are having a big impact. But really I think that like really is the heart of the question and it’s probably a less important question than most people realize. I kind of wish I never questioned what I was doing at the time and just kind of accepted the problem at hand and wrote code. I think that’s kind of like what I’ve always sort of felt like if I ever was taking too serious a thought to like, “Am I doing the right thing?” It usually like ended in like, “I wish I didn’t go too far down that rabbit hole and just kind of wrote the code.”

 

[00:32:08] JL: And it’s too simple to suggest that you can always learn and pick up a new language. If you’re really feeling that regret, you could just go back to it.

 

[00:32:19] JH: I definitely agree with that. I make it my New Year’s resolution every year to learn a new programming language, except that my New Year’s resolution since 2017 has been to learn Rust and I’m still failing at it.

 

[00:32:35] JL: So speaking of the languages, Wilson wrote in, “I like Ruby because it is very easy to read, but in terms of speed, it leaves a lot to be desired compared to other technologies I use. That’s why I currently use Crystal, which is like Ruby, but compiled.” I’m surprised we actually haven’t mentioned Crystal yet. I heard really great things. Haven’t used it myself. Have either of you?

 

[00:32:55] VJ: No, I haven’t.

 

[00:32:57] JH: I’ve had a friend of mine whom I trust bugged me about it, but that’s as close as I’ve gotten to using it.

 

[00:33:03] BH: I think the funny thing about stuff like Crystal is that when you really need the performance, you don’t necessarily sometimes feel like you need the Ruby-isms, but it’s still like a pretty fabulous project. And I think the whole idea is that if you know Ruby, you probably like more or less know how to use Crystal. You just kind of have to get up and running with the environment. And I think for a lot of Rubyists it’s that like one language they have kept up with a little bit, but haven’t tried yet. We’ve seen it around for a while. I also have never actually written a line of Crystal, even though I’ve read enough to know that I feel like I kind of know the deal. And that’s the funny thing about these ecosystems. It’s like they really got to convince you why you need to do it. As far as new things go, Rust and Elixir and Go have probably done a better job of like really convincing you why you need to use it, even though I think I’d still rather use Crystal like from a personal perspective than maybe some of these other things.

 

[00:34:05] JH: It’s also about network effects. You have to have enough people using a project to make it seem sensible for you to use the project, which is a bit of a chicken-and-egg problem. And I think that obscurity is the problem of content creators everywhere. So maybe that is something that someone else knows how to solve, but I certainly don’t.

 

[00:34:24] BH: So Shannon writes in, “Ruby is great. I love it. Coming off having learned with JavaScript learning Ruby felt like cake.” It’s spelled with many As in the word cake here. “I found it easy to understand and build that understanding to Ruby on Rails relatively quickly.” I think this gets to the bottom of why people tend to stick with Ruby when they get involved. I’ve rarely heard of anyone who really tried Ruby in earnest and couldn’t get the hang of it pretty quickly.

 

[00:34:55] JL: I think one of the flaws of Ruby being easy to learn is in the fact that it’s so easy to learn, it was the first language that I learned and I kind of wish it wasn’t because I went from learning Ruby to learning JavaScript. And if it was the other way around, I think I would have understood Ruby’s magic a lot more and all the abstractions. I remember learning Ruby and actually being kind of frustrated because I didn’t understand what was going on under the hood. And while it was nice that things worked out, I was just like, “I don’t get it.” But then when I started learning like Node things click because you have to be so much more explicit with what you’re doing.

 

[00:35:30] JH: I’m finding the opposite myself. I've currently been thrust onto a team writing Node all day, every day. And being used to writing in languages with such great tooling and conventions, it is a deeply frustrating experience. So I think that Ruby kind of ruins you regardless of whether you learned it first or not.

 

[00:35:50] BH: Our listeners may be familiar with Vaidehi’s Base.cs work, the podcast, the articles, the videos, all about learning computer science concepts and I really feel like Vaidehi takes a discipline to some of the stuff that few of us have who are in Ruby, like actually taking an interest in learning what’s going on under the hood, what memory allocation even is or even lower than that, just like the fundamentals of what’s going on with computers. As a Rubyist, Vaidehi, what made you feel such an interest in kind of going deeper?

 

[00:36:28] VJ: It’s funny because Jess mentioned that because she learned Ruby first there was all this magic and abstraction that was frustrating because it was like, “What’s going on? A lot of it is hidden away from me.” I had a similar experience, but instead of frustration when I was sort of like working with Ruby in the beginning, my approach was, “Wait a second. How does this work?” And people would be like, “Oh, don’t worry. It’s all abstracted away in this black box.” And then I would be like, “Well, I’m going to go look in the black box.” And that’s how that all started. And that’s how I sort of discovered a lot of the things that are tucked away in the language and the framework that it’s associated with. And I think there are definitely many opportunities to learn a lot of these more complex topics within Ruby. They’re just sort of hidden in a closet and you just have to like be prepared to open the door and like look inside because if you actually look at like some of the Ruby source code and like if you dig into the way threading works in Ruby or garbage collection, it’s like really interesting computer science based concepts that you don’t actually have to think about. You don’t need to worry about who cleans up your variables except until you do or you have a memory leak or you’re like, “Wait a second, what happened to this variable? Who took care of it?” And you’re like, “Oh, this is a whole concept. Look, other languages do it differently.” And now you’ve suddenly looked under the hood of how it works. But yeah, you don’t have to look under it, which is kind of cool because you can start being productive. But to Jess’s point, I can see how it could be frustrating, but maybe I’m just like a very, I don’t know, I was really stubborn and I was like, “I’m going to figure out what’s going on.”

 

[00:38:17] JH: I also think that Ruby uniquely aids you in that and that for the most part, those conventions that make Rails easy to learn go all the way down. So when you’re writing a controller action, you’re like, “How did this web request even get here?” You can look in the next file down and it’s still understandable, and then you can look in the next file down and you can still understand what it’s doing. Whereas with a lot of languages that I’ve worked with, I might have a great API, for you as the user of the consumer of that API, but you’re like, “I wonder how this works,” and you got to look at the code and suddenly you’re looking at a 10,000-line file and you have no idea what’s happening.

 

[00:38:59] BH: Yeah. As a technical entrepreneur, I’d say I’m most motivated by finding out why our app has ground to a halt or why the requests are failing and stuff. I think that tends to help me learn in a hurry about memory management and things like that. And Ruby is trying to help you not worry about it until you have to worry about it. And then it’s like, “I wish they’d let me kind of deal with this myself a little bit better.” That’s just kind of the give and take of any programming environment.

 

[00:39:29] JL: So our next response is from Ben, not Ben Halpern, and Ben says, “It’s weird. Everyone seems to think it’s easy to read, but I find it’s a pain. I’m constantly scooting my eyes back and forth, trying to translate it into something that makes sense to me. A lot of the syntax seems to have been implemented just for the hell of it, rather than for any good reason and I’ve never learned to use it beyond the basics. What I’m saying is it might well be a great language, but it’s first impressions always put me off.” I feel like this is controversial because everything we all seem to agree on is that Ruby is very approachable and easy to learn and has great syntax.

 

[00:40:06] JH: But it is also very different to conventional syntaxes and the more conventional C style syntax that people might be used to seeing, if they’re used to JavaScript or Java or, well, pretty much anything except for maybe Python.

 

[00:40:20] BH: Yeah. This room is definitely full of a bit of survivorship bias in terms of our introductions to Ruby. None of us fell off and said, “I hate it. It doesn’t look like anything.” I’ve seen this take pretty consistently and I feel like you wound up on our show, James, because of a post that said, “Hey, please stop using Ruby.” And I think in general Ruby is not all that well loved or popular, especially in the crowd who don't appreciate the syntax so much. And then therefore, like, don’t really want to even take all the tradeoffs that Ruby gives you. So this might be sort of unpopular in our little circle, but pretty common. I think if you go to Hacker News, you’re not going to find a lot of Ruby love and nothing is sort of universal. Shall we do one more question?

 

[00:41:07] JL: Sure.

 

[00:41:08] BH: If you ask me, Ruby is the perfect mix of Curl, Python, and Smalltalk. This is from Nicola. Although I prefer C like languages, I enjoy writing Ruby code whenever I need to work on company projects written in Rails. It’s sad to see it’s not as popular as it once was. However, it’s mature and has a vast ecosystem ready to support almost anything you can imagine on the web. I really feel like this is sort of a pretty level headed, well thought out response. What do you people think?

 

[00:41:38] JH: Yeah, I agree.

 

[00:41:39] VJ: Yeah. I actually really love that there’s like a reference to all of the languages that ended up in forming Ruby, and I’m curious what other languages Ruby has informed since then. I don’t know what the answer is, but it’s so interesting to see these feedback loops in the programming ecosystem because you see so many languages learning from others, and yes, maybe like as they mature fads change, but it’s still here. And as someone else mentioned, like so much of the web is still built on it. So we’ll see how it impacts the web in 10 or 20 years down the road.

 

[00:42:21] JL: Yeah, I was going to add that with that vast ecosystem comes with, I think Ruby has just so many packages that’s supported and that you really can build anything imaginable or find somebody who might’ve already done it for you.

 

[00:42:36] BH: Well, James, I first came across your post, “Please stop using Ruby,” when I searched the phrase on Google “Ruby 3.0.” That’s all I need to search to land on your post.

 

[00:42:47] JH: Wow! That’s some Google tricks.

 

[00:42:49] BH: Yeah. For a while, every time I wanted to learn about Ruby 3 and see if there’s anything new, your posts always came up. I think it’s because anyone in the context is searching like Ruby 3 is probably thinking like, “Oh, what’s new and Ruby? Should I keep up with this? What’s happening?” And I think when they see your post, it’s very appealing like to click on. I think like you’re in the mindset of learning about Ruby 3 and then your post. So today, I did another search and I found that it was still on the first page of Google, but not the first response. So it’s probably...

 

[00:43:23] JH: Thank goodness for that.

 

[00:43:25] BH: But when you land on the post, I think it’s well-reasoned and it’s not like it became a flame war. It was sort of like, “Yeah, this is kind of the deal.” And sometimes you need to make a bold statement to kind of get people to pay attention to what is and otherwise a pretty nuanced discussion. But 25,000 plus folks have read the posts and a few thousand more read your follow-up post. I’m wondering if you have any final thoughts for the audience.

 

[00:43:53] JH: I did not know that it came up first when searching for Ruby 3 and that absolutely terrifies me. I still think Ruby is an absolutely beautiful language. If I was starting a company or a new project, Ruby’s not the language I would choose. But I’ll let you in on a secret. Nearly anything I write, I write on Ruby first and the way I mentioned earlier about how Ruby gets out of your way, it helps me figure out how I’m going to solve the problem first before I need to worry about whether I’m allocating memory or passing references or whether I need reference-counted smart pointers or to implement it at a recursive function or something like that. Maybe it’s just still the way I think after all these years.

 

[00:44:41] JL: Awesome. Any final words, Vaidehi?

 

[00:44:44] VJ: I’m glad that Ruby was around when I started programming and I’m sure even if I don’t keep using it for my whole career I will still lean on it to help think through things because when it’s your first programming language, I think it stays with you. Even if you have to just switch gears, there are some great patterns and lessons that you can take from it, some of which are not even all technical that you can use to inform whatever you end up doing throughout your software career.

 

[00:45:15] JL: Great.

 

[00:45:15] BH: Thanks for joining us.

 

[00:45:16] JL: Thank you both so much.

 

[00:45:18] VJ: Thank you for having us.

 

[00:45:18] JH: It’s been my pleasure.

 

[00:45:28] JL: I want to thank everyone who sent in responses. For all of you listening, please be on the lookout for our next question. We’d especially love it if you would dial into our Google Voice. The number is +1 (929) 500-1513 or you can email us a voice memo so we can hear your responses in your own beautiful voices. This show is produced and mixed by Levi Sharpe. Editorial oversight by Peter Frank and Saron Yitbarek. Our theme song is by Slow Biz. If you have any questions or comments, please email [email protected] and make sure to join our Dev Discuss Twitter chats on Tuesdays at 9:00 PM Eastern, or if you want to start your own discussion, write a post on Dev using the #discuss. Please rate and subscribe to this show on Apple Podcasts.