199. How to start learning tech with Beege (part 1)

While everybody who wants to learn how to code will approach this challenge in their own way, most programmers would agree that having the help of a supportive community is hugely beneficial. Today we talk about the process of learning programming with Bryan Berry, AKA ‘Beege’. Bryan started CodeSeoul, an international community dedicated to connecting coders of all levels and backgrounds, and today he shares a bunch of ideas that anybody interested in getting into tech would find very helpful. We discuss the different learning paths available to beginners as well as a few languages and different reasons why each one might be a good option to learn first. Bryan talks about the reasons he started CodeSeoul and shares some interesting ideas about the power of community for keeping people connected to a particular discipline. He also weighs in on the idea that people with certain kinds of brains or bundles of past experience would find code easier or harder to learn. So tune in for a great conversation filled with actionable tips to help you get into programming if you have been putting it off!

Key Points From This Episode:

  • Introducing Bryan Berry and his coding meetup in Seoul called CodeSeoul.
  • Whether there is a ‘best way to learn code’ considering individual learning styles.
  • Strategies of Bryan’s for recommending the best language for a newbie to learn first.
  • Pros and cons of learning languages with many conventions first.
  • The idea that learning an ‘easier’ language first might help with motivation.
  • Bryan’s thoughts on the value of joining a dev community if you want to learn code.
  • How Bryan started CodeSeoul and the great responses he got from the participants.
  • The challenge of learning code and some skills that help like resilience and taking breaks.
  • Whether a person’s past experience plays a role in how difficult it is for them to learn code.
  • Most programming requires no math but some math concepts can still help you learn code more quickly.
  • A study that proves the brain’s language regions are most active while writing code.


{{addCallout()}}

Transcript for Episode 199. How to start learning tech with Beege (part 1)

[INTRODUCTION]

[0:00:00.5] MN: Hello, and welcome to The Rabbit Hole, the definitive developers podcast, living large in New York. I’m your host, Michael Nunez, our co-host today.

[0:00:08.9] DA: David Anderson.

[0:00:10.5] MN: And our producer.

[0:00:11.4] WJ: William Jeffries.

[0:00:12.7] MN: And today, we’ll be talking about how to start learning tech.

[0:00:17.9] DA: I feel like any day is a good day to start learning tech even if you already know tech.

[0:00:24.1] MN: Mm-hmm. What was that quote? It’s like, the best time to start is some time ago, and the second best time is right now. When you first think about tech, you should have learned it and if you didn’t, start learning it now. 

[0:00:38.3] DA: Luckily, we’ll have some help with that today.

[0:00:39.7] MN: Yeah, we have a special guest with us, we have Bryan Berry, who goes by the name Beege. Beege, how’s it going?

[0:00:46.0] BB: Not bad. How you guys are doing today?

[0:00:48.2] MN: Doing all right. Doing all right. Tell us a little bit about yourself.

[0:00:51.3] BB: I am a software engineer by day. I’ve been doing various sorts of tech since 2010 and I moved to Korea about four and half years ago and started a tech education group called, CodeSeoul September 2016. I’ve been doing that on the side for a little while now. 

[0:01:13.3] DA: Founder and organizer. I love the name, CodeSeoul. It just sounds like it is core to your being that you are coding.

[0:01:24.6] BB: Yeah. I can’t take credit for it though. There was a brief hiatus I took and they changed the name on me while I was on that hiatus. I was like, “What is this guys —?”

[0:01:33.2] WJ: What was the original name? I didn’t know this piece of work?

[0:01:36.8] BB: Before I came to Korea, I was part of the group called Learn, Teach Code LA. When I came over here and started the group, I called it Learn, Teach Code Seoul. They’re like, “Nah! Let’s cut off the learning, teaching.”

[0:01:48.3] MN: We’re just all about code, baby.

[0:01:52.1] DA: It seems like eat, pray, love, code, Seoul.

[0:02:01.0] BB: It’s good though.

[0:02:01.7] DA: Yeah. That’s awesome, though, right. I’m glad to have you here today. When do you think is the best way to start learning tech, like the very first thing?

[0:02:13.5] BB: There’s many different ways to go about learning and it will be different for each person. Some people like books, some people like videos, some people like a classroom setting. I think it doesn’t really matter which you choose, just choosing whichever one works best for you. Because people will be like, “Oh! This is the best way to learn coding,” but that won’t be true of everyone. There’s probably a bit of trial and error involved at the beginning.

[0:02:40.0] DA: Yeah. That’s like a really difficult thing, like as someone who is trying to encourage people to deepen knowledge, and like, “Oh! I have the best book. I have read the best book on Python and it taught me so much.” But then you’re like, “I hate books. I’m never going to open a book. I’m never going to finish a book.” I think that’s a good call out, like there’s a lot of different learning styles, and lot of different kind of materials that work with different people.

[0:03:11.7] MN: I would throw in there like I guess how I see you, Beege, like does programming language matter when you start learning or should it be any? Because I have conversations with people who are like, “Oh, yeah! If you want to learn how to program, you should start with C++,” which is crazy thing to say. Some people start with Ruby. I think my first programming language in which I fell in love with it, with programming was in Java, like many moons ago. Is that the same in terms of like learning style? Does language also applies to learn whichever one resonates with you? 

[0:03:47.4] BB: I kind of have two strategies for approaching that, because people ask me that all the time. The first strategy is, pick whatever is most accessible to you. If you have a buddy who is a Python engineer, go learn Python. If you have a buddy who’s a C engineer, maybe they can help you learn C.

[0:04:08.1] WJ: Maybe find a Python buddy.

[0:04:09.8] BB: Yeah, there you go.

[0:04:11.0] MN: If you have a C buddy, go find a Python buddy.

[0:04:12.7] DA: Yeah. But like, you can do all kinds of cool embedded system stuff with C, like you can hack the universe. 

[0:04:21.7] MN: Hacked up planet.

[0:04:22.7] BB: And starting super basic, whatever, right? But the second strategy kind of depends on the person’s motivation. If the person has a history of like being highly motivated to do difficult things for a long time, I’ll say, pick up something like Java. It’s arguably a more difficult language to start out with for someone with zero experience. But when they inevitably want to pick up other languages, it will be easier for them to do. Whereas, something like Python or Ruby, print ‘hello world,’ a lot of people can understand that right off the bat. If someone thinks that motivation might be a problem for them, I encourage them to go that path instead. But overall, I usually tie it off with, it doesn’t really matter which one you pick, your starting language will probably not be your primary language in a year or two, so just role with it.

[0:05:20.6] DA: Just get it ready for that. I mean, JavaScript is there, like we do know all those things. But yeah, you’re describing my path for learning code, of learning Java, which was definitely the hard way. But then I also like — taking away the types and the structure that Java gives you, which is like numerous. There’s a lot of structure and convention to Java. And if you do something like Python, it feels like chaos, but it was okay to learn, like it was fun. But I just had to reconcile with the fact that like, anything could happen and it was fine. I came to terms with it eventually. 

[0:06:06.6] BB: I remember when I first learned Python, I was like, “Oh! All the guardrails are gone Goodluck! Okay.” 

[0:06:13.0] DA: All right. Yeah. What do you mean I can define a method five times? Then only the fifth definition of the method matters, unless there’s side effects of the definition in the previous method. Okay. Whatever. Who cares?

[0:06:26.8] BB: It’s just a mess. Yeah. In the end, whatever language you pick isn’t that big of a deal. Just pick something and get started. Otherwise, you’re going to spend so much time worrying about how to do it the right way that you won’t do it and doing it is the important part.

[0:06:43.0] DA: Yeah. I feel like there’s a good lesson about agility as well in that. It’s like an agile mindset for like learning a programming language. It’s like, “Okay, anything is better than nothing.” You need to have some value to show for it, some demonstration of like doing the thing. 

[0:07:05.8] BB: That also, learning programming honestly is brutal. It is an intense journey, and getting some kind of results quickly will keep your motivation up, so that you can keep going, and just doing something and seeing like, “Oh my God! I printed hello to the console. Whoa!” It’s a big deal. 

[0:07:27.5] DA: Yeah. I feel like a lot of this is like kind of also like framing the job to follow curiosity in like a really innocent way, and like kind of playing with it. Because like if you just feel comfortable with the fact that the code can change and you can mess around with it, and do different things or like have a Repl. Repls are great, like just being able to write code and see the result right there. That’s a really clutch tool to have, which I think Java has now. I think they have it. Now that they’re in like Java 15 or whatever Java they released.

[0:08:08.0] BB: I’ve been out of Java land for a long time.

[0:08:10.5] MN: Fifteen, fifteen I think. You called it right. 

[0:08:12.4] DA: Is it. 

[0:08:16.6] MN: Yeah. I think the Java 15. Correct us if we’re wrong. Had to do a quick Googly moogly for that one. I do have a question though for you Beege. All right. I got my programming language, I decided for this journey, out of Fortran, and Assembly, and C, and Java, Python and decided I’m going to learn Python. I know that my style is of learning is just, I’ll say videos. Do I just like sit in the room and just consume videos for hours on end, for weeks, for months, and then come out stronger as a Python developer ready to take on the world? Do you have any thoughts on learning like alone? Should I join a community? Should I do it by myself? It’s a little but different for me given that I went to college, I sat in the classroom for it. But now, you can learn programming very, very differently than what you could have done 10, 12 years ago. Is it better to do it by yourself or use a community with you to learn and grow?

[0:09:17.7] BB: That’s in addition to helping people figure out which language they want to do, the next thing I tell them is, “Find a community.” Because humans get attracted to shiny things, but then we don’t find them shiny for very long. What keeps us around for a given thing is usually the community that we build around said thing. It’s actually kind of funny. In college I did a research project about why people play MMOs. Out of all the different massively multiplayer online games I looked at, people would start playing them for any reason. But the people would stick around all for the same reason, because they developed a community there and they wanted to keep in touch with the people who are part of that community. They have developed personal ties and they felt personally invested in the community. So that’s one of the very early things I tell people is, find someone to learn with, find a friend who also wants to learn, find a community or meet-up group that also wants to learn. Or worst case, start your own.

When I started CodeSeoul, it was about a month after I arrived in Korea, and I was like, “I don’t speak the language here. I know one person here. I’m just going to build a programming community and make friends that way. It worked.

[0:10:42.9] DA: Right. I mean that is a language I guess, like in itself.

[0:10:47.2] BB: Yeah, kind of.

[0:10:49.3] MN: I speak Python, and just don’t ask me to output anything because then that might be a little difficult.

[0:10:55.7] DA: Which is your friendly neighborhood [inaudible 0:10:56.9].

[0:11:00.9] MN: That’s awesome. I didn’t think about that, especially with the MMO aspect and learning a community. I imagine, you with one other person that you knew in Korea to start a community of learning how to program probably brought all sorts of people who are interested in either helping or learning. In that way, you got to meet people that way. Is that safe to say?

[0:11:24.0] BB: Yeah. At our first meeting, I had booked a room for 15 people, we ended up having 30.

[0:11:30.6] DA: Oops!

[0:11:31.6] BB: Yeah, oops! Big oops. The demand is there, right? But I was like, I cannot teach 30 people at once, that is just absurd. I’m sure, everyone is going to want to learn different things. We actually laid out different technologies and things that people could learn, and they kind of self-organized. I was like, “Okay. I can teach this. I can’t teach these things. Who wants to lead a group to study together?” And people just self-organized and ran with it. I think people shouldn’t be afraid of starting a community if there isn’t one already. Because the demand is out there, people want to do it and they will put forth the effort to do so.

[0:12:12.3] DA: I mean, that is like a great skill to have to as someone who maybe is trying to break into the industry, like you want to be able to self-organize and help lift up your peers, like by teaching them and learning from them. That’s like a pretty cool like kind of microcosm of I think a healthy like tech organization, where you’re always going to have to learn like that.

[0:12:43.6] BB: Yeah. Even when you’ve gotten beyond the beginner phase, as I’m sure you guys are fully aware and have probably talked about before. You don’t stop learning as an engineer. So being able to self-motivate, to create your own structure for learning is a super valuable skill. So just to build on what you said.

[0:12:59.2] DA: Yeah, totally.

[0:13:00.4] MN: And if you’re listening, you think that you become an engineer, and then you just learn, and then you just stop. This isn’t the career for you. You’re constantly learning. I just want to reiterate what Beege had mentioned. 

[0:13:12.9] DA: Yeah. I think that’s also one of the reasons why we always like talk about pairing, we always rave about pair programming. Because that’s like a little tiny community that’s focused on one problem, and really easy to exchange information. I mean, I know like especially when you’re starting out learning programming there are a lot of things that are like really minor bumps to somebody who has experienced something. Like you’re talking about learning Java first. I’m thinking about all the compilation errors, and type issues, and what have you. There are really easy ways around those, but it will seem like absolute nonsense when you’re starting out. 

[0:14:00.0] BB: Yeah. That’s actually the next thing I usually tell people when they actually get started, is learning to code is really learning how to be resilient, because nothing works on the first try. And if it does, it means there’s probably something horribly, horribly wrong and you just haven’t seen it yet.

[0:14:20.2] DA: Yeah, definitely.

[0:14:23.0] BB: Yeah. But learning programming is really just learning how to get beaten down by the compiler, or get beaten down by errors and to just get back up. It’s just going to keep punching you in the face and you just need to say, “Thank you, sir. May I have another?”

[0:14:39.5] MN: Or take a nap, right? I think that’s like another thing that I still continue to learn, is like if I’m constantly not getting this thing to work. I’m like, “Okay. I got to step away. I got to like go for walk” or maybe when I come back, the punch to the face would be less painful, but I’m already used to it. Like I know it’s coming. But yeah, it is like persevering through the compiler, throwing these weird errors and having to search, see what the problem is. There is that stack overflow that helps you get through to the next thing. Then it is like, “Yes!” Small victory. Then it’s like another huge mountain to climb.

[0:15:19.9] DA: Yeah. Sometimes you need a moment of self-care. 

[0:15:24.4] MN: So if you’re getting punched in the face, you can step away. It’s fine. Don’t hurt yourself too bad.

[0:15:29.8] BB: Yeah. Definitely take breaks. Like even, I’m sure you guys can echo this kind of experience too. Sometimes you’ll just be banging your head on a problem and you just grab a buddy and say, “Let’s get some coffee. Just like 30 minutes away.”

[0:15:46.0] MN: Yeah. I mean, I’ll inform you as people from the United States, we just have to go into our kitchens to get coffee. Going to a coffee shop is a little bit more difficult to do at the moments. I know you got it made in the shade over there in South Korea, but things are a little more difficult for us to just go out for a cup of coffee with my coworkers, but we’re still doing it. I got my own coffee grinder the other day. I’m like officially like a barista now. 

[0:16:17.7] DA: So many bullet points for your resume this year. 

[0:16:20.0] MN: Oh, yeah. I got a house. I got a coffee grinder. 

[0:16:24.4] DA: Right. You’re like a landlord, and a tenant, and the super and the barista.

[0:16:31.4] MN: There you go. I got an electric one. Whenever I’m upset and I want to make some noise, I just got to turn that bad boy on and make some coffee. That’s what I do now. 

[0:16:40.7] DA: That’s not screaming, right? Because that’s not resilient if you started screaming at your computer. You just grind some coffee and like, look angry.

[0:16:49.2] MN: Yeah. I’ll let another machine do the screaming. I don’t scream at the machine that does the computing. I’ll let another machine do the screaming.

[0:16:56.6] DA: Yeah. But I really love this, this point about like learning a code is learning a form of resilience. Because the value that we got from programming and messing something up is just like a signal that tells us what we need to do, but we should need to interpret that really sometimes esoteric signal in the computer.

[0:17:19.9] BB: Yeah, there’s a key point of when people just start and then when they kind of have a grasp of the language, and then they’re focusing more on actually building the application rather than wrestling with the language. I remind them of that point or I remind them of errors at these two points saying, errors are meant to help you. The big red text seems scary, like, “Oh crap! I broke it.” But really, it’s there to give you information to help you solve the problem. That takes some learning, because we’re just used to like, “Oh! Red text is bad” kind of thing.

[0:17:53.1] MN: Wrong.

[0:17:53.7] WJ: One thing I hear from people who are just beginning to get interested in tech is, sometimes they’ll say things like, “I don’t have the aptitude for this. I’m not capable of learning these kinds of things, because that’s just not how my brain works or,” for whatever reason. Is that a thing? Do you think that’s a thing?

[0:18:13.3] BB: My view on that has changed a lot over time, over the four years that I’ve been doing this. But I think I’ve circled back to the original thought of, people come up from various backgrounds, and those various backgrounds have basically trained that person’s mind to think in a certain way. This is effectively what transferable skills are, so there will be people who have a lot of transferable skills from their existing backgrounds that make starting with programming much much easier. And there are people who have no transferable skills from their past experience coming into programming. I would say, it is certainly possible for anyone to learn it; however, for some people, it will be significantly more effort than others. Because you kind of have to retool how you think about problems, how you think about information, how you structure things in your mind. That can be very difficult.

That usually transitions into the point where I tell people, “Don’t compare yourself to other people learning because they have different experiences than you did. They’ve already been thinking in an engineering analytical mindset. Whereas maybe, you’ve been thinking in more of a kind of fuzzy creative rather than structured creative mind.” That’s a really difficult hurdle to come over for people, but by kind of getting this point across like, it’s going to be more work for you, but you can still do it. Usually, that ends up helping people.

[0:19:48.8] DA: Yeah. I like that a lot. I think that also like ties in to, one of the challenges of like diversity in tech. Because like certain backgrounds from a young age like will queue your brain up to receive information about how to program a computer better. Like if you’re a kid sitting in the basement, playing video games all day, and just like hacking on the internet or whatever, then you’re kind of primed in a way that helps you that people with other backgrounds may not receive. I remember like there was a great podcast from Planet Money or [inaudible 0:20:28.5] about like diversity in tech in the ’80s, and it was like, all of a sudden like video games became a thing and women were suddenly at a disadvantage, when they came to University, because like all these freaking nerds have their computers at home, their Commodore 64 and they’re programming them to like play games. And the girls that were coming into these programs, the women learning programming were like, “Wait! I was just living my life. I wasn’t doing that. Why don’t you like teach me these skills?” It was discouraging.

[0:21:04.0] MN: It’s very interesting. I didn’t realize that, one of the things that I’ve heard, like getting into programming in my community is like, people would assume that because I was interested in programming that I had to be good in math. Like, “Oh! You must be really smart in math, like math was your favorite subject of all time.” I think to point out what you mentioned, Beege, is that, mathematics is a form of transferable skill that would get you from math to programming. But I wouldn’t say that that is the hard requirement in order to be a programmer, right? If you understand the concepts of functions, and you got your — I’m going to say really silly functions, like whether I suck at [inaudible 0:21:51.9] or like the Pythagorean theorem or crazy stuff like that. Just like to give you an idea of using those tools and then apply it to questions that may be asked in mathematics gives you leeway into programming. But it doesn’t mean that you need to know math to know programming.

You can still start out learning how to do [inaudible 0:22:10.5] and not be savvy in mathematics is what I’m saying. It’s a really, really great point that you brought up with transferable skills. It’s a good way for me to explain to people. You don’t have to be a math wizard to program. That’s what I would tell people.

[0:22:25.9] WJ: Yeah, we used to tell people, I minored in math and it was a huge waste. I have never had to do an integral in programming.

[0:22:32.9] DA: You never solved the system of equations?

[0:22:37.2] WJ: I think maybe if you work on something super math heavy as your domain. Then in your programming, you’re going to need to do some math heavy stuff. Like if you’re working on building physics engines, right? Are you doing something that’s like very low level for graphics, where you need actual geometry and linear algebra? But like 99% of the jobs that are out there for programming, it’s like, we’re making an e-commerce store. Do you know arithmetic?

[0:23:11.9] DA: Like what math am I doing? I’m counting, I’m summing, I’m multiplying two things together, I’m dividing, maybe I’m subtracting.” Yeah, it’s the baseline thing. I like that [inaudible 0:23:22.2] like all your triangular Pythagorean theorems and stuff, like that stuff totally got me in there.

[0:23:32.4] MN: Yeah. But like it’s not that math is a requirement to learn programming. It’s like what William mentioned, like if you’re doing physics or the example that came to mind is like, the Black Scholes model in finance. Like if you wrap your head around that, then maybe math will be helpful, but you’re doing a login page, you’re working on a 404, stuff like that. 

[0:23:56.6] DA: You got a different source of frustration than math.

[0:23:58.8] MN: Exactly.

[0:23:59.9] WJ: They put programmers into brain scanners. This is an experiment they did like a couple decades ago. Super old study, but they put them into like EEG machines and stuff, and they were trying to figure out what part of the brain people use when they are programming and they were expecting it to be all over the map. And there would be like bunch of math, and science in other areas of the brain, and ended up all being in one section. It was the section for language. This is the same part of the brain that people use when they’re reading and writing. 

I was like, “Oh! That actually checks out.” I’m like, “That seems right based on my subjective experience of programming. I feel like mostly what I’m doing is communicating. I’m communicating with the computer. I’m communicating with other engineers who are going to have to read this code and I’m communicating with myself, like I’m trying to express this idea in a way that I can understand well enough to easily modify and build on.”

[0:24:57.5] DA: Right. Yeah. I like that idea. Like writing is the technology that leverages words to put thoughts into other people’s heads. But programming is the technology that like puts thoughts into computers heads. 

[0:25:13.3] BB: Yeah. That holds us with my experience too. In one of the past meet-up groups I was a part of, she was actually a slightly older woman who was a technical writer. She didn’t really understand the tech that she was writing about. She was doing more kind of editing things. Once she got past the point of learning how programming languages work, it was way easier for her, because she had the writing background, she had the writing experience and she could just roll with it. That’s kind of an example of unexpected — well, maybe broadly unexpected transferable skill that was able to just — after she got over that initial hurdle, she could just sprint with it. It was great.

[0:25:52.8] DA: Love that.

[0:25:53.8] MN: Beege, how can people find you?

[0:25:56.8] BB: The easiest methods are the Internet. If you search for codeseoul.org, you can find our website there. If you’re not familiar, it’s S-E-O-U-L. We have a discord channel. You can join out community there even if you do not live in Seoul. We’re happy to talk and help you out or just have a discussion there. Everything is good.

[0:26:20.7] MN: Awesome! We’ll talk more about after you’ve identified the transferable skills necessary to program, what are some of the next steps? Do you go knee deep in your books, watch videos and what to do after you watch all those videos?

[0:26:34.9] BB: Start writing.

[0:26:38.2] MN: All right.

[END OF EPISODE]

[0:26:39.3]  MN: Follow us now on Twitter @radiofreerabbit so we can keep the conversation going. Like what you hear? Give us a five-star review and help developers like you find their way into The Rabbit Hole. Never miss an episode, subscribe now however you listen to your favorite podcast.

On behalf of our producer extraordinaire, William Jeffries, and my amazing co-host, Dave Anderson, and me, your host, Michael Nunez, thanks for listening to The Rabbit Hole.

[END]

Links and Resources:

The Rabbit Hole on Twitter

Stride

Michael Nunez on LinkedIn

Michael Nunez on Twitter

David Anderson on LinkedIn

David Anderson on Twitter

William Jeffries on LinkedIn

William Jeffries on Twitter

Bryan Berry on LinkedIn

Bryan Berry on GitHub

CodeSeoul