[00:00:24] KR: The analogies need hard work. It’s not just the person that comes to mind. You need to really flesh it out and make sure it’s representing the thing that helps you as a developer.
[00:01:00] SY: Thank you so much for being here.
[00:01:02] KR: Thanks, Saron. Yeah, it’s great to be on the show.
[00:01:04] SY: So tell us how you first got into coding.
[00:01:07] KR: Well, yeah, I didn’t actually have a background in computer science. I came from videography and film.
[00:01:14] SY: Oh!
[00:01:15] KR: And the first job I took sort of had some responsibilities in videography, but it also required me to look up to the website. And yeah, that was a whole, like new field for me. I had only done like very basic stuff on the website. And now they wanted me to take charge of the content on the website, which was in the beginning quite a challenge for me. And there was a guy on the team who was pretty much like the guru. He just knew everything about websites and was able to code. And I found myself having to keep going back to him for help. It was fine in the beginning to ask for help, but I had to keep doing it over and over again. And it just got to the point where I thought, “You know what? I’m going to learn this stuff on my own. I’m going to teach myself HTML and CSS.” And as soon as you start learning, you just want to learn more and more, and fast track a few years and I’m a developer.
[00:02:13] SY: So this was post college or when did this happen?
[00:02:16] KR: Yes. So this was post college. I’d already worked a few years as a videographer. I’ve made documentaries, and yeah, sort of took like a content role, which was a mix of media and that sort of got me on the path towards creating websites.
[00:02:33] SY: And in those early days when you were being told to kind of be in charge of these things and you’re building and you’re figuring things out, what was your learning process like? How did you fill in the blanks and figure out what to do?
[00:02:43] KR: Well, it was a lot of trial and error. So I relied heavily on online communities. I used all the free resources there were, and I did ask a ton of questions all the time. And luckily, the environment where I was working at the time had a lot of leeway. There was a lot of room for error. They gave me enough flexibility to try things. And if it didn’t work, it wasn’t the end of the world. So that really gave me a lot of confidence. So I could start building pages in HTML, CSS. And if that didn’t work, then we were just going to go to a contractor or a freelancer, but I was able to start doing it myself and to just try, just give it a shot, give it a crack. And when I couldn’t understand something, like I said I had this guy on my team who was always there to help, and I used online communities like CodeNewbie to help me and support me and just to encourage me. I really relied on that when I started.
[00:03:48] SY: So we have a lot of conversation in the community and on the podcast as well about the value of a computer science degree. Now someone who is working as a successful developer who did not get a computer science degree, what are your thoughts on that? Do you wish that you had one or do you feel like you did find just without one?
[00:04:05] KR: Yeah. I mean, it’s one of those things where sometimes you do find yourself thinking, “Oh, I really wish I just chosen this at university or college because I know I love it now and imagine how many years of experience I would have if I just chosen it from the start.” But whenever I think of that, I remind myself that my perspective is so unique and everyone has a unique perspective. And if we all thought the same way, if we all approached a problem the same way, it wouldn’t be much creative thinking and different approaches to things. I know that my background was very non-technical and I know that that could be a disadvantage in some ways, but because I had to learn the material from scratch and rarely get up and going very fast. I couldn’t have the luxury of a couple of years of slowly working through course material. It was like, “You know what? No, I want to be a developer. So I need to work through this material as fast as I can and get to grips with it as fast as I can.” And that teaches you to learn quickly and to dive in into the deep end and just have a crack at it. And that as a developer is the best skill to have. It’s the best approach to learning as well. I don’t need to be an expert at this. I don’t need a course. I can just go in and figure it out and sort of plunder my way through until it starts to make sense. And I think that’s what’s great for any self-taught developer.
[00:05:38] SY: So in this conversation, we’re going to get into memory techniques, which I’m very fascinated by because when I think of coding, I don’t think of a lot of memorization, right? Like it’s like we’re allowed to cheat, like we’re allowed to look at our old code and code on the internet and kind of put things together. So memorization isn’t something that immediately comes to mind. So I’m really interested to dig into some of these techniques. But before we get into memorization, tell me about your journey. How did you start using these memory techniques? Why did you start using these? Where did that all come from?
[00:08:23] SY: And what made it click for you that the answer to this problem was visual memory techniques specifically? Why was that the answer?
[00:09:56] SY: And are these analogies and visualizations that you came up with on your own, are these things that you read in a book? Where do these visualization techniques, where do they come from?
[00:10:07] KR: I’ve come up with them on my own. It’s been a long journey of trying to come up with the right images and the right analogies. So actually, pretty much all of the analogies that I started with to explain things I no longer use.
[00:10:24] SY: Oh, interesting.
[00:10:25] KR: I learned a lot about what makes a good analogy and how abstract should you go. So like an example is learning arrays. So if I wanted to learn something about arrays, I was like, “Okay, let me at least memorize all the methods of an array.” And immediately, you might already be thinking this as like you shouldn’t be memorizing all the methods of an array. You can look up that, but I was already down that road. Well, I’m not trying to turn everything into images and analogies. So I was like, “Ah, let me add that in,” and I came up with this whole image of array, like a stingray that you find in the ocean and it’s got this like Swiss army knife full of tools. He’s calling up all the different tools and each tool represented an array method. But I made the image and I worked it out, but I realized that it didn’t help me at all while I was coding. I’ve never actually needed to think about the stingray and picture its tools. I was like, “I just never need to do that.” So yeah, that’s sort of when I realized that, “The analogies need hard work. It’s not just the person that comes to mind. You need to really flesh it out and make sure it’s representing the thing that helps you as a developer.”
[00:12:01] SY: So walk me through an example of when you were either at a job interview or you’re coding for yourself where one of these techniques, one of these visualizations, where they came in handy. Tell me about that moment.
[00:12:15] KR: So quite recently, I had to use it in a job interview. There was a question which needed you to understand what this variable was pointing to. And if that was a few years ago, that would have just completely thrown me because this variable I’m sure that many can relate to this, but it was even the most confusing thing. I could just never understand what this thing is and what it’s meant to do and what it points at. But I had created an analogy to actually picture this as a turtle, a flying turtle, and there’s a story for how this flying turtle needs to find its way to a ship, and a ship in the Great Sync is an object. So it’s really there’s a story about how this turtle needs to find its way to the ship, and turtle actually, the acronym for this is turtle hops in ship, and I was able to, in the job interview, just basically follow the turtle’s path and picture in my mind, “Okay, so where is the turtle now? Where is he headed?” And then work my way back to, “Okay, now that’s the object that the turtle has found.” So that’s the object that is pointing to you. And I was like, “Yay!”
[00:13:35] SY: It worked! That’s awesome. So what makes a good visualization? What makes a good mnemonic device?
[00:17:32] SY: So what kind of analogies, what kind of visualizations don’t work? What should we try to avoid when we’re trying to come up with our own mnemonic devices for our own concepts?
[00:17:43] KR: You have to be very careful about the analogy itself. And if they are false, like things that you assume, false assumptions based on what your analogy is, which can actually lead to a false mental model or a false understanding of that topic. So the analogy which was meant to explain things more clearer actually created more uncertainty and almost incorrect assumptions about that topic. A common one that we always come across in coding is talking about variables as buckets, variables of buckets, and it stores things, but that image implies that one bucket can contain many values and that how can you have the same value, but in two different buckets, which in coding, you could have two variables pointing at the same value. So inverted commas, speech marks contain that value. But this analogy of using a bucket makes you think that that’s impossible. That’s the biggest thing with analogies is that you want to put time into what that analogy should be, and if it explains it like it should and doesn’t just create more confusion about that topic. The other thing with like bad analogies. Oh, this is definitely in my opinion and it’s from the perspective of mnemonics and memory technique. The analogies that are dry and boring are so forgettable. I don’t know how many analogies we’ve heard of cars and dogs to explain classes. I mean, the number of car analogies I’ve heard of the time is just… and you forget all of them. They’re just not memorable. They’re not exciting. There’s nothing unique about them. Yes, they work in the context of the blog posts that you’re reading or the video that you’re watching about when it’s explaining it and it helps in that moment. But if you’re looking for a resource that lives on in your mind as a way to reference your understanding of that. So if you’re learning something new to compare it to what you already know and to use that knowledge to help you remember what you really know, our analogies just don’t work. There’s just too many of them.
[00:20:05] SY: So what about some mnemonic devices for people who maybe aren’t very visual learners, maybe they’re more auditory, more tactile learners? Any ideas on that?
[00:20:17] KR: Sure. I mean, the thing is with analogy and abstraction is that, of course, it’s not for everyone and this isn’t the only way to make something visual. It’s one way. So instead of creating these visual images, I think just making sure that you use diagrams and squares and circles to understand relationships between things. With the Great Sync, I do actually help, I try to draw the material as well. So you actually sketch, and yes, you use these crazy worlds, fantasy characters and environments in your mind, but to explain it to someone else, you could just be drawing a circle or a square or a line connecting two things. And that is in itself very powerful. That’s taking a text medium and translating it into something that someone else can consume that’s different to the text. It’s another way for them to look at that content to understand it and not have to always try to digest texts or whatever it is. I think whatever way you come up with avoiding, just looking at the code itself is a really like a huge, huge improvement in terms of communication and just trying to look at it from a different angle.
[00:21:42] SY: So tell me a little bit more about visually creating this world, this sketching. What does that process like? Are you kind of sketching the whole world in front of you? How are you building that out?
[00:23:30] SY: Coming up next, Kylo talks about a good place to start for people who want to build up their own memory devices to learn to code after this.
[00:23:54] SY: So for people trying to build up their own memory devices to learn to code, trying to implement some of the techniques we talked about today, what’s a good place for them to start?
[00:26:11] SY: Now at the end of every episode, we ask our guests to fill in the blanks of some very important questions. Kylo, are you ready to fill in the blanks?
[00:26:18] KR: Yes. Sure.
[00:26:19] SY: Number one, worst advice I’ve ever received is?
[00:26:23] KR: So you have to start at the bottom because that’s what everyone does or that’s the “industry”. So like I said at the start, I came from film and videography. And in the film industry, I definitely had this advice given to me all the time that you need to start at the button. We’ve all had to do it. You’ve got to start at the bottom and suck it up. And that’s just not true at all. We make our own path in life and don’t let anyone tell you what path you should take.
[00:26:56] SY: Number two, best advice I’ve ever received is?
[00:27:00] KR: Stop trying to master everything. Accept the things you don’t understand right now and move on. I mean, this was a really big lesson I had in that part-time bootcamp. We were just racing through so much material. Before we understood one thing, we’d already moved on to the next and then onto the next and onto the next. All of us in the class were really struggling and just trying to keep up and understand what we’ve learned and apply that, just got crazy, but only at the end of it and we look back at what were done, it was like, “Wow! I’ve learned so much stuff that I would never have done if I’d followed my own rules and this desire to understand everything perfectly.” I’m actually in a better place now to go back to a lot of that material and I’ll start to improve it and understand it better. So yeah, stop trying to master everything.
[00:28:00] SY: Number three, my first coding project was about?
[00:28:02] KR: It was a part of a social media campaign where we were using the university mascot for a marketing campaign and this dragon. And I created a landing page, which had this big dragon face on the front, these like big, scary eyes that you landed on the page. And there was a form there that had an input and you could copy the strings of letters and numbers that we posted out on social media, which was meant to represent what dragon speak would be like, like their roles or language or whatever. You could copy that and paste it into the website and it would translate it to English.
[00:28:46] SY: Cool!
[00:28:46] KR: It was a terrible website. It basically consists of about a thousand if statements.
[00:28:52] SY: But it worked.
[00:28:53] KR: It was fun. Yeah, it was fun to make.
[00:28:54] SY: Yeah. Nice. Number four, one thing I wish I knew when I first started to code is?
[00:29:01] KR: I wish I knew the importance of not comparing yourself to others. I started out really trying to gauge how good I was by looking at what other people were putting out on Twitter or on any social media and saying, “Oh, can I do that?” I was like, “No, I can’t. Maybe I’m not really good at this.” And that holds you back. It’s a very easy trap to fall into because you want to be part of these communities and you want to contribute and you want to show your appreciation, but you have to be careful to not compare your work to theirs because you don’t know what journey they’ve been on and you don’t know what challenges they’ve had to face and you’re on your own path and you will start creating the work you want and that you’re happy with as soon as you let go of what it’s like compared to others.
[00:29:54] SY: Very nice. I like that. Well, thank you again so much for joining us, Kylo.
[00:29:57] KR: Thank you. That was really enjoyable.
[00:30:06] 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, 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!