Every now and then we come across someone who dives into the deep end with learning to program! Carl, also known as 'Meatball' online, started to learn to code using the Python track in Exercism...that is quite the feat, but who doesn't love a challenge!
Jonathan: Well, hello and welcome to the Exercism podcast. My name is Jonathan. It's a privilege to be back sharing life and stories with you, wherever you may be. So today we have a guest whose name is Karl. And I'm going to dive straight in and just ask Karl to introduce himself a little bit. So Karl, tell me where are you from? What are you getting up to at the moment? And how did you come across Exercism? Carl: Well, I live in the city of Gothenburg in Sweden and currently a full-time student. But when I got into tech and programming, I used Exercism. I started with the Python track and I think Python tracks is the best track for most beginners because Python syntax is pretty straightforward and in my opinion pretty human nature. And when it comes to the types of programming language, Python is pretty kind to you. It doesn't have that many types, data types, but...Yeah. And so I started with doing the concept exercises and following the syllabus. And I did that like every other weekend doing one or two exercises and. After a while, when I actually, because when in the beginning...did a lot of mistakes which I look back on. Now when I got older or like...Now, when I've programmed for longer, I can now tell those mistakes. So you don't, your code doesn't have to be perfect in the beginning. And what I liked was that when I actually...when I've done a lot of exercises on the Python track, I actually moved over to the Ruby track. Okay. Why Ruby is a great language to move from Python is because there are a lot of similarities. And uh- Ruby syntax is pretty similar, but there are some differences. Like, Ruby is a lot more OOP, object oriented. So I think if for a beginner, I think it's could be a pretty nice journey to start with Python and then move over to Ruby. And I'll see you next time. Jonathan: You started with Python. I mean, often when people come to Exercism they have a bit of experience with development. If you've had a bit of prior knowledge and experience in developing and coding, what people use Exercism for often is to upskill in a specific language. But am I right in thinking that you came without any coding or any programming experience and started with Exercism? Carl: I have done some like scratch, like visual programming before, but never like actually code. It is rough starting from scratch. And I think that's something every programmer share that it's. The beginning varies like a hill and after you come up from like up the hill, it just becomes easier. like you. Jonathan: I thought you were going to say you come up the hill and then the hill gets bigger and then you come up a little bit and then it keeps getting bigger and bigger and bigger. Do you experience feeling like? There was a point where stuff made sense. Was there a moment when you were like, okay, yeah, I get this. Carl: I mean, what is really like, it takes a lot of time to actually like fully understand something and what most people in the beginning often do is...use while loops a lot because they are very, you can control them a lot more than the for loops because the for loop you actually have to tell it before you start how long the loop has to be. And I think...When I actually learned like how to probably properly use a for loop and not like overly use while loops, I think I programming clicked or like what loops clicked a lot more how loops work. Jonathan: Okay, so that was like a moment where you felt, okay, this concept makes sense to me. And then did it, your understanding of loops, did that then translate across into other concepts which started to sort of make sense more and more? I'll speak from my experience here. So I've been learning Go on the Go track as well. And loops never made any sense until I spent like, it's probably about three days going through the exercises and the documentation and piecing it, like taking it apart one piece at a time. And the experience of going through loops and trying to understand loops actually had a really big impact on my understanding of code, generally speaking, and how functions and all that kind of stuff worked. Was that similar for you, would you say? Carl: Python is you're often to solve different things, you're often iterate over stuff. That's more or less the only thing you do in Python. In Python, you iterate over stuff to solve problems. Meaning loops are very important to fully understand.When you actually fully understand loops in Python, you can do a lot of stuff just because everything is based on iterating over objects. Jonathan: That's cool. So you currently are studying, you mentioned briefly before this recording, like maths, physics. What are the topics you currently studying at the moment? What topics or what subjects are you currently studying at the moment? Carl: I'm studying programming math and physics. Jonathan: Okay, how are you finding all of those? Carl: I did, the thing was that I actually did Exercism for a prep for those programming courses. And I realized I now know a lot more than those courses cover. Jonathan: That's awesome. Carl: I don't learn so much from those because I learn about Marxism instead. Jonathan: So are you saying, Carl, that actually people should do Exercism rather than a university degree? Carl: I mean, you don't like a computer science, I guess you actually learn a little bit more about how a computer works and like bits and stuff. While XSYSM only teaches you programming and problem solving and all the logic parts in it. I think there is still a point going to university. Jonathan: I was slightly pulling your leg there because I think we would probably offend a lot of people with university degrees if you told them that you don't know anything. So we'll steer clear of that one. And Carl, tell me, I'm just going to ask you some more questions just around sort of growing up now. What was your...I'm trying to phrase this. Like as a child, did you enjoy problem solving? Were you kind of interested in like Lego or those kind of things? And the reason I asked that is because often when people do programming, there's quite like a natural enjoyment of problem solving as a thing. So growing up, did you have a lot of sort of hobbies or things that were more sort of technical? Tell me a little bit about that. Carl: I mean, I liked Lego. I didn't. I mean, I've... I was good at math when I was younger. It's problem solving in that, trying to solve different math problems. I think I think what really got me into programming is just... My interest in tech generally, I really like computers. And I really like...Thank you. Every time someone gets an issue with a computer, they're like, Oh, can you help me? Which can be a bit annoying sometimes, but it's actually often very fun. So actually I got into very interested into computer and computers and that moved me over to the interesting programming. Jonathan: Okay, so now you did, as far as I understand, you've done now four to five tracks on Exercism or have you learnt, you've actually learnt four to five languages using Exercism, is that right? Carl: Is that right? Yes, I have done like... I've done, I've started like on six tracks. Okay. But I will only play my own like no decently well for. Jonathan: Okay, and out of those, so which ones? It'd be Python, Ruby. Carl: Python, Ruby, JavaScript, and TypeScript, but I also have like decent ad elixir. Jonathan: Okay, so out of all of those languages, which one have you kind of enjoyed the most in terms of learning? Carl: I really love Alex here. I really like how you type in that language. It's, I think it's very...a very fun language to type in, but it's very different from what I'm used to in other languages. It's like kind of starting from the beginning at some point. Yeah. But I think if someone actually wants to learn like a really, really powerful language, JavaScript is there. It's, in my opinion, one of the most powerful languages you can know. Jonathan: Okay, so JavaScript would be, correct me if I'm wrong, a more interpreted language. Would that be a fair comment? And then Elixir is probably more functional. Is that? Carl: Yes. Jonathan: Okay, so those are quite different in how they are. So it's interesting to me that you seem to enjoy both the full spectrum of those two languages. What is it about? Elixir that you find fun or enjoyable? Can you nail that down? Carl: I mean, it is this functional programming. Like, you have these...You have these functions and you're supposed to bring them all together. And with all these functions, you're supposed to solve the problem. Like, and that means for me, at least I get heavily, uh, Elixir documentation is very important, uh, to actually like do something. Uh, and the Elixir documentation is great in my opinion. Um, so you see it by a search for the correct methods, which I think is very fun. Jonathan: So it's almost like piecing together, like a puzzle, you could say, where you sort of putting everything together so that you can see the problem. Carl: putting everything together so that you can see together a puzzle. And as I said, I really like how you're writing the language as well. So it's a very nice puzzle. Jonathan: Okay, cool. So whereabouts on that track? Have you got through the practice exercises or are you kind of still on the concept exercises? Carl: There is a lot of concept exercises for that language. I think it's like 20 or perhaps more than that. I think I am on the concept exercises I've done like...probably 90% or something, so I'm nearly done. Jonathan: Awesome, that's so cool. That's really, really cool. So, Karl, I want to find out a little bit more about life, further afield than just coding and development. So, what are some of the things that you enjoy doing just in your spare time or hobbies? Is there anything that you really would, if you could spend all your time doing outside of coding, what would that be? Carl: Well, if I'm not allowed to say programming, I like to play some video games at my spare time and I like biking as well. That's also fun. Jonathan: mountain biking or road biking. Carl: road biking. Jonathan: So do you cycle? I mean tell me a little bit because you're in Sweden right? Yeah. And where you live is it flat? Is it hilly? Do you have beautiful ocean? Because that's my impression of Sweden is that you have oceans. Carl: that you have oceans. Yeah, it's where I live, it's pretty flat. But if you go up north, it's more hilly. Jonathan: Is it snowing at the moment in Sweden? It feels like it's going to start getting cold now. Carl: It was snowing like last week I think, but now very snow. Jonathan: Okay, and do you bike in the snow? Carl: Yes. Jonathan: You do. So we have another, you might know Brian. Brian, he's a he's one of the Elixir mentors. Brian Underwood, he also lives in in Sweden, I think in Stockholm, and he goes for runs in the middle of the winter, running around the dark of night in Sweden. So I thought I was quite, I thought that was quite, quite cool. So do you would you cycle often, like once a week, twice a week? Or is it like something that you do on a regular basis? Or is it just... Carl: I, I, I, when I, I travel, I, I buy to the bus station and then I take the bus from the bus station. Jonathan: Okay, and then you just find a nice place and then...So you travel by bus. Carl: I travel by bike to the bus station and then I travel by bus. Jonathan: Got you. Okay, okay nice. And Carl, do you like how far is the university from where you live? Are you currently living at home or are you renting a place? What's your setup? Carl: What's your setup? I'm living at a home. It's 30 kilometers away. It's, it's we, it takes like, I don't know. Oh, wait. Yeah, 30 kilometers, that's probably right. It takes like 40 minutes or something. Jonathan: Okay, so it's not that bad, but that's still quite a long way to go. So now how many more years have you got left of studying before you enter into the real world, so to speak? You've got four more years of studying. Are you in your first year at the moment? Carl: Yep. Jonathan: Okay, wow. So you've done year one and it's a four year degree. Okay. And what, do you have any idea of what your dream is in the future or what you want to be doing as a career or any thoughts around that? Carl: I mean, I've always wanted to work with space, because I think that's cool. Not being like in astrophysics or something, but doing perhaps some programming around space things. And we have a European Space Agency, which will be something, but...If not that, I think just like. I don't know, a casual backend job will be nice. Jonathan: Just a casual back-end, I love how you said that. It makes it sound so straightforward and easy to my ears. And do you think you would ever want to move somewhere else other than Sweden? Or do you enjoy Sweden? Any thoughts around that? I mean, listen, I'm asking you questions that maybe you've never even considered just yet because you still got a few years to go before you have to make those choices. But Space Sounds sounds really fascinating. How are you going to do that? How are you going to start getting into that? Carl: I have actually no clue. Never really thought about actually how, but...I mean, we will see. It's more of a dream than like actually a plan. But to answer your earlier question, I've actually thought about perhaps living in like Canada or something, but I suppose I will still live in the northern part of the world still. Jonathan: Okay, so cold and ice and snow. You happy with that? Yeah. Carl, do you have brothers, sisters, siblings? Carl: I have a little butter. Jonathan: Okay, so there's two of you. And does he enjoy programming? Do you teach him what you learn and what you know? Carl: Oh, he doesn't like programming actually. I don't know. Jonathan: Oh really? So there's no overlap. But do you play games with him as well? Carl: I play games with him sometimes, yeah. Jonathan: Is he much younger or I guess he must be at school currently? Carl: He's like five years younger than me. Jonathan: OK, so that's quite an age gap. Oh, that's cool. That's awesome. So getting back to Exercism and your involvement, so now you're maintaining on the Python track, if I'm not mistaken? Yeah, or contributing. Contributing, OK, cool. Maintaining one day. But how are you finding that? What have been some of the things that you've learned through that experience? Carl: I mean, the people on the pipe track is really cool and it's really fun working with them...Because currently I've done a lot of documentation and you actually learn how to do documentation and you actually also have to do a lot of research often. Yeah, so you have a lot of documentation and you learn a lot because you have to read all of it through a lot of other people's documentation. So you actually dig very deep into the concepts. Jonathan: So have you enjoyed that specifically as a discipline in terms of contributing? Carl: Yeah, and I mean I learn a lot when reading through those documentation. Jonathan: No, it's really cool. So in terms of contributing to Python at the moment, is your thinking that you'd like to start contributing to Elixir and to Ruby? How do you foresee that? Carl: I mean, yeah, I could see myself contributing to the Ruby track, but Elixir, I don't think so. I have this long-term plan that I will contribute to the TypeScript track, but we will see. I think I will stay on the Python track for the next six months, actually. Jonathan: Okay, that's cool. So tell me, can you explain to me a little bit about TypeScript? Like, just give me a sense of what it's all about. The reason I ask is I've heard about it. But I have heard it kind of... solidifies JavaScript, but again, you could tell me if I'm being completely wrong. It kind of helps just safety check JavaScript a little bit, but I could be wrong. What is it? Carl: What is it? I mean, that's a pretty good description. I had a front-end class and the teacher used JavaScript and he did some basic JavaScript in HTML. Because I copy pasted this code into TypeScript. And TypeSquip was like, oh no, you shouldn't do this. It's unsafe. So it's a lot about that, like doing your code safe. So it's like distance crash and stuff like that. So it introduced types, so you don't have like type conflict. And yeah, generally tells you to do safe stuff and not unsafe code. Yeah, it's, it is a different language, but it's very similar to JavaScript. You can often think TypeScript as like JavaScript, but you put on armor on it. So it's like protected. Jonathan: Okay, so it is its own language. I think in my mind I had this impression that it was almost like a plug-in to JavaScript, but you're saying it's actually its own kind of language fully. Carl: I think it is. I mean, they are very similar, so perhaps they are the same like it's a plugin, but I like to think about it as its own language because it has some key differences. Jonathan: I've probably just offended every TypeScript fan out there by saying it's a plug-in for JavaScript. I'm sure that'll get some interesting opinions flying around. But so for you, the safety part of TypeScript is kind of what makes it a feature worth exploring more. Is that right? Carl: I mean. Like, actually what got me into TypeScript was that my React library didn't support normal JavaScript and only supported TypeScript. I've got used to TypeScript and I think it's really nice. It's it also makes the code more clear when you use like types because you can actually see like, okay, this is taking in number and it outputting a string. It's getting easier to read. Jonathan: Okay, you mentioned React Native there. Do you prefer front-end development or back-end? I gather you prefer back-end from what I understand. But do you dabble in front-end a little bit? Carl: I've dabbled into Frontend, but I'm so bad at CSS. So I usually try to find some good UI library and use that. Jonathan: When you say bad at CSS, what do you mean by that? Like you just don't understand it or it's just confusing or there's too many... Like what is it about it that you kind of struggle with? Carl: kind of struggle with. It's like, it is like, there's so many like things you can assign to an object like very slick. Oh, to remove the thing on like when you create a link in CSS or in HTML, you get like a line under the text. And then to remove that, you have to add text decoration and then write none. It's actually removes that. And it's so much like stuff you have to remember. And what is the most annoying about CSS is that if you do a change in the code or like the CSS, it often screws with something else. So you actually have to, okay, I solved this problem. Now this problem came up and I have to solve that one and just go in. So it keeps just. Jonathan: So it keeps just like kicking the can down the road somewhere else. So that must be so frustrating. I guess my only experience with CSS was learning, also trying to learn React. And you have so many variable, like you say, so many options. Like do you expand it or do you constrain it? And if you do that, then that changes this button. And before you know it, all of your components are kind of doing different things if you're not careful. Jeremy at Exercism, he is really good at CSS, but I think he just knows so much of all of the different aspects to it. So for you, front end is not something that you enjoy as much as more the back end side of things. Carl: I have no problem with the programming parts of the front end, but the actual look is I don't really like. But the back end, at least for me, it's more if it works, don't break it. Jonathan: Yeah, don't touch it, let it be. I find it interesting how people tend to favour...one or the other. Do you know what it is about the backend side of things? You say you like the fact that it just works. Does the logical thinking through and the processing of things for backend? Is that an aspect that you enjoy the most about it? Carl: Yeah, I like about it because it's mostly logic and setting up different database structures. That's mostly it, even if I'm not good at like databases. Jonathan: That's cool. That's awesome. So, Karl, I've got a couple more questions for you. I really enjoyed just understanding a little bit about where you come from and what you enjoy doing. Can you identify some key tips or things that you would recommend to someone starting out learning to code? And you can do it from like if they maybe are more scientific of a background, maybe some tips for those types of people who enjoy that. But if you were to come at it completely from another perspective, what would you say is a...a good thing to do consistently. Carl: Consistently? I mean I think that you should... Like start with an easy language. Don't start with like rust, C plus plus or C. But then actually. Like, when... I know Jun said a little bit like this, but...Like when you see a problem, like read through the problem, take a break, think through it, how you will solve it and then come back and actually solve it because...It's good to let your brain process how you're going to actually solve the problem. Another thing I think is to... to actually try to not move too fast. do a little bit now, do a little bit then, because say you're doing a lot of like concept exercises, it's better to actually let that information sink when like doing all of the concepts in the same day and you will probably just be left confused at that point. Jonathan: and how everything applies. OK, cool. So take your time. Allow yourself the space to think through things. And would you say going slow is a going slower, getting things deeply settled in is better than quick and, that sounds like what you're saying, is better than quicker skimming the surface? Carl: Some languages you perhaps only have to learn the syntax and...and the basic stuff and then being able to move into like more real world scenarios and actually dig deeper then. When it comes to javascript I learned the basics and then I did react projects and there I... like learned a little bit of new stuff and got deeper into the language. Jonathan: Oh, that's cool. OK, nice. Awesome. OK, so Carl, I have one more question for you for this week. What is your recommendation for the community this week? Your special recommendation, and it can be pretty much anything. It can be, you know, go and go for a bike ride in the snow. It can be jump in a freezing cold lake or go for a sauna if you're in Sweden. What would be your recommendation for the community? Carl: Yeah, I mean, I don't, I think it's, it's, it's, it's very hard to bite in the snow. So I don't, I don't recommend that to people. Jonathan: Yeah. Carl: But I think I will say what I said earlier. See, if you have a problem you're stuck on, take a break. Don't sit there for like a few more hours just trying to solve it. It's better if you take a short break and then come back as a problem. Jonathan: Okay cool. So this week your recommendation is if you need to learn something, slow down, take a break, get a coffee. Do you drink coffee? Carl: Not yet. Jonathan: Not yet. Okay. Never. Carl: I'm actually just a water drinker. That's probably the special thing about me. Jonathan: Okay, awesome. That's going to save you a lot of money going forward in life, I tell you. That's awesome. Okay, Carl, well, it's been a real privilege to chat with you today. Thank you for your time and thank you for all your contributions to the different tracks and for engaging in Exercism, We really appreciate it. I've really enjoyed getting to know you over the last couple of months, especially through the Discord server that we ran. I think it was the Ex-Orts, were you on the Elixir Discord? Carl: Either the cohort or the experts. Jonathan: Yeah, I think I'm sure I saw you quite a lot on those, which was awesome. And yeah, thank you for contributing. It's been great. So look forward to chatting soon and thank you very much for your time. So just stay on the call and we can wrap things up from there. But thanks everyone for listening. You've been speaking with myself, Jonathan and with Carl and look forward to checking in soon. Bye. Carl: Bye.
Listen, learn and be inspired by our community members.