In this episode, we’re talking about game development with Jonathan Jennings, software engineer at RelayCars. We get into how he got into game design, the struggles of learning to code, and what it takes to be a successful game designer.
- DeVry University
- NBA 2K
- Resident Evil
- Open GL
- 3ds Max
- Temple Run
- Angry Birds
- Virtual reality (VR)
- Augmented reality (AR)
- Unreal Engine
- Game engine
- Particle system
- GameMaker Studio
- Godot Engine
- Facebook Instant Games
- X Reality (XR)
- Mixed reality
- Thunder Jack's Log Runner
Codeland Pre-roll announcement:
Tickets are now available for our fourth annual CodeLand Conference, taking place July 23rd and 24th in New York City. It's the welcoming conference that brings together code, culture and community which promises to level up your software career. You'll experience amazing talks and workshops led by an inspiring lineup of speakers. Early bird tickets are currently on sale starting at just 99 dollars. Get them at codelandconf.com. See you in New York!
[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 game development with Jonathan Jennings, Software Engineer at RelayCars.
[00:00:19] JJ: I just think it’s important for people to know that it’s not important that you get it perfect the first time, like iteration is all about building upon what you did right previously and getting towards the best final product you can.
[00:00:30] SY: Jonathan talks about how he got into game design, the struggles of learning to code, and what it takes to be a successful game designer after this.
[00:00:45] Career Karma helps code newbies with free career coaching to help them learn to code and find a high-paying job in tech in less than a year. Download the Career Karma app to start your 21-day challenge and be one of the over 60,000 people who they’ve helped get started. Visit careerkarma.com/codenewbie.
[00:01:06] 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. It also lets you use the most popular open source languages to build web apps.
[00:01:23] Learn how to code online with Educative’s text-based courses with in-browser embedded coding environments. With their newly launched Educative’s subscriptions, users can now get unlimited access to every course offered with a single fee. Get 10% off site-wide by going to educative.io/codenewbie.
[00:01:43] DigitalOcean offers the simplest, most developer friendly cloud platform. It’s optimized to make managing and scaling apps easy with an intuitive API, multiple storage options, integrated firewalls, load balancers, and more. Get started on DigitalOcean for free with the free $100 credit at DO.co/codenewbie.
[00:02:12] SY: Thank you so much for being here.
[00:02:13] JJ: Thank you so much. I appreciate it.
[00:02:14] SY: So how did you start your coding journey?
[00:02:17] JJ: So I grew up a typical gamer kid. I would watch my brother play video games for hours on end. I always tried to emulate everything he tried to do. He is my inspiration. I would watch him play video games for hours, beg him to play. Probably in most days he’d say no, but every once in a while he’d hand over the controller. As I got older, I started to develop an appreciation for playing video games and stuff myself. As I went through my teens, I started to read so many gaming magazines. At one point, we had like six different magazines coming to the house. I’d read forums. I was just really video game consumed. By my junior of high school, I wasn’t completely sure what I wanted to kind of study going forward. So I saw ads for different college programs for game development. I picked one. I went to DeVry University. They’re offering like a program for accelerated students to like take a free college course.
[00:03:14] SY: Is this while you’re in high school?
[00:03:15] JJ: Yeah. This is the end of high school. And it was like a C++ 101 course. Before that, I had never written or seen code in my life. I didn’t have any clue about it at all.
[00:03:27] SY: I think a lot of people can appreciate your experience and come from your experience of being really into video games, being a huge gamer, reading all the gaming magazines. But few people take that to go, “Okay, now I want to actually make them.” What got you from consuming games to saying, “Okay, now I want to actually make these games”?
[00:03:45] JJ: So I would think about games a lot. And as I’ve gotten older, I’ve kind of come to the conclusion that a good video game makes you feel something and whether that’s just relaxation, like I’m just vegging out or maybe it makes you excited, like when I shoot a three over LeBron James in NBA2K or maybe if I’m throwing a grenade into a crowd of enemies or whatever, a good game grips people. And so in high school I really started to dissect the games I was playing and really think about why different parts of the games made me feel certain ways, like why does certain music get me hype or how come beating this bus felt so satisfying or how come when I see this image show up, I feel relaxed, like I’m in a safe room in Resident Evil or something and I do consider my video game love kind of an obsession, but it’s really just kind of dissecting all the pieces and how they make a complete experience. And I think that when I started to formulate an idea of what a complete game experience it was and how that satisfied me kind of propelled me to want to explore how to make that.
[00:04:55] SY: So tell me a little bit more about this game development program that you went to. You talked about learning, was it C+?
[00:05:01] JJ: Yes, C++. Yeah.
[00:05:02] SY: You’ve learned C++. What else did you learn? What was it made of?
[00:05:06] JJ: The first year is super easy. It was freshman year, and like I said, I grew up obsessed with video games. So there were some really basic courses, like intro to video games that would teach you different genres and stuff. I could do my homework in my sleep because I slept and breathed video games, right? So that stuff was unnecessary. The second year is really where we start to kind of explore and see different aspects of development, basic like physics, programming models to like create like open GL and direct X simulations basically. I mean create like small functionality for rendering objects and stuff. We would work with like small 3D modeling tools such as 3ds Max to create visual assets and things. We had a course where we had to create audio for like sound effects for games. We explored like flash game development, a lot of small projects that were kind of focused on different concepts of building a game, and then all of it amounted to our senior project where the goal was giving us three months to make a game of our own. We had to come up with our own promotional materials for it. It was exciting. We got a chance to make a game and growing up that’s all I wanted. So I was all for it.
[00:06:16] SY: So what was the learning experience like for you, especially given the fact that you are so consumed by games and you love it so much? What was it like? Was it exciting the whole time? Were you ever frustrated, demotivated? What did that look like?
[00:06:29] JJ: So really like wrapping my head around code was really hard. It was really an area of thought I’d never explored and I had never been really great at math. I grew up in love with like History and English and a lot of stuff like that. So yeah, transitioning from that stuff to being in college and creating like logic systems, it was tough. It was tough. I think my passion for video game development helped me. It pushed me through a lot of those hurdles. I like to say that my brain had to break in order for me to understand how to code, and then when it reformulated, then that’s when I actually understood what I was doing. But first it was very much a wall to kind of grasp what code was.
[00:07:11] SY: So was there a moment that you remember where everything clicked, where you felt like you were really getting a grasp on coding and you knew what you were doing?
[00:07:20] JJ: So about six months after I graduated from college, between my junior year of college and me getting my first job, I sent out 300 resumes to various game studios just trying to get interviewed.
[00:07:31] SY: Wow! Good for you.
[00:07:34] JJ: Yeah.
[00:07:35] SY: That’s hustle. Yeah.
[00:07:38] JJ: Yeah. So I sent out all those resumes and I got hired at a small studio in Venice Beach. It was called Sabertooth Interactive. We worked on the animal planet game and a few other things. And I think it was about three weeks into my job, I was like the junior UI engineer, I was still learning to code though, so when there wasn’t anything major I could do or anything too minor I could do, they would just tell me to look at the other guy’s code. And so I did really basic UI stuff for the most part. And one of the things I was curious about was like in-app purchases, and this was like back in 2012 when like mobile games are still being figured out, like Temple Run and Angry Birds were like starting to like get people interested in making mobile games. But there weren't a ton of people in the mobile game market yet. So I looked at the code for like in-app purchase manager and I saw a for-loop, and it was so funny to me, a for-loop that was checking for strings and stuff and it was checking the item costs. And I would use for-loops for like rendering, like totals on menu items in like text fields and stuff, right? And I saw the code for the in-app purchase manager and I thought about the simple code I made and it kind of clicked that essentially the code, the variables, the functions, all of that, when you combine it together, that’s what creates the structure of a logical system, and you could configure and combine and structure those tools in so many ways to come up with almost a pretty much an infinite amount of systems, right? That clicked. I just had to kind of see what a different application of code was to like relate it to the stuff I was already doing and get like, “Oh, okay. All this amounts to like a full-on system.”
[00:09:25] SY: So what did you make with all these skills, all this passion? What were some of the first games that you coded?
[00:09:30] JJ: The first game I was really proud of that I made by myself, it was called The Amazing Sketchbook, and I had a friend in high school who never took notes in History class ever. And he would come up to me after class and he’d show me this notebook and it would be filled with doodles of all sorts of random jokes. And so I thought about this concept, “What if there was like this game where you played like a stick man in my friend’s insane doodle drawings,” right? So I made this small game called The Amazing Sketchbook. It’s partially a platform or kind of like Mario, you jump around, you’d have the time running through obstacles and stuff. You’d have to fight like a boss. You’d like get a bow and arrow. You could shoot at them. It was really simple, but it was the first game I made myself. I went to my mom’s photocopier and copied a sheet of paper into the computer. So that could be my background. I had to like manually animate the sprites and stuff of like a stick figure running, and it taught me a lot about making games.
[00:10:32] SY: So you went to university to learn game development. You started a little bit in high school, then you went to school, you went to college in order to get these skills, and so I’m wondering how important was it that you went to a university? Do you feel like that was the best route to get to where you are today?
[00:10:50] JJ: So I’m a big fan of knowing what kind of learner you are, right? I think some people, they need to be like handheld and they kind of have to be taken through an entire process maybe a couple of times to really grasp something. I’m more of an active learner. I like to be shown things and then I want to get my hands on it. I want to break it. I want to play with it. I want to see how I can use it for something. And then I know people who like they can read something, grasp a concept, and then really without even trying it seems like have it down pat and able to implement it in a second. So I think for me, college was really helpful because they introduced me to concepts and then they let me play with them and explore them, but I know that college isn’t the only way to make games. I’ve worked with plenty of software engineers who either dropped out from college or they never went and they are fantastic engineers who’ve worked on leading-edge technologies and stuff. I think it’s important to know what kind of learner you are. And based on that, I would say either, I mean, there’s plenty of resources on YouTube if you want to be a self-taught programmer for like video games and stuff.
[00:12:02] SY: So many resources.
[00:12:03] JJ: Right. There’s tutorials. There’s just so many things out there. So yeah, college isn’t the only way to learn how to make games at all. I just think it’s important to know yourself.
[00:12:30] SY: 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. Also, you’re not walk-in to the service. So why not start building your apps today with Heroku?
[00:12:55] Career Karma is a free service started by bootcamp grads for bootcamp grads. Coaches, our current coding bootcamp students, who mentor people to help prepare and get accepted to bootcamps in just three weeks. We spoke to Kesha Lake who used Career Karma and is now an engineer at Stitch Fix.
[00:13:14] KL: I was really looking for a way to jumpstart my career, but not just getting me ready for the career itself, but to get me ready for bootcamp. I figured if I can do the 21-day challenge, then I can do the bootcamp.
[00:13:26] SY: So what was the challenge? What was it like?
[00:13:28] KL: The instructions were to speak to one person on your level and one person above your level every day and then post some sort of proof about it as a screenshot or a picture.
[00:13:39] SY: Did you know anything about coding before this?
[00:13:41] KL: I knew absolutely nothing about coding. So the 21-day challenge really set me up perfectly. I made friends, I started networking with people who would eventually make recommendations for me to get the job that I landed, but they also offered a lot of resources and support. You know, initially I was coding on my phone because I didn’t have a working laptop. Career Karma put me together with another one of their members who donated the first laptop and then I do get to upgrade to a Macbook so I’ve got another laptop from the Career Karma community.
[00:14:09] SY: So what kind of work do you do at Stitch Fix?
[00:14:11] KL: So I work on automation projects that help plan of ease the burden of our warehouse workers. So I kind of do a lot of telling machines what to do, which is exciting. It’s mostly back end work.
[00:14:20] SY: That’s fancy.
[00:14:21] KL: Yeah, it is. It’s kind of sexy and I’m really excited about it. I really leaned more towards back end development as opposed to front end doing bootcamp. So to find a job that would let me focus on that is kind of a dream come true.
[00:14:34] SY: Visit careerkarma.com/codenewbie to get started. So tell me a little bit more about what it takes to be a successful game developer now that you are working. You did the school thing. Now you’re working. What does somebody need to learn to be where you are today?
[00:14:55] JJ: First of all, iteration is important. You don’t get anything perfect the first time, like you set the foundations and then you iterate on the foundations and that becomes a polished, finished product. Also, I think it’s important to know especially game development, if you’re working on a smaller team, you wear a lot of hats. So I started out as a UI engineer. I ended up working on prototype stuff. I’ve written artificial intelligences. I’ve done some like back-end multiplayer programming stuff. I’ve done some game design. I’ve had to go collect sounds for games. If you make a game, you’re going to have to wear a lot of hats. And so I think you have to be okay with stepping out of your comfort zone because you’re almost guaranteed to do or try something that you’ve never done before. And I think passion is important. I think making games is a dream job for a lot of people, but I would never wish it on somebody who doesn’t like games, like I think it would be an awful job because it’s a lot of tedious micromanagement and sometimes I’ll go through like 10 revisions on something, like, “Hey, this text needs to show up at this spot or it has the tween in at this rate.” It’s small things like that. If you don’t love the act of making like a complete experience, then it’s too much.
[00:16:14] SY: So what are the most popular coding languages in game development? If I were to learn languages to do what you do now, what would I learn?
[00:17:01] SY: So if I were going to learn game development and I don’t have the option of going to school or going to a bootcamp, if I was just going to go at it by myself, what would you recommend? Where would I start? What’s your advice on that?
[00:17:12] JJ: So I kind of hit on game engines, but game engines are essentially the development environments that games are created in. So they bring together a lot of different facets of game development from like being able to manage different kinds of audio files to having the ability to create dynamic particle systems. They have the ability to control and create like physics-based systems, all sorts of things. And so if you’re going to build any kind of game, that’s where you really start to understand development. Some great game engines I’d recommend are GameMaker Studio, Unity, Unreal, there’s Godot Engine. I know Facebook has like a small game engine to make browser based games and stuff. And then once you pick the game engine, I would look up a tutorial. I think Pong or Breakout are the best two games that anybody who wants to learn how to program a video game can start with because Pong teachers pretty much all the fundamentals that any game uses from managing collisions, moving the paddles, like moving an object at a certain velocity, displaying and rendering UI, calculating like a score system, playing sound effects if the players’ scores or wins. You could create like an AI paddle that the player competes against. And I think the cool thing about Pong is that it can be as complex or as simple as you want. I had the opportunity to train two interns about a year and a half ago. That was my first assignment to him was to create like a breakout game or a version of Pong, and one of them made like power-up systems that could speed up the paddles, like how fast the player moves. I think Pong and Breakout are really the best two games to start with if you were going to create anything and then of course YouTube is perfect for learning anything.
[00:19:00] SY: So talk about some of the things you’ve worked on in some of your past game development jobs.
[00:19:05] JJ: So I’ve worked on like a Mario-kart type game. So I handled everything that included like loading into the race, creating like the core main menu systems, creating like an intro animation, simulating AI, finishing the races so that they could get times to like assigned to them for finishing the races. I’m actually working on a VR game right now. It’s like a sci-fi shootout games essentially. And so you could shoot like a laser blaster at an enemy. You have this laser sword like a lightsaber to slice enemies and I just did like my first test against the AI that I wrote like last week. It was super satisfying to fight something that I made in VR, kind of mind-blowing.
[00:19:48] SY: Yeah.
[00:19:49] JJ: I’ve done a little bit of everything.
[00:19:50] SY: That all sounds very hard. So you currently work at RelayCars. Can you tell us a little bit about this company?
[00:19:59] JJ: Yeah. So on RelayCars, we work on automotive VR and AR experiences, XR in general. The idea is giving people new ways to experience their automobiles, kind of removing the need to go to the car dealership.
[00:20:14] SY: Okay. So to sell cars is the idea?
[00:20:17] JJ: To sell cards and also to like kind of I guess get a closer look at cars.
[00:20:21] SY: Okay.
[00:20:21] JJ: The idea is that you’d never have to go to a car dealership if you had like an AR or a VR headset and you could see the car you want in your living room, right? If you could add all the packages you wanted to, if you could see the interior you wanted to, if you can add the grill or the rims you wanted to, giving you the ability to kind of get up close and personal with the car without being on a dealership or being in a space like that.
[00:20:45] SY: Yeah, that’s useful.
[00:20:46] JJ: Yeah.
[00:20:47] SY: And you mentioned the word “XR”. What does that mean?
[00:20:50] JJ: Right. So augmented reality is the idea that you can project an image onto a real world space. Pokémon GO is probably the best example. Seeing Pikachu on your front lawn, even though he’s not there, right? Then you have VR, which ideas you put on the headset and you’re essentially teleported to another world or another space because the headsets are encompassing experience. Then you have, we call it mixed reality, which things like the Magic Leap, they actually map out your environment, so things like my living room, and then you could have objects that interact with that space. So at RelayCars, we had a car demo where you could basically drive a car around my living room. You could basically put skid marks all over my carpet and whatnot, kick up dust trails, and then I could bounce like a virtual car on the edge of my physical couch. It’s pretty wild. And so all of that fits under the umbrella of XR, which is basically…
[00:21:50] SY: All the realities?
[00:21:51] JJ: Yeah. Yeah, like immersive experiences in general.
[00:21:54] SY: Yeah. So what you’re doing isn’t technically gaming because I’m assuming that you’re not building a video game, right? It’s not what it is. But you’re using your gaming skills. Is that how that works?
[00:22:05] JJ: So RelayCars is an enterprise corporation. So the content we make is both consumer focus, but also has a strong business focus because car dealerships are trying to figure out new ways to brand and show off their cars as well. But the virtual reality and all the different realities, their core technology is based off the game technologies we’ve had for decades at this point and that’s because a lot of real-time rendering and a lot of things that happen in video games are exactly the kind of stuff you need to create a virtual reality or an augmented reality experience. So I’m able to apply my video game knowledge to creating virtual reality and augmented reality experiences.
[00:22:46] SY: It sounds like you get to work on a big variety of things. You get to just try a bunch of different technologies and realities and all that. It sounds like a lot of fun.
[00:22:54] JJ: Yeah. It's wild. It’s like the next step from working on video games.
[00:23:05] SY: Coming up next, Jonathan talks about what his number one resource is for game development after this.
[00:23:22] 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 a free $100 credit at DO.co/codenewbie. That’s DO.co/codenewbie.
[00:23:57] If there’s one thing that comes up over and over again in our podcast, it’s that everyone has a different way of learning. We had our producer, Levi Sharpe, try out Educative to level up his Python skills. And he really took to the service’s text-based courses with in-browser embedded coding environments. And Levi, what did you take?
[00:24:17] LS: I took learn Python from scratch, so I’ve been learning Python a little bit. So I was a little bit familiar, but I found that these courses, they’re laid out in a really intuitive way. There’s like these sections that lead seamlessly one into the other. The Python 1 goes from data types and variables to conditional statements, functions, loops, and then each section has a quiz to make sure that you’re not just blasting through and like the information is going in one ear and not the other.
[00:24:49] SY: I love the quizzes.
[00:24:50] LS: Yeah. It really called me out on my BS because I was like, “Yeah, yeah, I get it. I get it, I get it.” And then I took the quiz and they were like, “You don’t get it.” And I was like, “Ah!”
[00:25:00] SY: You got me.
[00:25:01] LS: You got me. And then throughout all of these different sort of sections, you can code within the service itself. So you don’t need like an external coding thing. I should know what that’s called. Do you know what that’s called?
[00:25:17] SY: I’m not going to tell you. I’m not going to give you an IDE.
[00:25:19] LS: Yes, that’s what it says, an IDE. Did you know I’m a producer for a coding podcast?
[00:25:25] SY: A technical podcast.
[00:25:27] LS: Yeah.
[00:25:27] SY: Two actually, two technical podcasts.
[00:25:29] LS: That’s true.
[00:25:30] SY: Get 10% off site wide by going to educative.io/codenewbie. So we’ve already talked about some of your resources, your recommendations for people who want to do game development. Do you have a number one resource, your favorite one?
[00:25:49] JJ: In college, the biggest resource they showed us was a site called Gamasutra. It’s essentially kind of like a complete digest of everything that’s happening in the game industry. So things like what games sold the most this month to game developers will host their own blogs about games they made. Postmortems are really popular on that site where some of the biggest games, God of War or whatnot. They’ll go on there. They’ll talk about the creation process. They’ll talk about the hurdles they ran into and things they want to do better for next time. So you have to game developer conferences in town. It’s just a great resource for anybody who’s interested in game development. So yeah, Gamasutra.com, I’d highly recommend it.
[00:26:35] SY: Now at the end of every episode, we asked our guests to fill in the blanks of some very important questions. Jonathan, are you ready to fill in the blanks?
[00:26:42] JJ: I’m ready.
[00:26:43] SY: Number one worst advice I’ve ever received is?
[00:26:47] JJ: So the worst advice I have ever received is kind of anything in the vein of just waiting for your opportunity to shine or be rewarded or anything that encourages somebody to be passive and wait for an opportunity. I hate it.
[00:27:03] SY: I’m with you.
[00:27:03] J: I’m not a fan.
[00:27:05] SY: I’m with you on that one.
[00:27:06] JJ: One of my favorite moments in my career is we work on a game called Thunder Jack’s Log Runner. My boss, he had this idea he wanted, we were going to be able to make our own game at this studio, and he had this idea, he wanted to make a game where you’re this lumberjack and you’re balancing on a barrel, and this barrel rolls down the river, and he pitched it to our team. Our lead programmer was out of the country with his wife on like a vacation. Our senior developer was on another project. And so there was one developer above me because he was older than me and the lead developer trusted him more. So my boss assigned him the project and it kind of broke my heart because when my boss described this project, I saw so vividly in my head and I knew how I’d want to make it. So I told myself, “I’m going to give him two days,” because I know this guy, and he, without kind of a framework or a structure, he kind of gets lost in development. And so I said, “I’m going to give him two days, and if he doesn’t do anything by two days, I’m going to make my move.” Right? So day one passes, nothing happens. Day two happens, he doesn’t make really any progress in those two days. And so I go home, I take a nap, I get up at like 11:00 PM at night and I started making this a diagram. And in this diagram, I kind of wanted to showcase what my boss described as a game and that I wanted to demonstrate how I’d get the different mechanics and features working for the game. I sent the email to everybody. I went to bed, came to the office. The other programmer seemed a little annoyed that I kind of worked my way in there, but that’s fair.
[00:28:39] SY: Yeah. Makes sense. Yeah. Understandable.
[00:28:40] JJ: And then my boss, he pulled me to the side. He told me to like walk him and the rest of the team through the diagram. I walked him through and he asked me, “How much time do you think it would take to actually make a prototype for this?” And I would have loved like a week, but I knew he wasn’t going to give me a week. So I said, “Four days.” And he said, “Okay, I can give you four days.” And I took four days. I was able to hammer it out. He gave me an extra day to kind of polish it because we are going to show it off to the executives and stuff and kind of get them to buy in, and we did it. We have like the other programmer. He was on art duty. So he got me the art assets while I created all the core functionality of experience.
[00:29:18] SY: Poor guy. I kind of feel a little bad for him. You know what though? He had his chance.
[00:29:25] JJ: Right.
[00:29:26] SY: He had his chance. That’s on him.
[00:29:29] JJ: I think he liked not having the pressure on him to produce like stuff in an empty sandbox.
[00:29:36] SY: He didn’t see you coming. That’s what happened. He didn’t know.
[00:29:40] JJ: That’s true. But we showed it to executives. They dug it. They dug the concept. And then we started production on it. And I think it was about a little over a year and a half later we finished the game and they let me push the publish button, it was going to go live on Google Play and the Apple Store.
[00:29:58] SY: Wow!
[00:30:00] JJ: It felt so good because that was the first game I ever worked on from just a concept, right? Just an idea in somebody’s head and I got a chance to see it through all the way to the end. So I was proud of myself. I was proud of my team.
[00:30:11] SY: I’m proud of you.
[00:30:13] JJ: I appreciate it. I guess my point is like, I think opportunities only show up only so many times, right? And I think when you get a chance to do something, I think you got to run with it and that was my moment.
[00:30:27] SY: I love that story. Okay. So number two, best advice I’ve ever received is?
[00:30:33] JJ: So can I give you two?
[00:30:34] SY: Yes, you can.
[00:30:36] JJ: So my professor in college, my favorite professor, Professor Maines, he would constantly harp, he’ll constantly repeat this message and it was one of those messages you hear a thousand times, you’re like, “Yeah, yeah, you already said that, right?” But he would constantly say, “If you only do the stuff we do in class, you’ll never get a job in the game industry,” right?
[00:30:54] SY: Oh, interesting.
[00:30:55] JJ: And he said that, and he said that, and he said that, and eventually it clicked for me, but I think my classmates, by then it was white noise. So that’s when I started making stuff in my own free time. And it’s those things I made in my free time and kind of added to my portfolio and everything that got me interviews and got me attention and got me interested. So yeah, I think any kind of developer, it’s important to do some kind of self-learning and kind of exploratory stuff so you get a more intimate knowledge of the tools and the things you’re developing. That was probably one of the most important things I ever learned. And then I guess my second one, I know when I was younger I had paralysis by analysis, right? I always wanted to start my code perfectly at the beginning every time and I would just sit there and I’d sit there and stew for an hour, just like waiting to write like the first variable. One night our team went out for dinner and my lead at the time, he said, “You can fail at something and not be a failure.”
[00:31:58] SY: Oh, I love that.
[00:31:59] JJ: And I needed to hear that because like I was so worried about just screwing up and that would be it, right? Like I would never have a chance. I’d ruin everything. Everything would fall apart. It really resonated with me and I think after that, like I really stepped into like developing and doing my best and sometimes your best comes back a little bit broken, a little bit flawed, but you can always make it better.
[00:32:21] SY: All right. Number three. My first coding project was about?
[00:32:25] JJ: I call it the 30-Day RPG. And so basically it was kind of like those old-choose-your-own-adventure books. The idea was you’d have 30 days in the game to get as much money as possible to feed as many monsters as possible. It was purely text-based. It was in like one of those debug windows, but it was a way for me to learn how to pass variables, how to handle functions and stuff. I called it a combat system, but really it was just a bunch of addition and subtraction to make sure either the player or the enemy’s life was above zero. I learned a lot from it. I was proud of that one too because it was like the first game I made by myself, non-visual.
[00:33:07] SY: Number four, one thing I wish I knew when I first started to code is?
[00:33:13] JJ: You see like a really good game and people think that it just happens, right? That somebody thought of something brilliant and it just worked the first time and it was flawless and it was amazing and I’ve worked on enough games to tell you I’ve seen games in every state of broken it could possibly be. I’ve seen it broken a week before and then saw a few changes made in a week and it’s beautiful and it works amazing the next week. I just think it’s important for people to know that it’s not important that you get it perfect the first time, like iteration is all about building upon what you did right previously and getting towards the best final product you can, just kind of really stressing like iteration is key and to being the best developer or software engineer you could possibly be.
[00:33:58] SY: Well. Thank you so much, Jonathan, for your time.
[00:34:01] JJ: Thank you so much.
[00:34:09] SY: This episode was edited and mixed by Levi Sharpe. You can reach out to us on Twitter at CodeNewbies or send me an email, email@example.com. 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.
Thank you to these sponsors for supporting the show!