Back to Community

Becoming a Polyglot Developer

What is a 'Polyglot', I hear you say...well, according to the dictionary, it's the ability to know several languages! So how do you become a 'Polyglot'? You talk to Erik Schierboom and get the inside track!

Watch on Youtube

Jonathan: Well, hi everyone and welcome to the Exercism podcast or live stream. My name is Jonathan and I'm privileged to be your host today. And I'm joined by Eric, who is part of the Exercism team and has been involved for a number of years. If you've been in the Exercism ecosystem at any point in the last couple of years, you've more than likely come across Eric somewhere along the line. But Eric, it's awesome to have you on today's show. I'm excited to find out a little bit more about your story and how you ended up in tech and some of your perspectives on different things in the tech scene. But before we kind of dive a little bit too deep into those things, I'd love you to introduce yourself and give us a little bit of a background, a little bit of a story as to how you ended up where you are now. Erik: Sure. Yeah. Great to be here. So I'm Eric, as you probably already mentioned. I live in the Netherlands. I've been born there. So I've lived here in my entire life. When I was, I started to think about when I was, when was the first time that I actually did something with computers. And I think it must have been an NES system. So playing Mario. And that got me hooked. Yeah, it was great. And also very frustrating because games were relentless back then. Jonathan: you didn't have save points etc. just go at it again and from the start. Erik: Well, it depends on whether you lived in the US or the rest of the world, because there were actually two different versions. But yes, I think you open the slot in the front and then you put on the discs or whatever, the cartridges. And I really, really love that. We didn't have an NES, but I had a couple of friends that did. So I went there regularly to play and there were so many great games that I played and frustrating games. But it was such a great, great thing. And then that sort of got me hooked. I think that's how many programmers get hooked with trying to be a programmer just by wanting to build a game. Thought about it. Which I've, spoiler alert, I never did that. I'm not a game developer. OK. No, no, no. But that was the reason why I started liking computers. And then my dad had an incident before I was born. So he was paralyzed below his shoulders. So he was in a wheelchair. But he was always at home. So that was great. So I had a dad who was home 24 seven. So it was always great to come home. And he also liked computers. So at some point he I think I was maybe 10 years old or something like that. He got this really not so fancy computer. I think it was an X286. It was in black and white and it had MS-DOS installed on it. And you could play games. So there were so many games and I got some some some dads from my friends who got me games and they had to print out all the sheets with the passwords to be ordered to actually boot up the games because it was password protection. It was like the manual. You can't get away with that right now. But back in the day you could. And I love playing those games but I also love to sort of try and figure out how it worked. And I broke my computer. I can't even recall how many times. So I had this help desk which was a dad of a friend of mine who was really good with computers. And whenever I had broken my system I would call him and he would be very gracious and come over and help me fix my system. But I still remember me being in panic mode when I figured out that I couldn't actually get out of this issue. So having like but I learned a lot from that. Jonathan: this issue. But I learned a lot from that. On a floppy disk and I remember saving up for this thing for years and then putting it in and then it just would never, never load up with on those little floppy disks. So that was that was one of my massive frustrations. I don't think I ever got past the point of trying to figure out how to fix it. But was it kind of games came on floppy disks and you had to like you got a little cartridge that you put them in and uploaded and all of that kind of stuff. Erik: Never. Jonathan: Yeah. Erik: Yeah, sometimes you had multiple floppy disks. So, yeah, it was actually a great period. And I loved MS-DOS and just figuring out what I could do. And then I figured out what I couldn't do. So, yeah, it was really cool. Jonathan: Yeah, it was really cool. Did she then work full time? And your dad was at home? Erik: No, my mom took care of my dad full time. So he needed a lot of care. So he could move around at first with his hands and later on he could use his chin because his hands started to degrade a bit so he had less control. But she took care of him full time. So my parents were always at home. So for me, it was really weird to go to other people where their parents were working. So it was the end of the day and the parents were still not home. To me, that was really odd. But yeah, it's just a different situation. Jonathan: To me that was really odd. It was just you. Erik: I do, I have one sister. She's three years younger than I am. Nobody would ever tell that we're siblings. We're so different. But I used to fight a lot with her, but now we're totally fine. So it ended up well. Okay. And she didn't like computers, so she wasn't like invading my computer time. Jonathan: But we often fought about the computer. She wanted to play Sims and I wanted to play SimCity or whatever. So we were always at each other from that perspective. Erik: Bye. Definitely love the Sim City choice a lot better. But no, she never actually was interested in computers. The only way that I could get her interested was when I had a SNES, so the Super Nintendo, and we had Mario Kart. And she did like Mario Kart, so we played a lot of Mario Kart together. Of course, I always won because I had far more practice, but she still liked it. Jonathan: So you still like messing around? Yeah, MS dos, if I'm wrong, pretty low level type situation. Yeah. So so so that probably pretty low level. Yeah, absolutely. And then how old were you when you were playing around with that with that system? Erik: Okay. Pretty low level, yeah. Absolutely low level. Yeah, that was about I think 10. And then I had a friend who was in my soccer squad on my football squad, basically, I should say. But he was already a good programmer, and he could actually code games. And he did that in Visual Basic. And I was completely stunned. So he would come over to my computer, and he would show that he will be typing something and I couldn't make any of it. But after half an hour, so he had something that was walking on the screen and was just completely magical to me. But I was just awestruck. But I never actually tried to program at that point. I still felt it was too hard for me to even try. So I didn't do it. I just sort of messed around and played games. Jonathan: So I... I'm just jumping in. Erik: And then when I was a little bit older. Jonathan: How did the connection get made between, oh, I can program the game and I can do this as something like full on, if that makes sense, or I can follow this in a more serious way. Erik: Yeah, that came later. So when I was about, I think, 17, I had to choose which path to take, basically. So I had two options in my mind. One was to study history and the other was to do IT. So in the end, it was a fairly simple choice because I felt like IT was something that I would love to do a bit more than just doing history. There might be very dull bits in history and I didn't think there will be dull bits in computer science, but there are, of course. But so I was wrong. Yeah, yeah. No, well, we can go into that at a different time. But yeah, there are boring bits. But now I made the choice then. And it was in the time where it was everything was booming. So it was the dotcom boom. So when we were visiting my high school, the school where I went to go to, which was a university of applied sciences. So I could choose between university of applied sciences and the university. But I like the applied sciences because I want to build things. I am not a great theoretician. I don't know how you say, but I'm not great with theory. So I like to build things. I'm very practical. So I started with doing the practical bit. And I really liked that. And it was a period of all these companies making tons of money. And they would say, hey, once you're graduated, you get a car, you get this, you get that. And then when I graduated, it was a dotcom bust. So everything was in shambles and it was actually quite hard to find a job. And at that point, I felt like maybe I should just try university because the applying sciences bit was a lot of fun. And that's where I actually learned to program. But I thought, well, maybe I just postpone my work career a bit and I'll just see if I can do the university. So it was nice. Jonathan: So European education system as far as I understand, you kind of get triaged quite quickly in terms of practical skill based versus like university, maybe more down the academic pathway. Is that true in the Netherlands? Are they quite good at sort of saying, hey, you're really suited to this? I know in Switzerland, which is my frame of reference really, if you're very good with Netherlands, you can say, okay, cool, go and do an apprenticeship and get skilled that way. And it's actually just as, it's not regarded as any lesser or any more than going to university or whatever. It's just more fitted to your preferences in that sense. Is that true in the Netherlands as well? And was there that kind of process to go through growing up? Erik: I would not say that it was regarded as being equal. There's still this idea that going to university and not doing the applied sciences university is better or harder or at least more prestigious. You can also get a different title. But to me that didn't really appeal much. It was just way too theoretical. I wanted to learn how to program because I still hadn't learned to program. I knew I would probably like it. I had seen bits and pieces of HTML, but I've never actually written a line of code. But I was fairly certain that I would really like it. When I started to do it, the first year I basically didn't even write a single line of code. It was just lifting along with some of my fellow students in a group, because one of them was actually a fantastic programmer who knew everything. He did everything, so I didn't even get the chance to do much. But in the second year, I made a conscious decision, this is not working out this way. I'll never learn how to program. So I went full in and I just programmed my buttocks off. That was a deep dive. I started with C, which is a horrible language to start with. I won't go into what I think of C as an actual language, but to start out with, it's a very hard language. So doing a linked list in maybe lesson two or three, it's definitely not something that you would appreciate as a student, if you don't have any background. But I managed to program and I liked it so much that I started doing programming in my spare time a lot. So the way that I taught myself almost to program because the way that they taught it was really, really bad, is to figure out something that I'd like to use myself and then build it, or at least try to build it because at first, you're just flailing around and you don't really get to do much. That's actually useful. But in the end, it's just practice, practice, practice. So I found that programming is a skill that you acquire just by doing. So you can get all the theory you like and watch, I don't know, 10 million videos. But if you don't actually put in the time, I don't think you'll ever be a good programmer. It's just you have to do it. And that's a big step. I still remember being able to read code and was quite pleased with that. But then having to write code, that was such a big step. Jonathan: pleased with that and having to write code that was such a big step. The last couple of shows is asking when it kind of programming clicked for people and it was there a moment for you where it was like the penny dropped and you were like oh my word this all makes sense had you been flailing around like trying to grasp the theory or was there a moment where you're like okay no this is this is straightforward. Erik: I don't think I had a single eureka moment. I think I had several. So it comes in stages. So I think that the first actual program that I wrote was where you had to guess a word. Like what's the current game that's very popular where you get the... Well, it's like Hangman, but let's say it's Hangman. But it was in C and I actually got it to work so I could play my own game. So I sort of understood what was happening a bit and then you progress a bit. I had something that had to do with, I think, mutexes. So there were trains and they must not crash. So you could use a mutex for when they intersect. And mutex is basically like a sign that says stop or go. So that was a lot of fun. So I was quite pleased with it. So I gave it to my professor. And he told me, but what if I want to have like four trains? And I was like, oh, oh, oh, wow. I didn't think of that. So that was like an eye opener and it was just a simple one simple sentence. And I thought, oh, I should have been taking into account the fact that it might be the case that he would ask such a thing. So I went and spent the weekend trying to parameterize my code so that you could have multiple trains and I managed to get it. I hacked it in. It wasn't pretty, but it did work. So that was another moment where I thought, oh, this is really, really cool. And I can do these types of things. Jonathan: Cool. I can see you do these types of things. So from knowing you, I know that. And also from having to learn to code, there's this process where you just put down anything, get it to work and then refine it. And was that your experience as well? It was kind of like, just get it down, get it working. Who cares about anything else? And then refine it. Erik: Yeah, yeah, I think that the first year or so is just if it runs, I was very, very happy. There was no such thing as aesthetics or something like that. It's just if it runs is good. And I went completely overboard with commenting my code because my professor told me you have to comment your code. And it was like the ratio code to comments was maybe one to ten or something like that was huge. And. Yeah, there's still my oldest project is still online that I put, that was my first open source project. So do you remember MSN messenger where you could like send message? Jonathan: Okay, it rings a bell but it's not. Erik: Do you remember Winamp? Jonathan: Yes. Erik: Yeah, so Winamp was a media player. So that was like in the Napster era. So you downloaded MP3 and then you would play it via Winamp. So what I wanted to do was to, if I was playing a song, I wanted it to be automatically appended to my name within MSN Messenger. So, and I was quite keen on doing Windows programming back in the time. So that was Win32. It was very old fashioned, not what we have right now, but very low level and very cool stuff too. So I built a plugin in C++, which was my favorite language back in the day, but I also knew three languages, so it didn't say much. But I built a plugin. So if Winamp was playing, it would get the name via fancy Win32 APIs, and then it would update the name that you had in the MSN window. So everybody could see which number I was playing. And I actually put that online because I thought maybe other people would like it. I think it was on SourceForge, which is now no longer being used by anybody because I think they had some issues with privacy or something like that. But actually other people in the world used it and I was so amazed. I could see the downloads that, I don't know, a couple of hundred downloads and people were using my software that I wrote. That was like the best feeling ever. And that was my first open source program. I never really had imposter syndrome. I felt that this is my code. If somebody thinks it's bad, it's fine. It works, so I was happy with it. And I can learn from other people's comments. I was never one for imposter syndrome, which people that know me would not be surprised. Jonathan: I would not be surprised. To your experience of professors and teachers at university, were there any specific teachers that kind of stood out to you that, and the way that they taught, that kind of accelerated how you learned or felt that had a massive impact in how you understood programming and coding? And what did they do specifically that allowed you to bridge the gap theoretically to practically implementing things? That's quite a big question. You can break that up into as many pieces as you so wish. Yeah, yeah. Erik: Yeah, yeah. Yeah, so I have to separate it between the applied sciences university and the university. So speaking of the latter first, on university, I think that the general level of the skills that somebody had to teach people, they were very, very low. It was a very low bar. And my feeling was that a lot of the people that taught along in the university would actually do that, because they had to, not because they wanted to. So a lot of the time in the university, you want to do research, but there's a number of hours that you have to spend teaching people. Otherwise, yeah, well, it's part of the job, but they didn't really like it. So I wanted to learn to program more after I've learned how to program. So I took the programming specialization there, but it was so bad. I was so almost angry that this was the level of programming knowledge that they wanted to impart on me was such a bad thing that I actually switched to security. And I'm not really into security, but the programming stuff was so bad. Just I always say, with my university career, the only thing that I really learned was how to do proper how to write articles, how to do proper source research so that you know your sources and you don't just accept any source. And that I did learn in those years, but I didn't learn anything about programming at all. Jonathan: Now it sounds very much around history as well, like how you interrogate a source, how you make sure that your argument lines up, all of that kind of stuff. How did the skills and the enjoyment of history... Erik: much around. Jonathan: How did they manifest in your coding and learning to code, if at all? What were some of the crossovers there? Erik: That's a hard question. Well, both involve reading a lot. So, history is about reading. And but also programming is about reading code. So the the number of times that you actually write code is far less than the number of times you reading code. So it's also quite a lot like reading. It can be a bit like being archaeologists, if you have a new job, and you start out with this this ancient legacy system that you have to find your way around. It feels like you're, you're, you're peeking into nooks and crannies and see what's hidden there. And sometimes there are corpses that come out of closets, etc. So it feels a bit like an exploration. I mean, what what did you enjoy about this? I don't know if there's any other what was the enjoyment at all. Jonathan: Thank you. Where was the enjoyment in the industry for you? Erik: mostly, well, the tales that my teachers would tell. So, pirates, they would tell about being dragged by a rope underneath the ship and they would be very graphic, et cetera. I like that stuff. I really like that. And I love the Romans and their culture and how they spread out and it was just, and then also the politics. So the backstabbing, et cetera. I so love that. I also had Latin in my high school. I didn't care for Latin at all, but I so love the stories that they, so I didn't like that I had to do Latin, but the stories that we had to translate, those I did like. But I dropped it after two years. Jonathan: Those I did like. No, the reason I asked that, just around history, was... Erik: Yeah, I know the story. Jonathan: I've seen a number of people who like the more artsy or social, what would we say? Maybe arts in the English framework would be like arts and history and fall into that category. But I've increasingly seen people who've enjoyed that kind of space transitioning over to learning how to program. And the reason I'm interested is that there's clearly... overlap and trying to map that out a little bit has been a hugely interesting part of the conversations that I've had with different people. And it feels like if you can have a big picture and you have a multi-disciplined approach across the different things that you study, bringing that into programming is hugely beneficial because you're able to apply different skills into the programming space. And I think, yeah, that's just, I would just comment on that. So it's interesting that you loved history and now you have what, like, experience in over 30 different programming languages and you're maintaining a lot of those. Well, not maintaining necessarily, but you're heavily involved in managing all those on Exercism, which is your... Well, yeah, yeah. Yeah, jump in. Erik: How much is yours? Can I get back a little bit on what you just said? So you mentioned that there are a lot of different types of people, different interests are doing programming. But one of the reasons that I think that is the case is because programming appeals to both very technically minded people because it's, well, there are strict rules, languages are very fixed. There's grammar, there's syntax. It's all a lot of stuff that's really that appeals to people that like things in a certain way. For example, if you're a physicist, you like rules, you like laws, etc. And there are things like that in programming, but it's also like an art. And so sometimes people compare to writing a book and I still think... That's probably one of the better examples. I don't like the building a house stuff because nobody, no house will get built if we would build our software like building a house that we did. But it really is both a science and an art, I feel. So, Jeremy mentioned this lately in the deeper stuff that with a very simple exercise, people can come up with hundreds of different solutions, even though you think, hey, there should only be one way to solve this. But there are always more than one ways. And that's what I loved about programming, that you could have something that works, but then you can explore, I don't know, 20 other options and you can write and you see, hey, this works too. It's this combination of both being an art and a science that I really like, because I think it's also the only way where I can actually be creative. I'm not a creative person at all. I have a left and right hand, but you could tell, you wouldn't tell if I would do something around the house like chores or carpentry or whatever. I'm not good at that, which is also because my father couldn't really teach me. It's really interesting. Jonathan: But also, I was really not interested in that. For me, I did art at school. So I've done music, I've sort of played guitar or whatever. And so for me, the framework that I have for creativity has always been in drawing or in music and stuff. And I'd never really considered the creative aspect of code. And now that you mention it, so how does that play out for you? Like, do you play an instrument or...? You enjoy music, I know you enjoy music, but I'm just trying to bridge those two things. Erik: Well, um... I do, I do. Yeah, so I tried to learn the guitar. It was very hard on my wife because we were in a we were living in her student flat and it was maybe 20 square meters. So I was trying to learn the guitar and we were so close to each other. I'm still amazed that she put up with it. But I don't have. Jonathan: It's just Erik: I don't have any innate talent for doing an instrument. I had to work really, really, really hard to get to a certain level, which was really low still. I could do tempos, et cetera, that I could do fine. But at one point, my guitar teacher asked me to improvise and then to do soloing, and I was absolutely lost. I couldn't for the life of me do it. There's just no musical creativity in me. Jonathan: There's just no musical creativity in me. Coding? Unlike you. When you come to coding like a fresh, say you get a brief from Jeremy or a feature request in Exercism and it's like we're going to do X, Y or Z. Does that really kind of invigorate you mentally and do you kind of feel like wow, okay cool, let's really explore this and enjoying and do you enjoy that process? Is that really what you feel like you come alive in one sense? Erik: unlike you. Okay. Yeah, yeah. So it's, it's the program is having an idea and making it be something you're, you're, you're almost like, like this miniature God like, yeah, where you started with nothing, you have an idea and then there is something. And it's just so so magical. And I still feel very, very giddy when I have a script. And there's like, all this text that that's line by line, and then you see it just doing stuff. And it's so fun to see the computer working for you based on what you said it should do. I still like it. And so the creativity aspect is definitely also in already exploring which way you're going to try and build something. And then once you've built it, you've probably heard of the the the, the refactoring cycle where you have something that works, and then you start to iterate on and see if you can make it better. And I absolutely adore refactoring. There's one of the books there is, where is it? Oh, I can't see it because it's way out of the camera. But it's refactoring by Martin Fowler. And it's one of my, my better experience reading about software. So I so love refactoring. It's just the process that you you have something that works, but you can make it even better or prettier, faster, whatever your criteria is. And that's also why I really loved Exercism, because it's, it's built for that you, you solve tests, and then you can, you have a test harness and you can do whatever with your code. And as long as it's green, it's still so it works. So Jonathan: I really like that. So I'm going to keep taking it back to different timelines. So now you've done your university, you've learned how to code, you've really kind of said right, I'm committed to this process of learning, I'm going to deep dive into this. So what happened then from that point of really committing into that and then starting to probably think about career and that's always a big part of the process of being at university is like what am I going to be doing for the rest of my life? How did that pan out? What was your thinking around that? What kind of opened up in front of you? Erik: Sure. I never actually considered my career. I don't think I've ever done that in my life. The only thing that I really care for is doing something that I like to do. And that is near to me so that I don't have to drive a lot. So I don't like driving a lot. But no, I've never actually considered my career. And I've also been incredibly lucky. I've basically never had to apply for a job except for maybe once or twice. I've always had friends or people that knew me. Same with Exercism. Jeremy knew me and I didn't have to apply, go through, I don't know, four or five different interview stages like you had to. Maybe even more for you, by the way. But, uh, I. No, no, I know. But I didn't have any. So it was the same when I was looking for a job. So I was always, I was always working next to when I was learning at school, even in high school, I was always trying to earn a bit of money because my parents didn't have a lot of money. So I had to earn my my own share. But I love working. And I, I think I worked maybe 20 hours in a programming job while I was doing university because we had so little actual time that we had to spend within the university that I could earn quite a bit of money to decide and I bought this huge DVD collection from that. Jonathan: Let's not go into that. Erik: Let's not go into that. Yeah, sorry I've actually gave away most of it and I kept the ones that I have very, very fond memories of, but I gave away most of it. I had 400 or 500 DVDs at some point. Jonathan: 400-500 DVDs at some point. Oh, that's fun. Erik: It was close to that. It was close to that. Yeah. But I so while I was at university, a friend of mine, the same one that was the programmer back in the days when I was 10 or something like that. He did the university with me. And he was in a job and he asked me, Hey, you want to join this company to earn a bit of extra money. So I did. And then I, I stayed there basically, once I was done with my university, they asked me if I wanted to do a PhD. But but I read that as you found something interesting in your PhD, which was pure luck, by the way, I did the work, but it was luck. So but I read that as a we want to get our names on something that you will be writing, so that we get a publication. So I wasn't up for that. And I didn't want to do four years of theoretical stuff. And just the whole academic world didn't really appeal to me. I was much more comfortable just doing practical stuff within a company. So I just stayed where I was working to decide. So I was PHP and we had a great team. I think, except for maybe now our current team, we I never worked in such a diverse and very capable team. But we were led by management and was so bad. There was such a disgruntled tech environment there. It's just, it was not good, but I still had a lot of fun. But PHP is not my favorite language. So I was keen on C sharp. I've been a C sharp fan from when it was still C sharp 1.0. So it was quite rough around the edges back then. I ordered books from America and I had to pay some additional tax and it was quite expensive in the end, but I still really, really use that book a lot. And then I said I want to do C sharp for a for a job. So not just on the side and I applied. Actually, it's also for the university, but it's not doing research or anything like that. It was like, well, support more love for the different parts of the university. And I did C sharp for seven years or so. Jonathan: And I did C-Sharp for seven years or so. Just tell me the story there. Because you started as a volunteer or as a contributor, right? And then you've kind of built up from there. Erik: Yeah. Yeah, so while I was working at university, they were very liberal with allowing you to do, to study things or to do go to conferences, etc. So at one point, I had heard of something called functional programming. And I thought, Hey, I don't know about this. I knew they, they taught one optional lesson at university, but I didn't actually do anything with it. And I thought maybe I should be learning functional programming, maybe it will be fun. And I got another colleague of mine who wanted to join. So we did a free course, a Scala course on Coursera, we have to pay if you do it right now, but back in the days, you didn't have to. And it was taught by Martin Ordeski, who is the author of Scala, which is a functional language that we also have on Exercism. And I had a lot of fun learning functional programming was also quite a bit of a mental struggle at times, because it's a really different way of thinking about things. But I sort of, I persevered, and I really liked it. And there was this forum where you could discuss with other students, for example, exercises that you weren't able to solve. But some people asked, what, what research can I be using if I want to learn more about Scala? And somebody mentioned, hey, try Exercism, they have this amazing thing where you get to do a lot of different exercise in there, like small puzzles. And I thought, hey, this sounds good. So I joined and I did the Scala track. And I really learned a lot. And that was my I dipped my toes into the world of functional programming. So I thought maybe do the deep dive. And I went to Haskell. And that was a really deep dive for me at the time. But there were a lot of it was Exercism fee one. So just people would comment on your code, there was no formal mentoring system or anything like that. But the Haskell people were absolutely fantastic. So they, I basically learned Haskell from them. I did a lot of googling and found some really odd solution, I made some odd solutions, but they would always try and guide me towards something that was idiomatic Haskell and nice. And it was it was such a great experience that I thought, hey, I should probably be doing this myself to other people. Maybe I can help too. I've always liked helping. So I thought I'll do C sharp and I'll just comment on other people's C sharp code. So I like that. And then I saw that, hey, the C sharp brick has, I don't know, 40 exercises and Haskell has more. Why is that? So I tried to figure out why that is. And hey, you could submit pull requests to Exercism and add new exercises. And that that was the thing that got me hooked. And then I was just doing exercises every single weekend, adding them. And then when I was done with C sharp, I thought, hey, F sharp, let's do F sharp F sharp is functional. And it's in the Microsoft ecosystem. So I like both of them. So let's combine my, my favorite things. And I did F sharp and I did the same thing. So I was F sharp maintainer building exercises and I really, really loved it. Jonathan: I really, really loved it. You have a language, you're like, okay, I'm going to try Scala. I sort of got my teeth into that and then you went for the deep dive in that. Now, did the time that it took for each language to understand it, did that reduce over time? Because now you've got a number of them. I mean, how did that play out? Erik: Yeah, yeah. Well, that works the same way with natural languages. So if you learn French and you know French well, then picking up Spanish will be a lot easier because there's so much shared knowledge, such as shared vocabulary, dialects almost. So it's the same with computer programming. So if you know C and you're moving to C++, there are a lot of new concepts, but there was also a lot of stuff that's exactly the same. So the entire C-like family, which is also one of the things that I like about programming, that you have like family trees. So there's a list branch, there's an ML branch, there's a C-like branch. And it's almost like history, where you have this genealogy in a family tree or something like that. I said that too loud. Yeah, that's Haskell or Prologue. But I love those outliers too, because they have unique ideas. That's what I usually want to try. So find a language that does something differently, even though all programming language share a lot of the same knowledge. They all have Boolean logic, and Boolean logic is just a fixed, it's a given. So it works the same everywhere. You might want to need to do two ampersands, or you do and as a word or something like that, but the basics are still the same. So once you've got those basics, you know them well, and you can apply to other languages more easily. Jonathan: It's almost like history where you have this genealogy in a family tree or something like that. languages more easily. You learn to code and you take your own experience into consideration. What are some of the behaviors and the things that people do in order to learn to code? And I'm sure there's crossover in a lot of different disciplines. You mentioned sort of just you committed and you just like deep dived and you just wrestled that thing until you understood it. Are there any other kind of behaviors or things that people do who you've seen who you're like, yeah, they put themselves in a position to learn? Yeah, really well. Erik: Um, so my, I've always tried to encourage people to build something that they would like to build. So, um, um, when I was learning PHP, I built something that, uh, kept track of the IMDB top 250 movies that I've seen. So, um, I was watching a lot of movies, so I wanted to check every single one of them, of those movies, and, uh, I learned a lot of PHP and my SQL from that just by building something that I wanted to build. Because then you pierce the VAE, you, if you hit a roadblock, you, you, you want to, uh, not stop, but you want to continue, you want to fix it, you want to have it work. And, um, I've given that the tip to several people that have started to learn the program and it has worked well for them. Um, and nowadays it's, it's so different than when I was learning to cope with a stack overflow, et cetera. And there's so much knowledge that you can find online. It's also hard to find the right resources. So that's where I think that exocism can really shine because, um, we can be, um, gatekeepers almost like, uh, we have people in our community that know what the right resources are. And, um, that's, that's one thing that I, I see new people struggling with. So, um, and also that there's this. It's, it's, you almost never get resources where you actually start from scratch. You're usually the Exercism audience is, you know, one language at least. And so, and then you move on to other more languages or dig deeper into that language. But it's not for people that... don't have any programming background. So you don't know what a for loop is. You don't know what variables are. Strings are something completely different than your mind. Yeah, I always get weird looks if my wife sees that I'm talking about strings. It's a different thing here in the Netherlands. Jonathan: Yeah. I'm going to make some generalizations here. In the last couple of years, it's probably true that more and more people have become aware of coding and programming. In the past, there was probably a smaller number of people who kind of knew how to navigate in that space. Obviously, as this industry is growing and growing and growing at quite a swift pace, there's obviously a lot of opinions and people still working their way in trying to find out where they sit on certain things and certain topics. This whole concept of the hill that you would die on is basically what opinion do you hold that you would really fight for or defend in a healthy way, obviously. But what is the one thing that you would defend and you would like? peg them down and be like, I'm not moving from this point and you have to defend it. What would that be?Okay. Erik: I have a lot of those opinions, but I think the one that I would like to explain here is that you should be learning more languages than you already know. So try out new languages that you don't know and try out languages that are very different from what you already know. So it's very easy. For example, if you know C sharp, just stay with C sharp and that's fine. But if you manage to find the time and the will to try something else, for example, F sharp or I don't know, try Kotlin, just do something different and see what are the differences. You'll be a much better programmer. I am absolutely 100% confident that me learning F sharp has made me a better C sharp programmer, even though they are different languages and they have different philosophies. But there is so much overlap between languages nowadays. When languages were still quite young, for example, Lisp looks nothing like C. So functional languages were very different from imperative languages. But modern languages like C sharp, like Java, like Kotlin, they like Rust, for example. They take inspiration from other languages too, but also functional languages. So when I was in university, it was always like the running gag goes, functional programming is great, but nobody's doing it. But that's no longer true. So even though you might not be working in a functional language, functional languages is everywhere. JavaScript has a lot of functional concepts. C sharp, there's advanced pattern matching, there's link, there's so much functional stuff. And what you're seeing is that languages are boring concepts all over the place. So it's not as clear cut what language is a functional language and what language is just an imperative language. It's more of a mishmash now. But I still think that there is a lot to gain if you start learning a new language. Some people said learn a new language every year. I try to do that. I can imagine that that will be annoying for people, and they will be overwhelmed. But try at least one different language and try and have it be a language that's slightly out of your comfort zone. And I promise you, you learn stuff, you'll learn a lot and you become a better programmer in general. And also for your language that you're already working with. Jonathan: and also, you're already working with. Obviously people are making new languages to meet a specific need. And so you're saying the imperative and the functional kind of the two kind of merging up a little bit. Do you ever see a situation where languages are going to fall away and we're going to be left with a couple of kind of core languages? Or is that naive? Erik: No, no, I think people are way too opinionated for that. So there will always be new languages. There will be new languages every single day, which is fine. But there will be trees shaking. There will the popular ones will in the end, they will probably persevere. So I don't see Java or C sharp going away anytime soon. But for example, C or C++ have always been massive languages. But we now see Rust, which is like a new take on trying to address the same issues, but with more safety. So built in safety. And it's a fantastic language that I actually should be learning more about. But it's interesting to see that Rust is now slowly making its way into the same, for the people are starting to use it instead of C or C++, which is a very good thing, I think personally. But for example, in Linux, you can now write your drivers in Rust. So you see always be C++. But they now support doing drivers in Rust. So that was quite a big step. So I think there will still be languages because it's you can't make a language that suits every single purpose. So that's also one of the things why I think you should be learning multiple languages, because different situations ask for different languages. So you can try and it's like the treating a what is it? The hammer like a like saw. I don't know what is the expression. Jonathan: The expression? It's like, okay, you need a saw, but you only have a hammer. What are you going to do? Okay. Erik: Yeah, yeah, something like that. It's a new, I think it's with a nail and a hammer, something like that, but I'm not a good at proverbs in English, but I'll not bother you with the Dutch version. But it's basically, if you only know C sharp and there's maybe a temptation to use C sharp for everything, but there might be better languages for doing systems programming or I don't know, AI, then C sharp, even though you can do it in C sharp, it doesn't mean that you should. So if you know more languages, you probably be better suited to making a good choice. That's more suitable to the domain that you are working in. Jonathan: Okay, so it's fun and it's beautiful with regards to the Exercism community What recommendation would you give the Exercism community this week that you should strongly suggest they should try out and it could be from Anything it can be, you know, go for a walk. Try a handstand. I don't know She okay you can and you can have more than one if you want you can you can get I know already what I'm gonna Say so you can have three recommendations Erik: So it's fun and it's useful. I know already what I'm going to say. Okay. Okay, the one that springs to mind is to check out the Dig Deeper tab that we now have. So we've started to, we added the new feature Dig Deeper where you can, once you've solved an exercise or at least once you've iterated on it, you can see approaches which is the different ways in which an exercise can be solved. And that's basically how everybody was learning in exercise, Exercism V1 compared with the added comments is by looking at other people's code and seeing how they solved it. So that's how I learned Haskell a lot apart from my mental comments. Just seeing, oh, you can do it like this. And then you would try it out yourself and you would say, hey, oh, this is really elegant and I can do more stuff with it and then comply this to other exercises. So being able to find these different ways of doing stuff, that sort of harkens back to the art almost of the programming, the way that you can solve things in different ways. So there are these different approaches. So I've written articles and approaches on the reversing of a string. So that's one of the basic interview questions that you get with IT interviews. How do you reverse a string? In C Sharp, there are a couple of different idiomatic ways, but they are different and they have different performance characteristics and one of them is really into performance, but it's less readable. So I like that you on the website, you can then once you've solved it in a certain way, you can say, hey, there are other ways too. And these are the benefits of doing it like that. And these are the trade offs. And it's these, it's these not only that you can see the different approach, but also we try to write an introduction document where we help you choose between them. So there are always trade-offs in IT. There's never a solution that's almost never, that's just the best. So you could always write things in a different way. So it's often, yeah. So the most readable solution is not always the best performing one. So helping you with making the trade-offs, understanding the trade-offs and making a choice between different approaches. That's also something that we try to do with the deeper tab. And I've been writing them in my spare time now. I have so much fun just writing up this information and just sharing it with people. So I would really encourage people to try out either writing them or just reading approaches. I know not every single exercise has them. We've just started out with this feature a week ago. So we'll be fairly limited to a couple of C Sharp exercises, but we will expand on this greatly. And we take community PRs for these types of things. And I'll gladly help you write the, and get this over the line and you can share your knowledge of your language. So I think that's one thing that people always like. If they like a language, they would like others to like it too. So approaches are a very nice way of showing off what your language can do. Go check it out. Yeah. Jonathan: Go check it out. Have you got any others for this week? Erik: Um, well, with the risk of sounding a very much Exercism minded person is I'm really like the Exercism forum. So one thing that in my career I've found is that it's really hard to find a tech minded community of people that are that are that is a safe space almost where you can discuss things without trying having other people make you feel either stupid or getting to arguments or be combative. So I really like how we trying to with the forum make this a very safe and happy place for people, but also something a place where you can meet up with very good programmers. So people that are very skilled and they have great insights into their languages or into the program space. And it's I really enjoy just reading what other people have written. There's a there's a thread on what are your favorite programming books. So and I've already put some books on my my my short list of books to read because there's just Yeah, you don't come across every single book. But other people's have read them. You can use the wisdom of the crowd. Basically, Jonathan: people's having then we can use the wisdom of the crowd basically that thread and I'm sure there's gonna be some real gold that we can extract from from that but I mean you know that's that's really cool Eric I think if you want to have one more recommendation you're welcome but otherwise we'll we'll start just pulling things in a little bit but any any further thoughts or comments yeah let's continue to share Erik: mhm Ja, das kommt in das Video. No, not really. I was trying to find a third one. Jonathan: And I'm really, I'm always trying to find a third one. In that case too much. But Eric, thank you so much for this time. It's been really cool just to hear your story, just to hear how that's crossed over into tech. I specifically really enjoyed hearing a little bit about history and maybe that's something you might wanna think about and share a little bit further about how history and coding and all of that kind of overlap at some point. But thank you so much. It's awesome having you on team and I've definitely and will continue to learn a huge amount from you. Big shout out to you because you've passed 100,000 rep points on the Exercism website. I know you'll say that there's the reason that you did that is because you cheated, but that's still, we'll just take it as a remarkable achievement anyway. So thank you so much. And yep, if you are listening to this and you haven't come across Exercism, go check out Exercism and I'm sure you'll find Eric somewhere along the line in that space. But Eric, thank you. I've really appreciate it. And I will pause this recording and we can just touch base off the back of this, but thank you for your time. And I hope you've enjoyed yourself as much as I have. This has been great. Erik: Don't mind if I do. Awesome. I did. I did. Thanks a lot.

More Stories from our community

Listen, learn and be inspired by our community members.