While it may be true that coding is something that anybody can do, that doesn’t take away from how difficult it is to learn. Join us for the second part of our conversation with brilliant software engineer and instructor Bryan Berry as we dive into what it takes to learn to code. Early in our conversation, we focus on the extra non-language-specific skills that you need to pick up to become a fully-fledged developer. From specializing in certain roles to deciding what type of programmer you want to be, we talk about the difficult choices that beginner coders need to make. After reflecting on why programming involves continual learning, Bryan shares some anecdotes from The Codeless Code website. Later, we discuss how early coders can overcome imposter syndrome before touching on why networking is so useful to growing your skills. Tune in for more insights on learning how to code.
Key Points From This Episode:
Transcript for Episode 200. How to start learning tech with Beege (part 2)
[0:00:01.9] MN: Hello and welcome to The Rabbit Hole, the definitive developer’s podcast. Living large in New York. I’m your host, Michael Nunez. Our co-host today —
[0:00:09.6] DA: Dave Anderson.
[0:00:11.8] MN: And our producer.
[0:00:12.2] WJ: — William Jeffries.
[0:00:13.8] MN: And today, we’re still learning how to tech with Beege. Hey Beege, how’s it going?
[0:00:19.4] BB: Not bad, how are you guys doing today?
[0:00:21.6] MN: Doing good, I’m doing good. Last time we spoke, you gave us an anecdote about a woman who was a technical writer. And she was able to actually pick up the skills necessary to learn how to program. In terms of the transferable skills, once people have identified that, I imagine it gets harder from here? Is that safe to say or —
[0:00:44.8] BB: Yeah. The whole process is hard. A lot of the advertising you see for learning resources like, “programming is easy, anyone can do it.” While it’s true that anyone can do it, it is absolutely not true that it is easy. Programming is not easy, if someone tells you it’s easy, they’re lying to you. This stuff is hard, there is a reason people get paid a lot.
[0:01:10.2] MN: Yeah, I imagine that, you know, that’s probably like a selling tactic, right? People are saying that it’s easy so that you download it and this little — you’ll totally understand it but it can get really difficult, there are just like a lot of things, depending on the language complexity and how to do certain things.
[0:01:28.0] DA: Right, and actually, there’s, they’re flash resources where it’s like, “Learn Java in two days.” Or five days or 30 days or I think a month or two months and — yeah, you couldn’t maybe learn Syntax in a weekend if you’re on the ball and you have the context of a different language.
Doesn’t really help me if I learn Java but I’m programming Java like I would program Python. There’s kind of an idiomatic way to do it, that takes a long time to internalize. And help from other resources and broader community to internalize.
[0:02:12.3] BB: Yeah, funding the online resources, reading through them, getting the information in your head is kind of the — this is a dangerous word to say, an education but it could be argued that that is the “easy” part. Getting to a point where you can actually build an application yourself from scratch — most of the time I quote people, like, minimum two years.
Which sounds absolutely terrifying but it’s two years assuming that you're not doing this full-time, kind of thing. It assumes that you’re on the ball and that you don’t have a ton of transferable skill already. But it takes a long time because it’s not just learning the language, it’s learning how do you build an application — “What are the tools, how do I share code with people, how do I put my website up on the internet.” All these kinds of things, there’s a whole bunch of additional information you need to learn.
That can be a point of frustration for people because they’re like, “I built the code, why can’t I get it out there?” It’s hard man.
[0:03:15.7] DA: Yeah, that’s also something that you might be able to get away with not knowing in your first job. To start from scratch is a really specific skill that’s separate from just writing the code and iterating on a base that’s already there. Repeating patterns and you know, collaborating on people like if there’s a blank canvas, that’s very intimidating and that’s like how a lot of people are learning.
[0:03:45.8] BB: Yeah, that’s a particularly more difficult point for people who are not going through traditional education systems to learn because when you go to university, you get that piece of paper that gives you a lot of clouts already. And the reliance on your portfolio is less. If you’re self-taught, your portfolio is where all of your credibility is going to come from.
You can’t just have someone go, “Here’s a project that you can use for your portfolio, just edit it,” kind of thing. That’s not going to fly, you're going to have to start from scratch some more difficult path.
[0:04:20.3] MN: It’s even like, in programming, like how to organize your portfolio, right? Like using GitHub is like a whole other set of skills that you would have to learn so that people can visit your GitHub and see how you’re using your time and learning while building these projects.
I spent some time mentoring individuals from the Bronx and today actually, he was like, “Hold on one second because I just learned about React and everything is great but I don’t understand why I need to do — get branches. I don’t understand why I need to branch out my code. I’m working with the team and we just all push in the same branch, right?” I’m like, “No, no, no, you don’t want to do that.” — There’s like all these different etiquettes that has to happen to make code easier”.
[0:05:08.3] DA: No man, this is trunk-based development. They’re like a level above.
[0:05:11.0] MN: Yeah, no. Bobby wanted to do trunk based development but the team lead I guess, wanted to do GitFlow so I had to explain what GitFlow was and all these other stuff and Bobby thought that when he had to create a branch, he had to create a branch for every file that he was changing. And then ask for a pull request and like, this whole bit that’s outside of programming, right?
[0:05:44.4] DA: Right, it’s really like the collaboration, how do you — working as a single person just like fire-hosing crap into your local machine and maybe make that command or not and then like, how do you scale that up?
[0:05:59.0] MN: Yeah, it was like a great opportunity for this person to learn but I then I realized, man, I had to — let me get ready to explain what Git is because this is such a massive thing that one would need to learn to collaborate with other developers. It’s not a programming language but it’s a thing that we do every day.
[0:06:15.9] BB: Yeah, I’m really glad that you brought up Git as an example. Consistently without fail. Our Git and GitHub classes are by far the most popular classes we do because no one covers that. They just kind of assume you know it already and people are like, “I don’t know what the hell this is, I need to open a terminal now and what?”
[0:06:37.9] MN: Yeah, I mean, I’ve seen the Git Gooey on a windows machine and that makes me want to run to a terminal, which is hilarious. But I couldn’t imagine, you know, if I had a Gooey 12 years ago, I probably would have used it because it was just like so — the terminal is intimidating but that’s another thing you have to learn.
[0:06:59.1] DA: Sometimes Gooey is cool but yeah, I’m packing the Gooey sometimes, I use my IntelliJ.
[0:07:04.8] MN: Yeah.
[0:07:05.7] DA: Do some commits.
[0:07:07.3] MN: Yeah, those are great. Do a little “click-a-reeno, boom-boom-boom at it.” Do a little type.
[0:07:12.2] DA: Good div, yeah. Keyboards never leave, pretty good but you know, there’s like the fundamentals that are more helpful to learn from the command line that are abstracted away when you're looking at it from a different angle within the Gooey or what have you.
[0:07:31.7] BB: That’s something that my student’s kind of hate me for a little bit, especially when I’m teaching Java. I’ll teach them how to compile on the command line and then after the first four or five classes, I’ll be like, “Here’s IntelliJ” They’re like, “What? We didn’t have to do this?”
[0:07:51.8] MN: My gosh.
[0:07:52.7] BB: I’ll be like, “Well yeah, but now when you don’t have IntelliJ, you know how to do this with just Java” and they’re like, “Yeah, okay.”
[0:07:59.5] MN: I guess.
[0:07:59.7] DA: Then you get the ruler out and you smack their knuckles. “This pain is helping you.”
[0:08:10.6] MN: Dave as an instructor, no way.
[0:08:13.9] DA: I didn’t start a meet-up, nobody joined my community.
[0:08:18.7] MN: I can see why, you’re out there banging people’s knuckles.
[0:08:23.1] WJ: Pain is ignorance leaving the body.
[0:08:25.5] DA: Yeah, it’s the best of modern programming education with a catholic school education from the 1950s.
[0:08:32.7] MN: Yes.
[0:08:36.5] BB: Yeah, transferable skills, learning beyond just the programming language, there’s a whole lot. It is not easy and that kind of brings up another point of, once you get past the point where you know some language, you’ve got the tools to kind of build a standalone project. Then comes like this big, almost existential moment of terror for people learning of “Okay, what kind of engineer do I want to be?”
Because now they’re like, “Cool, I know how to write code, I know how to build an application but now that I’m trying to figure out jobs, I’m like, oh man, there’s all these different job titles I don’t know what any of these means.”
The specialization of knowledge is necessary. That is basically a whole another journey all over again, which can be a little daunting but we try to inform people about that early on like, “Hey, check out this website, Roadmap.sh. Here’s a few different career paths you can go down and all of the items you need to learn.”
That can be a little daunting but most people take it pretty well because it lays out a path or at least options of paths.
If DevOps is your thing, you want to be able to do that. That’s a whole other journey that people can start after learning how to program or while they’re learning how to program.
[0:10:22.3] DA: I’m looking at this website, Roadmap.sh and it’s pretty fun.
[0:10:26.3] WJ: Yeah, me too, this is a great resource. Roadmap.sh.
[0:10:31.0] BB: Definitely props to the folks who put that together, we use it all the time and our second popular class is survey of technology, where we basically cover what kinds of engineers can you become. What kinds of skills will you learn, what kinds of business aspects will you be responsible for as this kind of engineer.
Then we kind of go through the different roadmap paths and be like, “You would become responsible for this, this is what this means,” kind of stuff. And at that point, people, after learning a little bit of programming and then getting this information, then things really start to come together to people. And they can kind of start seeing the light at the start of the new tunnel, as it were.
That’s like a really rewarding moment when people are like, “I know what I want to do” it’s like, “Yeah, you do, yeah.”
[0:11:21.3] DA: Amazing. I’m looking at this chart and like, if I knew nothing on it, I would like, be ready to scream and run away. There’s so much stuff on here. But you know, I will say, I’m looking at it and I’m not an expert in any or most of — or like, not most but like a lot of these things. And you know, that’s fine but I’ve also kind of learned how to learn and gotten comfortable with not knowing.
[0:11:54.2] MN: Yeah, I’m looking at the DevOps one specifically, and that scroll bar is kind of tiny. You just keep on scrolling through the whole thing and then at the very bottom of, like, I saw it in the dev ops one and in the front end one and I think we mentioned this in the previous episode is — there is a line that goes on and it says keep learning. And then it just goes down and ends. Because that’s what you will continue to do regardless of what programming language you start with, you will continue to learn as time goes on and whatever field you want to find yourself in.
Whether it’s frontend, backend, DevOps and many others that are in roadmap.sh. This is pretty dope, it reminds me of like, the World of Warcraft skill tree, like, what kind of rogue do you want to be, right? Do you want to be Bobby who pickpockets people all the time or do critical damage, like, how does that work? It’s pretty cool, I like this. It is like the skill trees for programming for real.
[0:12:49.3] BB: Yeah man, this is great. And if a person is the type who really enjoys learning, like, who likes coming across something new and really wants to get their hands in it and figure out exactly how it works, software engineering is the way to go. I don’t know — granted, I’m a software engineer so I am a little biased. But I would argue that there is probably not many other professions that let you have that continuous learning experience as deeply as software engineering does. Oh man, it feels good when you’re like, “I can say I know React now. That’s right.”
[0:13:24.6] DA: Yeah and then they change it all and they add hooks and then you’re like, “Oh I don’t know anything anymore. It’s all garbage I’m useless” but it’s fine.
[0:13:36.4] MN: Then you learn again though that’s the thing. You’re constantly having to learn React hooks. It makes your life easier supposedly.
[0:13:45.1] DA: Everyday waking up and being like, “This is like Memento.” I’m learning focus all over again.
[0:13:49.9] MN: Yeah, all over again. You got to check your tattoos like, “Oh man, how do I do this?”
[0:13:54.2] DA: Use Memo — what is happening? Why would you do this?
[0:13:59.0] MN: Yeah.
[0:13:59.7] WJ: But one day, someone will need to do some serious react archeology and you’ll be like, “Wait but I was programming back then and I know all these patterns.”
[0:14:11.1] MN: Yes.
[0:14:11.8] DA: Oh yes, the class-based components, all of the event hooks.
[0:14:17.1] WJ: And then you’ll go to make a change and realize you forgot all of it.
[0:14:20.4] DA: Yeah. It’s like, “I’ll just write it in the docs, it’s fine.”
[0:14:25.2] BB: It reminds me of there’s a website that I read through now and again called The Codeless Code. It basically is a software production shop kind of as a Zen monastery kind of thing going on and they’re talking about the different groups within the monastery. The different clans I guess within the monastery, it’s obviously not a perfect metaphor that they do but the — or maybe they’re not called claims, whatever and one of them is the front-end group.
I forgot their exact name but they say, they are so skilled in the art of forgetting for, when new technologies come that they can forget the old technologies. However, when you ask them what about this art of forgetting. They say, “There is no art of forgetting. If there was something so important and so useful, I would surely remember it.” A fun little anecdote there.
[0:15:23.2] DA: I love this. I kind of want, like, a book of these little myths of programming.
[0:15:30.6] BB: I’m telling you, thecodelesscode.com, it is wonderful. Oh maybe, oh, hold up.
[0:15:38.8] DA: Oh forbidden.
[0:15:40.5] BB: No.
[0:15:42.0] WJ: Are we region blocked?
[0:15:44.2] BB: No.
[0:15:45.3] MN: Hold on.
[0:15:45.9] BB: It worked earlier.
[0:15:47.7] MN: No. We’ve found out in real time. We’ve found out in real time people.
[0:15:54.8] BB: I’m not going to cry. I’m not going to cry.
[0:15:58.0] DA: Oh somebody didn’t pay their bill, oh man. Okay, well let’s go to the way back machine maybe.
[0:16:05.3] BB: Oh, I need to save all of these, oh God.
[0:16:08.8] MN: Yes, now.
[0:16:10.4] BB: Sometimes when I feel like I’m a bad engineer, I just go back and read through this whole thing.
[0:16:14.9] MN: Oh man. But yeah, I think that is something that I’ve done in the past is like you know, I’ve had tech journals that I’ve written before. And definitely have read things that I may have found that was confusing at the time that I’m like, “Oh yeah, I actually know what that is now and I think a combination of that and mentoring has helped me get over like the doubt or the imposter syndrome that may come up from time to time.
It’s like I think with those little anecdotes helps me realize like, “Oh I’ve grown over the years.” Like you mentioned, two years is a very long time but then you know, if you look back two years, you realize you’ve also grown as an engineer that way.
[0:16:57.4] BB: Absolutely and you mentioned through that imposter syndrome or at least I think you did, I don’t know. My memory is junk but —
[0:17:05.8] MN: Yeah, I know I definitely did.
[0:17:07.9] BB: Okay, cool. You mentioned imposter syndrome and I think many people learning programming, especially when they get their first job or even their first gig will think, “I have no idea what I’m doing. What’s going to happen when they find out that I don’t actually know what I’m doing?” First off, for many people who probably don’t know, that is called imposter syndrome and secondly, all of us have it. We have no idea what we are doing.
We’re just a bunch of stupid apes that tricked rocks into doing magic and it’s okay that you don’t know how to do something right this moment. You will learn it. Your job is to learn things and that’s okay. You will figure it out so have faith and confidence in the fact that you have learned a difficult thing and you could continue to learn difficult things to generate value for yourself or whomever.
[0:18:06.5] DA: Yeah, I love the idea that everyone has imposter syndrome. I think we should do an episode of The Rabbit Hole where we just interview dozens of developers and just ask them one question like, “Do you have imposter syndrome?” And then they just answer yes and then we move on. “Next person, get in here.”
[0:18:24.0] MN: Well, tell us your imposter syndrome story.
[0:18:27.1] DA: Right.
[0:18:28.5] MN: Because everyone is going to have one.
[0:18:30.0] DA: Yeah, totally.
[0:18:31.6] WJ: It looks like somebody took all of those quotes from The Codeless Code and put it in a GitHub repo.
[0:18:37.3] MN: Oh boy, you found the gem.
[0:18:40.6] DA: Oh boy, please share the link. We’ll have it in the show notes. It will live on and in the GitHub repo but also inside of all of us.
[0:18:49.8] MN: Yes.
[0:18:50.7] BB: Thank you William.
[0:18:51.6] DA: Until we forget.
[0:18:54.3] BB: It’s like I was really having a moment of terror there. I was freaking out. I’m sure you guys can see — the other hosts on the video can see this — could see like my entire demeanor changed, you know?
[0:19:05.5] WJ: Relief swept over him.
[0:19:07.6] BB: Yes.
[0:19:08.6] MN: And If you know how to program, ladies and gentleman, you too can start your own iteration of The Codeless Code website. That way it will live on forever. Do it for Beege. Beege almost had a heart attack on screen, live.
[0:19:24.7] DA: Right, he made it through the end of the podcast but —
[0:19:28.2] MN: Yeah, if anyone is taking this course, do him the solid, make The Codeless Code work please.
[0:19:34.1] BB: Yeah man, do a PR. Last case was added five years ago.
[0:19:40.7] MN: Let’s do it. Yeah and I think, you know, with the knowledge that we picked up — whatever programming language we have in mind, and our necessary Git skills would allow us to make that very PR so we can grow as engineers. Beege, you know you have meet-ups and people go to learn how to code over at CodeSeoul. Do you have professionals, like, people who have programmed with many years of experience — and like how does that work? Do you have any tips for networking that can be socially distant friendly as well I would add or any other thoughts in that regard?
[0:20:15.9] BB: Oh absolutely. I would say that my fastest growth as an engineer was when I was in Los Angeles. I found a group called ‘Community Hack Night.’ And we had people there from Google, from Netflix, all sorts of crazy places. And just not even entirely understanding what they were saying but just sitting with some senior guys and listening and being like, “Okay, I am going to Google this later. Okay, I’m going to Google this later” — was by far my fastest growth.
[0:20:49.8] DA: Yeah, totally. There are so many of these heads for osmosis, right? Where it’s like, “I don’t entirely know what’s going on but something is happening in my brain.”
[0:21:01.1] BB: Definitely, just surrounding yourself with smart people will make you smarter and the nice part is that some of the more skilled engineers will end up in some kind of senior role where they usually end up mentoring their team or kind of teaching their team on how to do things and they want to keep doing that. They want to practice that and so they’ll usually find some community. They’ll find some social group and even during the pandemic there are various meet-up groups that do things online like CodeSeoul, we still do events online now even though we can’t meet in person.
[0:21:34.6] MN: You can brag, go ahead. You all can meet in person. That’s what’s up.
[0:21:39.7] BB: No more than four at a time.
[0:21:42.5] MN: Be responsible ladies and gentleman.
[0:21:44.1] DA: Okay, it’s a very exclusive community right now.
[0:21:51.2] BB: Yeah, definitely, if you can find some sort of online group, even if they are not on the same time zone, CodeSeoul is an example. Just finding people that you can talk with, that you can ask questions to. Sometimes you may, maybe in your learning path, you’ve gone off the beaten path but you want to keep going in that direction. Maybe someone else who is senior can be like, “Oh I know this obscure incantation to help you,” kind of thing.
It’s absolutely useful. And then when you do get to the point where you are searching for a job, if you’ve developed relationships with these more experienced engineers, they have watched you grow. They have watched you learn and they can vouch for your abilities. And more importantly, your ability to learn, which can be a huge help when doing your job search.
[0:22:42.3] DA: Totally, it’s as much about who you know. It’s what you know, as they say in the biz I think. Some biz somebody says that.
[0:22:52.8] MN: The biz, yeah they say in some business there yeah.
[0:22:55.8] DA: It’s definitely a business thing.
[0:22:57.9] BB: Actually, definitely true in Korea.
[0:23:00.0] MN: Beege, how can people reach out? Let them know.
[0:23:06.4] BB: The best way you can find our meet-up group, CodeSeoul, we are a non-profit. We have a Discord channel, I recommend you join it even if you are not in South Korea. Right now we’re an online community due to the pandemic and even when we’re not, we always welcome people who want to learn and teach and just be a part of our community so feel free to join us.
[0:23:27.9] MN: Awesome.
[END OF INTERVIEW]
[0:23:29.2] 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 and 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.
Links and Resources: