[00:00:05] SY: Welcome to the CodeNewbie Podcast where we talk to people on their coding journey in hopes of helping you on yours. I’m your host, Saron, and today we’re talking about how to code without typing with Serenade Co-founders Matt Wiethoff and Tommy MacWilliam.

[00:00:19] MW: So I tried a bunch of different ergonomic setups. I saw a bunch of doctors. I read a bunch of like self-help books that people were recommending. I looked at a bunch of dictation solutions out there. None of these things really worked for me and got me to a place where I could be productive again.

[00:00:37] SY: If you have a question for Tommy, don’t miss the Ask Me Anything Session he’s hosting on the CodeNewbie Community Forum. Just head to community.codenewbie.org, and you’ll find his thread on our homepage, and he’ll answer you directly in the comments. That’s community.codenewbie.org. In this episode, they talk about how Matt’s repetitive wrist injuries started to derail his coding career, how they needed to invent the accessibility tool, which one of them literally needed to help build the tool itself and what stuff they used to build it after this.

[MUSIC BREAK]

[AD]

[00:01:14] TwilioQuest is a desktop roleplaying game for Mac, Windows, and Linux to teach you real world developer skills. Take up the tools of software development, become an operator, save the cloud. Download and play TwilioQuest for free at twilio.com/quest.

[00:01:32] Ambassador Labs enables developers to ship software faster on Kubernetes. Sponsor of both the Ambassador API Gateway and Telepresence open source projects, Ambassador Labs is used by tens of thousands of developers worldwide. Learn more at getambassador.io.

[00:01:50] RudderStack is the Smart Customer Data Pipeline. Easily build pipelines connecting your whole customer data stack, then make them smarter by ingesting and activating enriched data from your warehouse, enabling identity stitching and advanced use cases like lead scoring and in-app personalization. Start building a smarter customer data pipeline today. Sign up free at rudderstack.com.

[00:02:14] New Relic helps engineering teams all over the world visualize, analyze, and troubleshoot their software. Discover why some of the most influential companies trust the New Relic One observability platform for better uptime and performance, greater scale, faster time to market, and more perfect at developer.newrelic.com.

[AD ENDS]

[00:02:41] SY: Thank you so much for being here.

[00:02:42] TM: Thanks for having us. We’re really excited to be here.

[00:02:44] SY: So before we get into Serenade, let’s have you both talk about your own coding journey. Tommy, let’s start with you.

[00:02:50] TM: I started coding the first time in high school. I was a big fan of the show called “BattleBots”, which was the show where robots used to go into this ring and then try to like fight each.

[00:03:06] TM: And I thought that was so cool and there were a couple of students at my high school who were starting a robotics team. And I thought this is going to be amazing. It’s going to be just like BattleBots. It turns out it was nothing like BattleBots. It was building them out of Legos and having them drive around a little course, but it was still really fun. So our high school didn’t have any programming classes and we pretty quickly realized that we needed somebody to actually program the robots so they could move around the track. So I just sort of took it upon myself to learn how to code that way.

[00:03:33] SY: Wow!

[00:03:34] TM: Yeah. It was a lot of fun. The robots were programmed using this language that was similar to C, kind of like a subset of C. It was pretty simple because the robots didn’t have a ton of complex logic. It was sort of like drive forward for five seconds, then turn right and then drive forward for seven seconds. So it was sort of a great way to learn how to program. It felt very tangible and really approachable.

[00:03:54] SY: And Matt?

[00:03:55] MW: I think I started programming in middle school. I wanted to make some websites on the computer. The computer teacher there gave me a JavaScript book and an HTML book. In high school, I also did the robotics team then I also spent some time, I don’t know how I got started on this project, but building this balancing robot. I didn’t really know what I was doing, but I had like a lot of help from just random people on the internet, like either people who have built similar things in the past or even just the people who made the parts. So I was introduced to a little bit of C programming then, then went to school for engineering and then realized, “Oh, it was really the software side of things I’m really excited about,” and switched to computer science then.

[00:04:34] SY: And what did you do right after school?

[00:04:35] MW: So I joined Quora, working on their machine learning team. The main project that we were working on was write algorithms that could recommend answers we thought you’d be interested in reading and questions we thought that you’d be able to answer.

[00:04:48] SY: Tell me what about you? What’d you end up doing after school?

[00:04:50] TM: I also went to Quora right after school. That’s actually where Matt and I met.

[00:04:53] SY: Oh, cool!

[00:04:54] TM: Yeah, we joined right around the same time. So I started off as an engineer on our mobile team. When I was in college, I taught a few classes there and an undergrad that were focused on mobile development. So iOS development, Android development, and mobile web development as well. So I really liked the mobile stuff. I thought it was really fun to be designing for a smaller screen and my desk was always full of all these different gadgets we could test the app across a bunch of different devices and screens. And so I really thought that was cool to see my app running on a bunch of different types of phones. So I joined the mobile team and then I built out some early versions of, of course, mobile apps from their iOS app to their iPad app and Android apps. And then from there, I switched into doing engineering management, so led a few different teams, including that mobile team. I worked on a team that we called our “Growth Team”. So this was a team that was focused on getting more people to read Quora for the first time, helping people write their first answer and discover good questions to answer. And then I also led a few different teams that were focused on developer tools. So basically we would build tools that other engineers at Quora will then use to build out their products. So you can think of that as building out some libraries that somebody could use to build out their web product or some infrastructure that a machine learning engineer could use to build and train their models.

[00:06:12] SY: And Tommy, I understand you helped create the first class on mobile development at Harvard with Professor David Malin who was actually on our show in the past a little while ago. Can you talk about that experience and how you went about trailblazing that course?

[00:06:25] TM: Yeah, absolutely. So when I was in college, I worked with David Malin a lot. He’s the professor of our intro class called CS50. So I was one of their head teaching fellows there helping to organize problem set grading and midterm grading and hiring other teaching assistants. So we worked on CS50 a lot together, and then I think it was my sophomore or junior year maybe where CS50 was great, but we wanted to do more and create more course content. So this was back when iOS development in particular and Android development were really starting to take off. And so we wanted to capitalize on that momentum and build out a course that was focused on software engineering with a focus on mobile. The only problem is, at the time, neither one of us knew all that much about mobile development. And so we said, “Okay, let’s spend a bunch of time learning iOS and Android development, get really good at it, learn what the best practices are, and then let’s create a course based on that so that other students can do the same thing.” So it was honestly a lot of fun. I think being able to dive really deep into the mobile space was great. And I think a lot of students were really excited about this course because one, I mean, David’s great. He’s a phenomenal teacher.

[00:07:29] SY: He’s amazing.

[00:07:30] TM: Yeah. He’s so, so great. And I think what people really wanted was a more engineering focus course. Many of the courses at the time, they’re very theoretical, they’re sort of focused on more of the math behind coding and less about how to use version control or best practices for designing code. And so really wanting to build a course that was focused on that using mobile as a sort of a lens into that world. So yeah, that was really a lot of fun. It was a great course. I think it still exists, which is great.

[00:07:57] SY: So let’s get into Serenade itself. Matt, let’s start with you. Can you tell us a little bit about what led to the creation of this tool?

[00:08:04] MW: Towards the end of my time at Quora, I was working on a different machine learning project and I started getting a bunch of wrist and neck pain. In the past, every few years, I’d sort of get this from typing too much and there’s never really a ton of urgency. I could always just get a prescription to get physical therapy and things would go away. But this time around, it just didn’t. Basically, it was this class of injuries called repetitive strain injuries and then you could think of things like carpal tunnel or tendonitis. So it was one of those and it just made it really hard to be productive. And it got to the point where 20 minutes of typing I would be in pain very quickly. The company at the time was great. They were saying, “Look if there’s any solution out there, we’re happy to pay for it.” So I tried a bunch of different ergonomic setups. I saw a bunch of doctors. I read a bunch of like self-help books that people were recommending. I looked at a bunch of dictation solutions out there. None of these things really worked for me and got me to a place where I could be productive again. One of the things I kept hearing was typing 40 hours a week is just an inherently unnatural thing to do. The real ideal way of getting rid of this pain was just to stop typing or just pick a different career. I was not alone. I had a friend, his company paid a typist full-time to type for him, programming.

[00:09:37] SY: Oh, wow!

[00:09:38] MW: Yeah. That worked about as well as you would think it would work, which is to say not at all.

[00:09:45] SY: I was going to say. It doesn’t sound like that would work very well.

[00:09:48] MW: It’s crazy some of the lengths that people have gone through just to start working. After working on this project for a while and hearing lots of stories, it’s really inspiring what people have done. So I decided that I wasn’t going to be productive and that I should leave and focus on this problem. This was my passion and my livelihood and my career and no disability should really get in the way of people following their dreams.

[00:10:22] SY: So how would you describe Serenade? We kind of kicked off this interview by saying that you’re going to code with no hands, which I don’t really know how that works or what that means. Can you talk a little bit more about the product itself and how does it work?

[00:10:38] TM: It’s certainly a new way of coding. There’s not really a ton like this out there. When you think about coding, it hasn’t really fundamentally changed for the past several decades. We’re still sitting at a chair and pushing buttons. That’s how most of the code is written at the end of the day. So the way Serenade works instead is rather than typing your code at a keyboard, you’ll describe the code you want to write with voice. So I could say something like, “Create a function called hello. Print hello world.” And Serenade will listen to me and understand, “Okay, I’m in a Python file. I just heard this description of code. Let me translate that into valid Python for you.” So that way you’re not dictating all of the codes. So if I’m writing Python, I don’t have to dictate def, left paren, right paren, colon, new line, indent.

[00:11:22] SY: Right.

[00:11:22] TM: I just sort of describe it, describe it at this higher level what I want the code to do and what I want the code to look like and our product is what translates that into actual syntactically valid code.

[00:11:33] SY: That is really fascinating. Tell me a little bit about the technology that goes behind that. What are some of the tools that we’re using to make that happen?

[00:11:41] TM: So there’s a few different moving parts there. So the first part of Serenade is the desktop application that you download. So this is using this technology called “Electron”, which basically makes it really easy for us to make the app work across Windows, Mac, Linux, basically any operating system that a developer might be using. And so the languages we use there, it’s mostly TypeScript. There’s a little bit of C code in there as well, but mostly TypeScript and React for that. So that app you’ll download and you’ll run it and that’s going to basically listen to your microphone and stream the audio to our speech engine. So this speech engine is very similar to something like the Google Speech API or the voice recognition part of Siri, but ours is designed specifically for code. When you’re coding, you’re saying a very different set of words than you might be saying to Siri or Alexa. You’re probably not saying, “Import or enum or utter to Siri.” And so the accuracy in those types of words won’t be particularly high. But with our speech engine that’s designed specifically for code, it’s basically designed to recognize those coding words and words you’re probably going to say when you’re explaining what you want your code to do. So that’s using some open source machine learning frameworks. It’s mostly written in Python and C++. And then the last part is this natural language processing layer. So once the speech engine says, “Here are the words I heard you say,” it passes us off to this natural language processing part that says, “Okay, here’s some set of words. Let me translate some description of code into some tactically valid Python or JavaScript or Java or whatever language you happen to be using.” And similar stacks there. Well, basically we’ll build the models using Python and then we’ll serve those models using C++ because C++ is really fast and we want the product to be really responsive and so we sort of lean towards performance there.

[00:13:30] SY: Wow! That is super impressive.

[MUSIC BREAK]

[AD]

[00:13:50] Want to learn more about Kubernetes, but don’t know where to start? The Kubernetes Initializer lets you build your own application right in Kubernetes’ playground in just a few clicks. Automatically configure Ingress, a continuous integration pipeline, authentication and more. Try it for free at getambassador.io/codenewbie.

[00:14:10] RudderStack Smart Customer Data Pipeline is warehouse first. It builds your customer data warehouse and your identity graph on your data warehouse with support for Snowflake, Google BigQuery, Amazon Redshift, and more. Their SDKs and plugins make events streaming easy, and their integrations with cloud applications like Salesforce and Zendesk help you go beyond event stream. With RudderStack, you can use all of your customer data to answer more difficult questions, and then send those insights to your whole customer data stack. Sign up for free at rudderstack.com.

[AD ENDS]

[00:14:49] SY: How did you all work together? What were your individual roles in building this?

[00:14:53] TM: What’s great is that Matt and I have really complementary skill sets. So my background is mostly in sort of developer tools, which ends up being sort of a full stack, maybe a little bit more towards the infrastructure type stuff. So I worked on things like the initial version of that desktop application, some of the sort of initial pieces of the infrastructure and surface set up. And then Matt’s background is all on machine learning. So he built the first version of the speech engine. He built the natural language processing layer. And so together, we could sort of combine those skill sets to build the entire product.

[00:15:24] MW: And I guess at the start you’re writing most of the app too, so that we could just get a version of Serenade up and running that I could use to just further work on Serenade.

[00:15:33] SY: Tell me about the emotional aspect of potentially developing an injury like carpal tunnel and things that make it difficult for you to type and use your computer. What is that like emotionally?

[00:15:46] MW: It’s pretty scary. And there’s this other issue, which is that sometimes these things can be induced by stress. So if you get an injury and then you become more stressed because what if I lose my job, it just sort of can become this sort of self-perpetuating thing. So it was definitely really hard and starting off, it was really unclear whether something that could even work. So I think eventually we got to some place where once we had this initial version, it was a little bit more clear that this is something that we can work and we just have to give it time. But there was a point in time where even when I talked to friends about this, they would kind of feel sorry for me that it seemed kind of odd that we’re doing this out of desperation.

[00:16:33] SY: Yeah. Yeah.

[00:16:33] TM: Yeah. The most coming thing we hear from people in our community and people who are using Serenade now is that they just hit this wall. Sometimes you could be at your job and things won’t be going well. And you can say, “Well, okay, maybe it’s time to switch companies, switch teams, switch roles.” But when you have some sort of entry, none of that’s actually going to help because whether you’re a front end engineer or a back end engineer, if you can’t type, you still hit the same level.

[00:16:54] SY: That’s that. Yeah.

[00:16:56] TM: Yeah. And so that’s something that’s really important to us is giving people an option. If this injury happens or even if they’re starting to develop it and they want to prevent it from getting worse or prevent it from happening at all, we really want people to have an option so that there’s not just this wall that they hit and say, “That’s it, I’m stuck.” They have something they can turn to and be just as productive, if not more productive than they were when they’re using a keyboard.

[00:17:18] SY: Do you have a sense of how prevalent this problem is specifically in front of the tech community? I know we talk about it a lot. I’ve definitely heard a lot about it and people either developing it or being scared that they’re going to. But do you have a sense of just how big of an issue this is? How big of a pain point this is for people?

[00:17:36] TM: I think it’s a lot bigger than a lot of people realize, and it’s only getting worse. So early on when Matt was talking to a bunch of physical therapists, and we were out in San Francisco, MANY of the physical therapists that we talked to said all they do, all day every day is help engineers with carpal tunnel injuries because they’ve hurt their wrist or neck or back. There’s a lot of different injuries you could get that makes typing at a keyboard or clicking on a mouse really, really painful. So it really is this problem that a lot of people might not realize how big it is, because if you get some sort of injury and there’s no solution out there, the last thing you want to do is talk about it if you know that there’s no solution.

[00:18:14] SY: That’s true.

[00:18:16] TM: A lot of people are sort of silently suffering and pushing through this pain, which oftentimes just makes the pain worse if you’re pushing through it anyway. So yeah, we think it’s really important that the people have this option. One other thing too is that this is only getting worse. As more people are spending more time on mobile devices, they’re significantly less ergonomic than a laptop keyboard. If you’re typing on a phone all day, that might injure your wrist even more quickly compared to typing on a perfectly ergonomic desk and chair with the split keyboard and a wrist brace and all of those things.

[00:18:48] SY: Yeah. I mean, I see the preventative stuff all the time. I see people will tweet or post on Instagram their home office setup and I see all those ergonomic keyboards and those chairs. Everything just looks so fancy, but yeah, I never thought of once you get it, what do you do then? There’s kind of not much to fix it at the other side.

[00:19:11] TM: And I think what’s cool about just removing the keyboard entirely is it actually gives you so much more flexibility in how you work. We’ve had people who write code with Serenade and they’ll just sit on their couch and project their code on their TV and just code entirely with voice from their couch because they don’t need to type anything. There was another person we talked to who had a projector and they would project their code on the ceiling and they would just be lying in bed, looking at their code in the ceiling and coding with voice.

[00:19:36] SY: That’s cool.

[00:19:37] TM: Yeah. It’s cool that you’re not really tied down to these super crazy ergonomic setups when the whole point of those setups is to just make it okay to type. You remove the typing from the equation and then suddenly work starts to look very different.

[00:19:50] SY: So one question I have for you, Matt, is because of your injury, you basically needed Serenade to build Serenade. How did that work?

[00:19:59] MW: We got that initial version working, I think for a long time, it was something that I could use because I knew how it worked. But if you give it to somebody else, it will be too complicated or there might be some bugs that they didn’t know about. And I would know even what was done and what wasn’t, so I could kind of work around those things. So yeah, there was a certain point where my productivity sort of grew because Serenade got better. I was able to get more stuff done and work on Serenade some more. We kind of went from there. So yeah, I’ve been coding by voice for a pretty long time now. I think at this point, it’s basically on par with the keyboard. There are some things that are faster. There are some things that are slower.

[00:20:40] SY: Oh, that’s great.

[00:20:41] MW: Yeah. And I think we’re on our track words. It’s going to be faster. One of our users has said he’s challenged one of his coworkers, “Okay. Here’s a React component. Okay. We’re going to race and see who can write this faster.” And he just blows them away every time.

[00:20:56] SY: Wow! That’s really cool. So that gets into my next question, which is about accuracy. How easy is it to use? How accurate is coding with Serenade? What is it like today and where do you hope it will be in the future?

[00:21:09] TM: Accuracy is really important for us because one of the things that makes voice or dictation a painful experience is when you say something, doesn’t get it right, so you repeat yourself. You’re sort of like repeating yourself 10 times to a computer and it’s never getting it right, then it’s frustrating. So yeah, accuracy is super, super important. We hear a lot that people can’t believe how accurate Serenade is. The reason that it’s so accurate is because it’s in this really constrained domain. When you’re talking to Siri, you could be talking about the weather or who’s hosting Saturday Night Live or some calendar event. And Siri has no idea what you’re talking about. And it’s this really wide range of things that it has to be able to understand. But with Serenade, it’s a much smaller domain. We know you’re coding. Now let’s say you’re in a Python file. We know what variables exist in that Python file. We know what open source Python typically looks like and sort of the structure of code and what words you’re likely to say. And so that helps us just be much, much more accurate than a lot of these more generalized speech engines. We’ve side-by-sided Serenade with something like the Google Speech API and we’re way, way, way more accurate, maybe even something like two X or something like that.

[00:22:18] SY: Wow!

[00:22:19] TM: Yeah. And it’s really important.

[00:22:21] SY: So when it comes to accessibility, I want to dig into that a little bit more. I don’t know if you necessarily think of it that way, but this is an accessibility tool, right? If you have any motor skill issues, whether it’s because of carpal tunnel or a different reason, if for whatever reason you can’t use your hands, your fingers as well, now you have another option. What are your hopes for this tool in terms of its role and its place in the accessibility space?

[00:22:48] TM: So we see Serenade as this really critical accessibility tool. There’s a lot of different reasons that it might be hard to write code and not being able to type on a keyboard is really just the first one. And so we see this as a starting point. And ultimately, our vision is just to enable anybody to write code and not have any sort of disability or injury prevent them from following their dream and building something great.

[00:23:10] SY: I’m wondering, has building this app given you a better understanding of accessibility in general in tech?

[00:23:17] TM: Yeah, I think so. I think many of the reasons that people are using Serenade today, we never even imagined it when we first built out this product, we have some people who are using Serenade. They’ll use it only on Tuesdays and Thursdays because they have some muscle issue in their wrists that if they type for a few days straight, it starts to flare up. But if they can type for a day and then take a break for a day and then type for the next day, that’ll make them okay. We’ve also had a few people using Serenade who are quadriplegic or can’t move, have full range of motion in their limbs. And it’s amazing to see what accessibility solutions exist today. People are using things like eye trackers or other dictation software. And so I really think Serenade’s role is helping people write code specifically or there’s a lot of accessibility solutions to write emails or word documents. There isn’t really something for code. And so we really just want to fill this really big gap that we’ve discovered in the accessibility space.

[00:24:11] SY: So can you code in any language with Serenade or what are the use cases right now?

[00:24:17] TM: So right now we support around 10 different languages or so.

[00:24:21] SY: That’s pretty good.

[00:24:22] TM: Yeah. The way that we’ve built Serenade is we’ve really focused on the platform. So rather than writing a bunch of voice commands just for Python and a bunch of voice commands just for JavaScript, we focused on sort of abstracting that away and building this more general platform. So it’s really easy for us to just plug in a new language if we’d need to. So if some developer comes to us and says, “Hey, I’m writing all of my code in Rust or Golang or Ruby,” you can say, “Okay, great. Let’s plug in support for Ruby and Rust to Serenade,” and then they can go off and use that.

[00:25:00] SY: Coming up next, Matt and Tommy talk about what they would say to those who might be differently abled and possibly reconsidering learning to code after this.

[MUSIC BREAK]

[AD]

[00:25:20] Explore the Mysteries of the Pythonic Temple, the OSS ElePHPant, and The Flame of Open Source all while learning the tools of software development with TwilioQuest. Become an operator, save the cloud. Download and play TwilioQuest for free at twilio.com/quest.

[00:25:39] New Relic knows that the planet needs our help. That’s why they’ve partnered up with our team at DEV to host Hack the Planet. From now through February 28th, you can take advantage of their free tools to build a climate change monitoring app with the power of software observability. It’s a great chance to win cash, community bragging rights, swag from New Relic and DEV, a tree planted in your name, and other prizes, too. Learn more about the Hack the Planet Contest on New Relic’s dedicated community hub, therelicans.com. The Relicans is your place to connect with other developers. Meet the team behind New Relic’s software monitoring platform and show off the app you built for Hack the Planet. That’s therelicans.com. Happy coding.

[AD ENDS]

[00:26:28] SY: So I’m wondering, what would you say to our listeners who are maybe thinking of getting into code, want to learn how to code, but they have a physical disability of some type that might make it a little bit harder? What would you say to them?

[00:26:40] TM: I would say, first, don’t give up. There are solutions out there. It’s totally possible for this to happen. There are lots of people who have sort of overcome similar injuries or other types of disabilities and are really, really great programmers. So it’s totally possible. I’d also say that the tools are only getting better. I think this is a really important space. I think more people are realizing how important accessibility is. So the solutions that we’re seeing for different voice products or other types of solutions, whether it’d be eye tracking or even VR and things like that, they’re only getting better. So I think it can be really intimidating to start because it feels like it’s going to be really hard or the software isn’t there yet, and definitely don’t give up. We think it’s totally possible. And companies like Serenade, we really want to help and there’s lots of other people in the community who want to help as well.

[00:27:28] SY: Are there competitors or are there other people who are trying to do a no hands required coding solution like this?

[00:27:36] TM: Yeah. There are a few different solutions that are similar to Serenade. In particular, there are a few different products that are fully programmable where you could register some words. And when I say a word like coconut, it could open up my terminal and build my project or something. So there’s a few different projects like that, that are really focused on letting anybody totally customize their workflows or write their own custom voice commands using their platform. So I think what makes Serenade a little different is that we’re more focused on, one, the coding use case specifically, and we’re also focused more on this natural language where we really want to make it easy for somebody just to describe the code they need and have that written. That tends to be just a faster experience if you’re writing code. But yeah, I think as more people are realizing how important this is, there’s different solutions popping up, which honestly we think is great. We want there to be options. We want there to be, if anybody needs software like this, that they’re really able to get their jobs back and be productive.

[00:28:36] SY: Now at the very end of our episode, we ask our guests to fill in the blanks of some very important questions. Matt and Tommy, are you ready to fill in the blanks?

[00:28:43] TM: We’re ready.

[00:28:44] SY: Number one, worst advice I’ve ever received is? And Matt, we can start with you.

[00:28:48] MW: So when I was coming out of college, I heard a lot of strong opinions about what kind of company I should join. Some people said that joining anything but a small startup would ruin my career and other people said I should only consider the larger name brands, companies. Looking back, I think there’s no blanket correct answer for everyone and I think you just have to think about what you’re looking for and what different companies offer.

[00:29:14] SY: Tommy, what about you?

[00:29:16] TM: I think the worst advice I’ve ever received is to give up too quickly. I think when you’re at a company, there’s always going to be ups and downs and persistence is really important and it can lead to a lot of personal growth. I remember a few years ago there was this reorganization of our engineering teams and the team that I happened to be leading. Some of those engineers were needed on other projects. So everyone was like, “Oh, this is so upsetting. You should just give up and quit.” But I didn’t. I really decided to stick it out and try that new team. And it was great. I think a lot of the preconceived notions I had were totally wrong. And I think by giving this a chance, I learned a lot, met a bunch of people I wouldn’t have otherwise met. So if I had just given up too quickly, I wouldn’t have been able to do that.

[00:29:52] SY: Number two, best advice I’ve ever received is?

[00:29:56] MW: The best advice that I’ve kind got is to use this thing called the 80-20 Rule.

[00:30:01] SY: Yeah. That’s a good one.

[00:30:02] MW: So yeah. That’s this principle that for most tasks you can achieve 80% of the outcome with 20% of the effort. There’s a subset of the work that captures most of that. And usually that 80% is good enough. So whether you’re writing some new code or optimizing old code or even just like learning a new subject, you can be potentially four to five times faster or more productive if you just sort of figure out what that 20% is.

[00:30:32] TM: The best advice I’ve ever heard is when you’re given a problem, just take a step back and think about principles. I think that I used to be the type of person that would tend to just try to jump right into a solution to a problem. But now rather than asking myself, “What does the ideal solution look like?” I had a manager advise me and say, “Ask yourself what properties would an ideal solution have.” And this sort of forces you to take a step back and really think about the problem itself where just jumping right to the first solution you think of you can often miss things in the problem. So I try to think about things that way and I think it really helps.

[00:31:05] SY: Number three, my first coding project was about? And Tommy, let’s start with you this time.

[00:31:09] TM: My first coding project was this text-based blackjack game. It was written in this really old language called QBasic. I don’t know if you remember that.

[00:31:18] SY: Oh, interesting.

[00:31:20] TM: I couldn’t figure out how to tell if the player one or the computer one, so it asks you, it shows you the hands after it said, “Did you win or did the computer win?” And just sort of trust that you weren’t lying.

[00:31:32] SY: That’s awesome.

[00:31:34] TM: So I hope some casinos adapt that strategy. We’ll see.

[00:31:37] SY: Yes. Oh, that’d be great. And Matt?

[00:31:41] MW: Yeah. Mine was also a game. I think when my sister and I were kids, we made this game where you’re a moose that was trying to eat apples. So she drew all the animations and pictures in like MS Paint and I did a little JavaScript and had this moose picture like follow your mouse and you could click on these apples to eat them.

[00:32:04] SY: That’s so wholesome. I love that.

[00:32:06] MW: Yeah.

[00:32:08] SY: I love that.

[00:32:08] MW: Yeah. it was a lot of fun. Every time I use JavaScript since then, I feel like the language is so changed, it’s changed like so much. And I think at the time I thought, “Oh, I learned JavaScript.” But anytime I touch it now, I just think, “Oh, so there’s so much to learn.”

[00:32:22] SY: Number four, one thing I wish I knew when I first started to code is?

[00:32:26] TM: I wish I knew that you don’t have to know everything. I think a really important skill when you’re jumping into a new project or new code base or learning a new library is that you don’t need to go in and read every single line of code and understand absolutely everything about some code base or some library to use it. You sort of learn how to treat certain parts as a black box and say, “Okay, here’s some function. I don’t really understand what this is doing under the hood, but I understand what the inputs and outputs are. So let me just treat that as a black box and sort of make changes around it.” I think it’s a really important skill that can just help you pick up libraries and code bases much, much more quickly.

[00:33:02] MW: Yeah. I wish I knew not to reinvent the wheel. So a lot of the projects that I worked on early in my career, I think I spent a lot of time writing code that I didn’t need to if I had picked the right framework or the right library to use instead. I didn’t really appreciate how many open source projects were out there and I just had to maybe search a little harder for them or figure out what I needed to do to adapt them to the problem that I was working on.

[00:33:31] SY: Well, thank you so much both you Matt and Tommy for joining us. I really appreciate it.

[00:33:35] TM: Yeah. Thanks for having us. This was awesome.

[00:33:44] SY: This show is produced and mixed by Levi Sharpe. You can reach out to us on Twitter at CodeNewbies or send me an email, hello@codenewbie.org. Join us for our weekly Twitter chats. We’ve got our Wednesday chats at 9 P.M. Eastern Time and our weekly coding check-in every Sunday at 2 P.M. Eastern Time. For more info on the podcast, check out www.codenewbie.org/podcast. Thanks for listening. See you next week.

Copyright © Dev Community Inc.