Confidence. Something that some programmers have and others lack. A thing that separates successful programmers from average programmers.
A lot of different programmers have confidence issues and it definitely holds them down when it comes to advancing in their careers. The biggest confidence problems that programmers suffer is regarding their code. I've talked with several developers since I started Simple Programmers and they all seem to think that the code they write is not good enough. Some can't even write their own code.
So, how to do you build confidence in yourself to start writing your own code? How do you overcome that plateau where you're only able to copy someone else's code?
What strategy should you employ if you're looking into writing your own code and creating your own applications? Watch this video and find out!
John Sonmez: Hey, what’s up, John Sonmez from simpleprogrammer.com. I’m going to answer a question today that I get quite a bit or variations of this question which revolves around this idea of how to go from writing example code to writing your own code, a real code. This question is from Tom and he says, “I’m studying your Java Fundamentals Part 1 via PluralSight and have followed many other tutorials.” If you’re wondering what he’s talking about I’ve got a Java course which you can check out here on PluralSight and it goes over the introduction Java and there’s a part 2 of it as well.
He says, “I follow and understand all the concepts as they are presented to me. If I don’t I replay and Google until I do as I just don’t want to be competent, I want to be excellent and leave no stone unturned.” That’s good. “I get the impression that when it comes to programming there’s a certain amount of stuff you just have to push through before you can practically apply it. However, I stop every now and then and try to construct my own code to begin a project I wish to build. This always results in frustration and wasted time. Both of which are hit to my motivation despite the fact I understand everything you explained in your course. I was wondering if you could give me some insight as to when and how I should try to bridge that gap between being able to follow a lesson with the prescribed code and to write code on my own.”
He goes on a little bit more. I thought I would answer the question because this is basically a question that I get quite a bit. To describe Tom’s problem a little bit more you’ve been able to follow example code. You’ve learned the basics of the programming language or framework but you can’t create your own app, you can’t create your own project. How do you move from that stage from you can do the example, you understand all that stuff and now how do you actually create your own project?
There’s an intermediate step and I’ve recommended this a few times. I’m trying to think if I can remember any of the videos, but I’ve talked about this a little bit. I’ll kind of rehash it a little bit here. Essentially what you want to do is you want to go and you want to find applications that you can duplicate the functionality for. When you’re trying to do this what you want to do is you want to look at applications that already exist. That fly is just persistent. Be persistent like a fly. You want to look for applications that already exists that you can basically copy and copy that functionality because you don’t want to try and tackle 2 problems at the same time. This is the problem that really causes people to have trouble making this transition is that they try to come up with a new application and develop that application and then learn how to actually implement that. Those are 2 different problems.
What you want to do is don’t be creative at first. Go find an application that already exists that’s fairly simple that’s close to what you want to do and just duplicate that functionality. I think I did a video on game development where I told you go and create pong and then go and create Tetris or Pac-man or something like that, just copy the stuff so that you don’t have to come up with how something works. You can basically just do—reimplement that thing and that’s going to be a lot easier for you to do. That’s a good transition.
You start off and you do an example code and you’re following along and you’re writing that example and you understand that. Then you go and you find some project, some simple application that you’re just going to duplicate the functionality so you already have a guideline of what you need to create. That’s the next task from there is now can you do this. It doesn’t require you to think about how functions and features should work and how the user interface should look, you’re just focusing on creating what already exists out there.
Then the third thing that you do is then you move on to creating your own project. Then you’ll have the ability to do that and you’ll be able to create—be creative and come up with what you actually want to build for an application and you’ll have that experience. The progression for that also is that you look at some progressively harder and more difficult things to create. Maybe first you start off with a classic to-do list app and you just duplicate the functionality of that to-do list app and then maybe you move on to a more complicated app.
I did this video on how to learn complex programming topics which you can check out here. In that one I talk about creating a duplicate Gmail app. That’s a good way to accelerate your learning would be—if you wanted to learn specifically web development is to take something that already exists and figure out how to implement that and that will be your goal is to create that app. That’s the general progression. There’s definitely a problem here where you get into this stage where you can write the initial code and you can follow examples but you can’t create your own applications, so in between there you want to create applications that other people have already created. You’re just going to duplicate the functionality and that’s going to give you that training. It’s sort of giving you some guiderails before you go out totally on your own because you don’t want to tackle the problem of trying to think about user interfaces and how the application should work and the functionality. That’s going to stall you out and that’s not really helping your programming ability. It’s a different ability. Don’t try and do both of those things at the same time.
Anyway, great question. If you’ve got a question for me, you can always email at email@example.com. I have a request for you, if you haven’t already, click that subscribe button below to subscribe to the channel. If you have already subscribed a like is always appreciated, a thumbs up there. I’ll talk to you next time. Take care.