Developers can be pretty evangelistic about their preferred coding language, but no language is perfect. We chat with Addy Osmani, engineering manager at Google, and Ridhwana Khan, senior engineer at DEV, about what they dislike about their favorite language.
Ben Halpern is co-founder and webmaster of DEV/Forem.
Jess Lee is co-founder of DEV.
Ridhwana Khan is a senior software engineer at DEV
[00:00:01] JL: Hey, DevDiscuss listeners, we’ll mail you a small thank you gift if you send us a screenshot of your Apple Podcasts review by June 30th. All you have to do is fill out the form at tiny.cc/devdiscuss. 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:33] 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:45] 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:01:04] 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:26] AO: PHP is one of those beautiful languages where it’s easy to get started. And because it’s easy to get started, it’s also easy to make a ton of mistakes as you’re building something up.
[00:01:35] RK: PHP does get a lot of shit.
[00:01:50] 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:57] JL: And I’m Jess Lee, also a co-founder of Dev. Today, we’re talking about your least favorite things about your favorite language. We’re joined by Addy Osmani, Engineering Manager at Google, and Ridhwana Khan, Senior Software Engineer at Dev. Thank you both so much for being here today.
[00:02:12] AO: Thank you. Glad to be here.
[00:02:13] RK: Thank you for having us.
[00:02:14] BH: So Addy, before we start tearing apart our beloved programming languages, would you like to tell us a little bit about your coding background and what you do professionally?
[00:03:02] JL: Ridhwana, will you tell us a little bit about your coding background?
[00:03:05] RK: Yeah. So currently, as you mentioned, I’m a Senior Software Engineer at Dev, but I started in the industry around 10 years ago. I worked in corporate for a while. I worked with a couple of startups. And around 10 years later, I’m now working at Dev.
[00:03:21] JL: Awesome. Can you tell us about what you’re working on here?
[00:03:52] BH: And it’s really awesome to work with you. Addy, what is the language you’re going to choose for this discussion and what are your least favorite things about it?
[00:04:31] BH: Yeah. Can you talk about the issues with it not being opinionated? Do you see any sort of resolution to that or is that inherent to the language?
[00:15:02] JL: Going back to this idea of a standardized library, what are your thoughts on potentially shipping libraries within the browser?
[00:17:18] 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:17:44] 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:21:08] JL: Ben, what is your favorite language?
[00:24:06] BH: Yeah. I think when you do almost all your programming in one language and that was the first language you were taught, you started just code in that language and it’s kind of like a great place to be. If anything, I loved Ruby so much more when I was doing like only Ruby programming. So they’re not complaining, “Oh yeah, it doesn’t have this. It doesn’t have that.”
[00:24:25] JL: Yeah. You get used to it. And then like the learning curve, like if you have a side project you really want to dive into you and you want to make it work, then you’re going to gravitate towards the language you’re more comfortable with and then it can just be a little difficult to learn a new language sometimes. I have read about people who try and learn like at least two new languages every year, but that’s just not in my personality.
[00:25:09] BH: I think if I stuck with one language more, I’d be more familiar with the debugging tools in general. I think like that’s the problem with like any debugging tools I find like they’re the easiest thing to kind of forget across environments. I wound up sticking to console.log or put statements or whatever the equivalent is and whatever language. I just can’t find myself adopting complicated debugging tools, like if I’m moving from thing to thing.
[00:29:03] JL: Awesome.
[00:29:04] BH: So I don’t think I’m very good at it answering this in a really practical way, but somehow the language lets me write my whole program in one file no matter what in a way that doesn’t break everything. So that’s one thing. I don’t know how that works, but I would love the idea to just open a file and go, even if I have to use Command F or something, I don’t know, like something like that, one file. And then of course, it’s going to have to work without an IDE, but so long as we’re building these really cool editors, I think it would be awesome if the program could like automatically express itself in really bold and outrageous ways within my IDE so it would have big, screaming GIFs at me when things are going wrong. I want a programming language that treats me like a human in some way and like in its outrageousness and all is in one file and I’d probably want no dependencies somehow. So I’m just kind of railing on my completely impossible programming language, but I think be like a more tactile environment.
[00:30:15] RK: I really like the idea of having GIFs on my editor screaming at me. That sounds like the perfect thing ever.
[00:30:22] BH: Yeah. Just like this is wrong and the GIF would like express how wrong it is. Depending on how bad it is, it would be that much more like the personality would like ramp up to 11, like way quicker, if there was a huge problem. But if there was like a small problem, it would just be like a little thing. And maybe what I’m describing is just a different type of linter and we don’t need a whole new language, which is kind of how these things actually work. And I really don’t think the language is the right way to start something new anyway, but maybe I’m asking for a linter that like really tells me what’s going on in a way that’s like a little bit more nuance than just what you can do with that.
[00:31:25] 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:31:47] 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:32:29] BH: Now we’re going to move into a segment where we look at the responses that you, the audience, have sent us to a question we asked in relation to the topic of this episode.
[00:32:40] JL: The question we asked you this week was, “What is your least favorite thing about your favorite language?”
[00:32:45] BH: Lisa responded, “I absolutely love, love, love, love, love Ruby, but I’m so tired of all the fricking underscores or snake case.”
[00:32:54] JL: Snake emoji afterwards.
[00:32:57] BH: This is like a funny one because I feel like this is what people love about Ruby. And if you don’t like snake case, it’s kind of a funny thing, but I think it’s like just the perfect thing to not love about a programming language because we do have to stare at these things all the time. And if you find it kind of unpleasant, you sort of aren’t going to like it.
[00:33:14] JL: I know there are a bunch of cases, camel case being another one. What are the other ones again?
[00:33:19] BH: upper case?
[00:33:22] JL: And Alistair wrote in, “JS is my favorite, but I really dislike the class syntax that was introduced in ES6. The prototype chain is easy to understand and doesn’t need to be hidden beneath Class, Extends, and Super, which feels more like Java.”
[00:33:35] AO: You know, I think in particular over the last year or two, we’ve seen that there are strong preferences in some parts of the community, turning towards things like functional programming, React, Hooks, those types of ways of containerizing functionality. I personally, occasionally do still use classes, perhaps less so these days. I’m heavily using ES modules in my own constructs for the most part. I feel like classes are one of those things where it’s okay to still use a lot of the rest of the language without them, if you don’t strongly need them.
[00:35:03] JL: I love that their favorite language is PHP. I feel like PHP gets so much shit and I’m just happy that they have a supporter.
[00:35:11] AO: PHP is one of those beautiful languages where it’s easy to get started. And because it’s easy to get started, it’s also easy to make a ton of mistakes as you’re building something up.
[00:35:20] RK: PHP does get a lot of shit.
[00:35:23] BH: Yeah, just this past weekend, I was playing around with like a very simple static site generator I was sort of whipping together and I asked for a feedback, like the ideas, and someone recommended just doing it in PHP, which is just like not something I thought about because my association with PHP is just like the worst stuff ever when I ever did it, which is a long time ago, but that actually was sort of an aha moment that PHP is actually perfect for that sort of thing. It’s so ready for like basic web stuff. And even then like if you try to get more complicated or do anything special, you’re going to like start hating all the things. But in that moment, I was like, “Oh, wow. I love PHP again.” It’s so much more built for this job, which really was the only thing you were doing on the web 10 or 15 years ago was the stuff PHP was built to do.
[00:36:22] JL: So Jeremy wrote in, “I love Guion, but it lacks documentation. It lacks a community. It could have more libraries. It could be better written. Yup. That language is my main CI projects. It is a tool I use for music shows. I’m working on a SWIG fork right now to address the library problem and I’m continuously trying to get the code better. The other problem remains unsolved and are definitely the ones I could use a hand on. I’m updating a SWIG fork to make.” Is Guion a language that anyone here has heard of?
[00:36:54] AO: I don’t think that Guion is a language that Google has heard off because I’m having a very hard time finding it. It’s too far ahead in the future, this Guion thing.
[00:37:08] BH: One of those dark web languages. Arpit writes, “I’m one of the few people who actually love Java. It’s a solid language that gets the job done. In the recent past, Java has started to incorporate functional paradigms, which is great. Unfortunately, stack traces that used to be effective for debugging are absolutely crap now. Each stack trace is 200 lines of absolute mess with no useful information, whatsoever. I miss the good old STFO paradigm.”
[00:38:04] BH: I can definitely relate to the idea that if the stack trace isn’t giving you any favors, it’s like impossible to program. That’s kind of how I feel about anything. I kind of rely on some evidence about what I’m doing wrong, if I’m doing it wrong. And if I haven’t written in Java in quite some time, so I’m taking Arpit at their word for it. But if the stack traces are getting worse, the language is probably getting worse. So that’s definitely one of the number one things a language can do to be pleasant is to give good stack traces and good error messages.
[00:38:50] AO: I can empathize entirely on the lack of a standard library. I think that a lot of us are jumping for utilities or writing our own custom functions in the absence of it. So I very much empathize with that.
[00:39:04] BH: Sarah writes in to say, “Is it bad that I don’t have a favorite?”
[00:39:09] JL: No, not at all. It’s okay.
[00:39:11] BH: You’re probably in a pretty good place if you love all Earth’s programming languages equally.
[00:39:19] JL: Addy and Ridhwana, thank you both so much for joining us.
[00:39:23] RK: Thank you so much for having us.
[00:39:40] 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.