Coderslang believes coding should be done in the same environment where the user will be working when they finish their education. This way, they'll have some pain in the very beginning when they have to learn how to install things and learn how to configure everything, but then be able to get that out of the way and move on fairly quickly.
As far as it talkes to learn how to code? It never ends. And even though you'll be able to get a job in maybe on average a year from your first lesson, he suggests never stopping to learning because it's fun!
Should you find a burning need to share your thoughts or rants about the show, please spray them at firstname.lastname@example.org. While you're going to all the trouble of shipping us some bytes, please consider taking a moment to let us know what you'd like to hear on the show in the future. Despite the all-caps flaming you will receive in response, please know that we are sincerely interested in your feedback; we aim to appease. Follow us on the Twitters: @LaunchiesShow.
Jonan Scheffler: Hello and welcome to Launchies, proudly brought to you by New Relic's developer relations team, The Relicans. The Launchies podcast is about supporting new developers and telling their stories, and helping you make the next step in what we certainly hope is a very long and healthy career in software. You can find the show notes for this episode along with all of The Relicans podcasts on developer.newrelic.com/podcasts. We're so glad you're here. Enjoy the show.
Aisha Blake: Hello and welcome to Launchies, a podcast for early-career developers and non-traditional background developers. My name is Aisha Blake, and I am really excited to talk about how long it takes to learn to code with Coderslang. Welcome.
Coderslang: Thank you for the introduction, Aisha. Pleased to be here.
Aisha: Absolutely. Would you mind telling me a little bit about your organization, Coderslang, and kind of how that came about?
Aisha: How do you approach your curriculum? How do you structure the course so that it is more conducive to that sort of real-world setup? Are folks following along with a tutorial in their own IDE? How do you then focus on the specific topic that you're trying to teach versus teaching the tools kind of at the same time?
And then once we move along, obviously, these checks change, and we start checking how the back end works. So we get to Express, we get to back-end development with Node.js. We get to front end with React. We get to React Native, and it's all using the same extension. This is how I think this stuff should work. So all the coding should be done in the same environment where the user will be working when they finish their education. This way, they'll have some pain in the very beginning where they have to learn how to install Node.js, where they have to learn how to install Visual Studio Code, how to configure everything. But then just spend a couple of hours, maybe a day on it, and then just get it off of your chest and move on.
Aisha: It reminds me a little bit of using Rustlings to practice Rust. You've got the problem right there in the code, and it's up to you to use that context to help you figure out what you should be doing. So we're here today to talk a little bit, at least about how long it takes to learn to code, which I imagine you've got this question a lot as well. But I feel like particularly early on in my career, when I was very focused on teaching full-time, I got this question a lot. How long is this going to take? How long until I learn how to code? How long is it going to take me to get to the point where I can start looking for jobs? And so I'm wondering if that's the kind of thing that prompted you to write this.
Coderslang: Yes, this is one of the most asked questions because people want to learn to code to do it. And when they are just starting out, it's an unknown for them. It's a journey into the unknown, so they don't even know what to expect. How long will this take? Will this take a couple of weeks, a couple of months, maybe a couple of years? I don't know, maybe five years, ten years. And they genuinely don't know the answer. There could definitely be different approaches to answering this question. So what I suggest to everyone who's just starting to learn to code or thinking about it is answering the question of why are they learning to code, and what is their definition of what learning to code is?
Aisha: Yeah. I think that that is a really important point that maybe folks don't always understand coming into the industry. You are constantly learning. It's necessary in just about every role where your primary job is to code to either keep up with the evolution of whatever your particular toolset is or to be pretty consistently learning new ones. And for some folks, that's really exciting, and for others, that might be daunting. I wonder how much interaction do you have with students who are using Coderslang?
Coderslang: So I have created a chat in Telegram where everybody can join. It's free for all. Coderslang is ultimately a paid subscription course, but the chat is free for all. It's open for everyone. So everybody can ask questions, and I try to give them my best by not actually giving the correct answers but rather pointing them in the right direction using hints. But yeah, we talk every day. We talk daily. Speaking of daunting experiences, learning new things, if you're that kind of person, well, not you particularly, but the person that's starting to learn code, then I suggest thinking once more about this because learning is fun. It may be hard at some points, but when you overcome these obstacles, when you actually achieve something, well, at least for me, it's like an immense feeling of it just feels good to be able to do something that you didn't know how to do previously.
Aisha: Yeah, it's definitely a sense of accomplishment. Personally, I try to encourage my students to think about where they were at different checkpoints. So you're a month into a bootcamp. Okay, think about where you were a month ago. What did you know then compared to now? What can you do now that you couldn't before? Pretty often, especially that early on, it's a pretty astonishing difference. It reminds me a little bit of the way that you make gains when you start to lift weights. As you're just beginning, you're figuring out where your baseline is, and you make these huge improvements in your weight or your coding skills as you're beginning. And then eventually that slows down. But in my case, at least in terms of coding, that feels more like, well, I'm comfortable now, and I don't have to. But you do have the potential to keep learning at a pretty astonishing pace.
Coderslang: Yeah, absolutely. I agree. So I think, by the way, maybe lack of constant improvement I think is one of the reasons why software developers are so into learning new frameworks and new languages and new stuff. And nobody wants to be working on the same thing for years, although there are people like this. But a lot of us are just, okay, a new, shiny framework is out. Let's go for it. Let's try it. Let's dig into it. Let's find some issues. Let's go to GitHub. Let's file something there. It's fun.
Aisha: Yeah. So as you mentioned in the article, that can also derail you. I've certainly been guilty of this, jumping around between tutorials. Like, I really want to learn 11G. Oh, what about Next? What about Gatsby? And not actually building things. And so, how do you encourage folks to get some practice in with the tools that they're learning once they figure out what it is they want to do or want to learn?
Aisha: Yeah. I'm reminded of the weightlifting analogy again. I guess I'm rolling with that one [laughs] in that the best program for you, and in this case, the best thing to learn is the thing that you're actually going to stick with, the thing you're actually going to use. Certainly, I've experienced that, but the things that I have actually retained are things that I needed to use for work or to build something real that I then just kind of kept working at and kept learning new things that were related to features I wanted to build or needed to build. It's one of the reasons that I really like this approach of project-based learning, where folks need to figure out how to craft whatever it is they're trying to build.
Coderslang: Exactly. Everybody should start with an end in mind. A goal like learn React, or learn Angular, or learn Node.js, or learn something is not...or even learning to code is not a goal in itself. It's vague. It's not clear what exactly are the requirements for it. When exactly can you say that I've learned to code? Now I know how to do this. Maybe I can say this, but maybe I definitely still have a lot to learn, and so does everyone. But if the goal was to write a program that prints “Hello, World!” to the screen, that's an achievable one, or write a back-end server that uses sockets and connects the database and does some cool stuff, that's a good goal. Go ahead, do it, research, find all the tools you need to implement this. And then you'll actually know when you have done this, and you'll be able to make this checkmark next to this project. So, yeah, project-based learning is awesome.
Aisha: When folks are starting out in their coding journeys, how do you guide them towards figuring out what direction they want to take?
Coderslang: In my course, it's pretty straightforward. So there's a set of lectures that are available through the browser. And then, each lecture has a set of tasks attached to it. So you read the lecture, you study the theory, and then you solidify this theory with practice. There isn't much room to actually go here or there. This all comes later. In the beginning, as I've already said, just focus on the fundamentals, learn how to do the basic stuff, and then you'll be able to pick some projects to explore ideas, and so on and so forth.
The first couple of hundred hours of coding so maybe up to 1,000 hours even, which is quite a significant amount of time; I think it should be pretty much standardized curriculum where learners don't have much of a free space to go into because they'll get lost, very likely they'll get lost. If they feel they can do this, if they feel they are ready for it, then obviously, I'll give them a list of projects that they can try to build. But if they won't be able to handle the pressure or they won't know how to go there, then they can always go back to the common coding tasks and proceed with them.
I think it's important to have the place where you can drop back and where you can be sure that that's something that you can handle. Because the most critical thing in learning to code or in learning anything or lifting weights, going back to your example, is motivation. And it's actually keeping doing whatever you do despite the hard stuff, despite the pain, despite your muscles hurting, and so on and so forth. And in the gym, what's actually the advice to do is don't try to lift that barbell that you can't really get to. Drop some weight. Just show up every day and do it regularly. If you keep doing that, then you'll get the results. And coding and learning to code it's pretty much the same. Don't try to write down this complicated sorting algorithm from the first trial or even from the 10th try. If it doesn't work, relax, drop back to something that you already know how to solve. Maybe even reimplement some tasks that you have already done in the past and take it from there.
Aisha: I like that, not overextending yourself and possibly getting frustrated, burnt out.
Coderslang: Yeah. And if this already happened, relax, it's fine. Everybody has these problems.
Aisha: Yeah, absolutely. You certainly try to avoid it, but it happens. And that actually brings me to another question. So when I'm feeling that burnout, a big part of how I get back into a routine is leaning on my community, leaning on my friends. And I'm wondering how much the community comes into play with Coderslang. How much of that support, maybe through the Telegram having, is part of the experience?
Coderslang: Right now, the community is not that big. It's a couple of hundred members. The only thing that I can say is that the community is crucial, obviously because sometimes you just feel you're alone in your struggles. And maybe the people around you don't understand what coding is and why you're learning to code at all, and nobody seems to care about it. They're into other things. And this can be a lonely place, having a community, just understanding that there are people with the same struggles as you, is very important. And yeah, I'd like to build this community. At this point, I'm still getting there.
But there are plenty of other communities. For example, Dev was the one that I found, I think like six months back, and I started posting there. There's significant feedback. The Relicans, by the way, is another community that is built on the forum as well that I have just discovered. I haven't been active there yet. CodeNewbie is another community for the people that are just learning to code. There's plenty. The cure is don't think that you're alone. Never do this. You're not. There are plenty of people. And even those who don't struggle at the moment definitely had their share of tough times and issues in the past. [chuckles] So ask for advice, and express yourself, tell your problems. By the way, I noticed that people that are really open about their fails succeed the most. Those that don't hide their fails, those that really go ahead and say, "Oh my God, I don't understand how to place those quotes in the console log “Hello, World.” It doesn't work. There's some error. Nothing works. What's going on?" They get help. They understand. They don't hide it. That's important. Community is important.
Aisha: 100% agree. I think, too, the folks who are maybe not even unafraid but who are at least willing to fail openly and to ask those questions end up helping other people who are having those same struggles, absolutely. Very much like when you're in an in-person classroom and somebody asks the question that the whole room is wondering.
Coderslang: Yes. Yes.
Aisha: So some of the people who are learning in public often failing in public; they have different ways of presenting that information. So I'm wondering if you encourage or how you encourage folks to take notes or if you have thoughts on a structure that maybe just works for you when you're learning something new.
Coderslang: Yeah, absolutely. I think they should be broken down into two things. First off, you want to be very structural and very precise in asking technical questions. So if you have some issue, you should always write down a list of steps that you took that produced some outcome, even if this outcome is not what you want and it's not what you need. Write down this list of steps and ask, "Hey, I'm doing 1, 2, 3, 4, 5, but I'm getting X. In fact, I want to get to Y. I also tried, for example, changing steps 2 and 3, but the outcome was that, which is still not what I wanted it to be." This is very important because beginners tend to overlook this thing, and very often, they are just like, “Okay, nothing works. Here's my code.” And it's not clear how they arrived at this. Why are they doing this? Why are they writing return, return, return? It's just not clear. But if they include a little bit more information, it would be a lot easier to help them, and people will be really willing to help. That's the first thing, that's about technical questions.
The second thing is about personal struggles when you're like...and maybe someone lacks motivation or maybe they have solved all the other coding tasks and read all the lectures. They still struggle to find a job. That's a whole different thing, in my opinion. So here, don't bother with structure. Just write down your thoughts, write about yourself, and lay out your feelings, emotions, really be honest. Most of the successful people and successful software developers had trouble in the beginning. It's just the nature of this business. Nobody was born to be a programmer. We all got there, we all learned, and it's easier for some, but for most people, it's a struggle in the beginning. And actually, it's a struggle when we're learning new technologies, new programming languages because the only difference is that experienced developers know this can be solved. Yeah, the code doesn't run but never mind, let's Google some stuff. Let's spend an hour, let's spend two hours, let's spend two days. Let's go ask questions on Stack Overflow. Let's go and ask questions on GitHub. And eventually, we'll figure it out. What the beginner lacks is this confidence, and this confidence only builds with practice. So ask questions and be confident that you'll get there no matter what.
Aisha: I think that that is a brilliant place to start wrapping up. If there is anything else that you want folks to know or places you want them to reach out to you, I'd love it if you would share those with us.
Coderslang: If someone's interested in talking to me, I'm active on Twitter @coderslang. I really don't want to overpromote myself. If somebody wants to pick up from me and to learn with what I offer, you're welcome. But if not, just find your way. And there is a bunch of free stuff which you can Google very easily. It's not about what you choose. It's about sticking to the routine and showing up every day.
Aisha: Awesome. Well, thank you so much again for chatting with me. I really appreciate it, and I enjoyed the conversation.
Coderslang: Thank you. I enjoyed it too.
Aisha: Awesome. Y'all, thank you so much for sticking with us. Be sure to check out the Polyglot Podcast, where we talk about patterns and systems that we use to write software, as well as Observy McObservface, which is a podcast that is kind of about observability.
Jonan: Thank you so much for joining us. We really appreciate it. You can find the show notes for this episode along with all of the rest of The Relicans podcasts on therelicans.com. In fact, most anything The Relicans get up to online will be on that site. We'll see you next week. Take care.