Why You Are FAILING To Learn Programming

Written By John Sonmez

Why do most people fail to learn to program?

In this video, I'm gonna tell you why. And the mistakes that people make, so that you can learn to not make those mistakes.

[responsive_video type='youtube' hide_related='0′ hide_logo='0′ hide_controls='0′ hide_title='0′ hide_fullscreen='0′ autoplay='0′]https://www.youtube.com/watch?v=cl_DCwsbJik&t=24s[/responsive_video]

Transcript Of The Video

John Sonmez: So if you're a programmer, if you're learning to become a programmer and it's not going so well, I'm going to tell you why, I'm going to tell you why you're not there and the mistakes that people make so that you can learn to not make those mistakes. If you're just joining for the first time, make sure you check out my book, Soft Skills: The Software Developer's Life Manual. This is the second edition of the book. If you have the first edition, go ahead and pick up the second edition. Lot of cool stuff in here. I added some new chapters, a lot of new information in here. This is one of the best-selling books in software development of all time, actually really. Really true. And make sure you subscribe to the channel.

All right, so let's get into this. Let me talk about this, and, again, I don't mean to insult you, but if you've been trying to learn to become a programmer and it's taking you more than a year, you're doing something wrong. It shouldn't take that long. Now, programming is hard. Don't get me wrong. It is a difficult thing to learn. Probably one of the most difficult skills, I would say, that exists really, because it is so wide. There is so much to know. There are so many technologies that changes all the time. There's a lot to it. But actually breaking into it and learning it can be simple if you can narrow the scope down. So the biggest mistake that I see people making that want to become programmers, and I get it all the time. I get emails. “I've been studying for three years. I'm trying to learn to be a programmer.”

I've had guys that I've coached that want to become programmers. And it's been many, many moons since they started on that journey and they haven't been successful. And their biggest reason why is because they don't have a very narrow focus and they're just trying to learn too much, and they're spending way too much time watching videos and doing tutorials instead of actually doing what a programmer does, which is to build things, which is solve problems and to build things. So here's the thing, here's what you need to do, and here's why you're messing up. What you need to do is you need to pick a very, very narrow focus of exactly what you want to be able to do so that you can get a job. Let's say you're going to get a job, because most of you, you're trying to become a programmer so you can get a job. We're not going to talk about entrepreneurs right now or freelancers. We're going to talk about if you want to get a job.

So if you want to get a job as a programmer all you have to figure out is this, you just have to figure out, what kind of job do you want? And then you figure out, what do you need to learn in order to get that job? So when I say what kind of job you want, what I'm saying is, it's essentially two things. There's just two things you really need to know. One of them is what programming language, because that's critical that you want to get a job doing. And the second one is, what stack or what industry that you want to be in? You could really pick either one of those. I mean, you just need to narrow it down to a small enough scope so that you can learn what you need to learn. So let's say that you want to do Python and you're really interested in artificial intelligence. That's cool. That's perfect. You could get narrowed down to image processing. There's a lot of jobs in that area. Maybe you look at something as automated cars driving, something like that.

I mean, it's pretty narrow. There's only so many companies, but there's a lot of technologies around that. So you need to narrow it down to a programming language and then either a specific field or, and/or, a technology stack. You could even go with both, if you want to be really, really specific. But you could also do a technology stack. And when I say technology stack, I mean, programming language, framework, essentially front end and back end. Some companies might do Python and they might do some JavaScript front end, and then they might have some SQL server database back end, or my SQL. Really, for the back end for databases, it's not so critical, but you need to understand all of those components and you need to narrow it down to a very specific thing. And don't just take my word for it. Let's just do this. Let's just do something real quick here.

Let's just search. Let me pretend like I'm going to try and get a job, so we're going to jump over here. I'm going to look for programming jobs. Probably going to be on hire.com, or something like that. Let's just see. Let's just look at indeed.com. Let's look over here. Let's look at programming jobs. Okay, how about this? A Junior React JS Developer. That's not a lot of pay. I don't know if I'd go for this one. But, hey, if you want to, what would you do? Okay, let's look at this in real time. Let's figure out, what would you do? Okay, so you go over here. Okay, you'd look at this. And hopefully you'd look at a few different jobs. And you say, “Okay, React JS Front End.” So you look at all the requirements here and you say, “Can I do these things?” So really, for this, all you need to know is React JS Front End. So can you learn that? And they've got, “Some expertise in front end design and the implication of a game-changing idea.” You can cut out the fluff.

[inaudible 00:05:02] user's thinking. Well, okay, again, cutting out the fluff. “JavaScript, React JS Redux, and other modern frameworks.” So you could even email them. You could even be like, “What other modern frameworks?” I mean, a lot of times they will reply and tell you. Have you ever thought of doing that? Most people don't think of doing that. Okay, so that's not a big list. Mobile Front End Development. Okay, so now we've got some more clues here. “Utilizing cloud technologies like CGP or AWS.” So you can ignore the bachelors degree. It says, “Any technical field or equivalent.” That's what they always say. So you can ignore all that stuff, but here you go, now you've got a list of stuff that you could find. And here's the thing, where there's one, there's more than one. This is not the only company using this technology stack. There's plenty of other companies.

So if you just study this stuff, then you could get a job being that, but there's plenty of other to look at it. Do you want to Java Software Engineer job remote? That's pretty good. The pay isn't very good on these. I would not do these jobs. I'd be looking for something. I can get you more money, trust me. Now, if you want to get started, you could look at this and, again, same thing here, and you're going to look at, okay, oh look, Apache Camel Elastic Search. So you can see what technologies. And then here's another one. This is interesting for FedEx here. Yeah, okay, so you could see. That doesn't even show what. Okay, that's a lot of stuff there. You don't need to know all this stuff. But you can figure out, okay, my first job. So, anyway, look at this, here's another one. React, Node, JS, Elixir, and [inaudible 00:06:39].

The thing is, you're going to have to pick something. You can see here that there's a lot of different ones. There's a lot of different technologies. And this is why you're overwhelmed and this is why you haven't become a programmer, why you haven't made it, is because you're, “Well, shit, I've got to know all this stuff, and I don't know what kind of job I want. I just need to start learning stuff.” And so you start learning a little bit of this and that and that. Instead, just pick a narrow, narrow focus. Now, one way you can do that, I talked about this in one of the other videos on this channel, is to enroll in a coding bootcamp. Now, if you're going to do this, definitely check out my book. Not this book, the other book. I've got this one, but check out The Complete Software Developer Career Guide. In fact, we'll just jump to that real quick because if you're going to do a coding bootcamp, you should probably read this book.

Here it is right here. The Complete Software Developer Career Guide. There's an audio version as well. Notice it's got 789 ratings. It's a good book, trust me. But the idea is that you need to learn before you go to a bootcamp what they're going to teach you in the bootcamp and then go to the bootcamp. Most people are like, “I'm just going to go to the bootcamp and learn.” No. Figure out what they're going to teach you then learn it on your own a few months before you go to the bootcamp, then go to the bootcamp to really reinforce it and to become top in that area. Now, that's not going to give you all the programming experience that you need. It is going to get you enough to get your foot in the door and to get a job, to be able to build something. Because, remember, the way that programming works today is way different than it used to be. There's so much stuff. There's so much technology.

There's so many programming languages that what you need to do is you need to be able to use some set of tools, a front end framework, a main programming language, a back end framework. You need to be able to use these things to be able to build some thing. I know that sounds really basic, but it's true. And once you can do that, then you can start learning some of the other things. But you just need one skill set, one narrow focus that you can do that allows you to build something. Now, if you really want to test this, if you're like, “Okay, well, I want to just figure this out on my own,” simple, simple thing. Here you go. Build a mobile application. Just come up with something simple. You want some ideas? Here we go. 15 App Ideas To Build And Level Up Your Coding Skills. A countdown timer. There you go. Again, real simple.

Maybe a little too simple. A flip image. This is a good recipe book thing. A quiz app. A memory card game. A drawing app. A simple online store. There's a good one. This is a good one. Tier two intermediate. A to-do list app, this was one I was going to suggest. Calorie counter. That one's advanced. Chat app. You see this? This is what you do. You do this to learn how to program. You don't go and watch tutorials. Instead, you're like, “Okay, start with a simple one.” Let's just start with a simple one. Let's go a Notes app. Real simple. User can create a note, edit a note, delete it. They're giving you all the requirements. You don't have to think of stuff. And then what you're going to do is you're going to figure out how to build this. Well, how do I even know where to start? Well, first, you need to figure out, what kind of place are you going to build this on? Are you going to build this for a mobile? For web? Decide that. Okay, fine.

Next, what technology are you going to use? What programming language? What platform? Are you going make it an Android app? Are you're going to make an iOS app? Are you going to make a web app using JavaScript framework? You can decide whatever you want. Then you figure out what you need to learn in order to do that, how much of a programming language, how to create something basic, let's say, a mobile app. When I was learning to develop mobile, the very first thing I was like, “How do I actually just create an app with a blank page?” Because if you can do that, you're already halfway there. Then look at this, user can create a note. So what is that? Can you create a new note? So you've got to think about it. Okay, well, I need to be able to store the note somehow, and can I create one? Well, maybe the app only has one note. Maybe it's just a dry erase board for now. Okay, that's fine.

So how about editing a note? Can you add some text to it? Can you delete the note? Can you delete what's on that note? You see what I'm saying? You can figure out each one of those pieces and just work on learning what you need to do from books, from tutorials, and everything to implement the one feature you're trying to do. And that might seem like a backwards way to learn to program it in a slow way, but that's the best way, because at first it will be really hard because it'll be like, “Well, wouldn't it be easier if I just read this entire book and learned the whole programming language and went through all the tutorials?” At first, yes. It seems like that would be the case, but what will happen is that, as you learn how to create a note, it's going to be really hard to do because you don't know shit. But then as you get to the second step, it's learn how to edit note. Now, you're already going to know some stuff and you can combine that stuff and it's not going to be as hard.

And as you get to the third step and the fourth step and fifth step, pretty soon, you're going to get to a step where you're like, “I already know how to do it. I don't need to look it up.” That's when you know how to program.