I Suck At Programming… HELP ME!
I often receive lots of email from people telling me that they are having a hard time trying to understand programming. They have started to study, they've started to practice but they can make the “click” happen inside their heads.
Most developers I talk to feel like they suck. What can they do to overcome this feeling? Are there any tips for improving your learning process and become a better programming?
Watch this video and find out!
John Sonmez:
Hey, what's up? John Sonmez here from simpleprogrammer.com.
I got a question that says, “I think I'm very bad at programming.” This is from Vilmis and he says, “I'm currently on Udemy's Java course and in this course, we get challenges to utilize information we learn. At the beginning, it wasn't hard. When I looked at how the instructor completes the task, it looks really not that hard and I can fully understand the code he wrote, but I can't imagine myself writing code like that. Do you have any ideas, books, or websites or advice from your life to practice thinking or how do you call that? Please help and as always sorry for bad English.”
Well, your English wasn't that bad. I wouldn't worry about that. That's actually kind of a good example, I think, that we could use here. Let's suppose that you want to improve your writing, improve your English. How would you go about doing that? You might say, again, you might look at a sentence that I've written or you might understand me speaking English and you might say, “Oh, yeah. It makes sense when you say that, but when I try to construct the sentence or I try to speak in English, I use the wrong verb tense or it doesn’t sound right. I say some awkward phrase or something like that and it doesn’t come out right. When I see it, that's obviously good writing or good speaking and I can understand that that's good English, but I can't do good English. What is going on here?”
If you wanted to improve that, what would you do? It's a very similar situation. What I would recommend that you do is that you copy a bunch of good English. Maybe you read word for word. You get familiar with the phraseology and how to construct grammatically the English phrases, so that it comes natural to you. Let's say that if you want to improve your English writing, what I would recommend that you do is you take some contemporary writing in English, maybe a really good blog that someone has written or a book and that you write it all out. Write an entire book out. Now, pick a book that's like contemporary spoken in English, how you want to speak or write English. If you write that out and write out several books, what's going to happen?
Well, in fact, I already know what's going to happen because there's someone who did this. It was Benjamin Franklin. Benjamin Franklin actually, he wanted to become a really good writer. What he did was I can't remember the name of the paper, but there was this paper that published articles that were very well written and he felt like he wasn't a very strong writer. He devised a whole series of exercises to basically take apart that writing and he copied that writing and he would basically take a lot of the points from that writing and jumble them up and then try to reassemble them together and write them. That's what he did. He went through that practice. There's a lot of people that do copywriting which is basically anytime you see marketing or advertising or you read my sales letter for one of my products. Hey, we could plug that right there. You could check out some of my products on how to market yourself as a software developer, why don't you look at that one? If you look at the sales page on there, that's copywriting.
Now, one of the guys that wrote that, his name is Josh Earl and he's an excellent copywriter. He works here at Simple Programmer. He's part of the team, my business partner here. He learned copywriting and one of the ways he learned that was that he copied. He went to this program called CopyHour. I mean he did other things as well, but he went through a program CopyHour where they basically copy really good copywriting and they became good at it.
Why am I telling you all this? Because simply, it's the same thing. You look at someone's code and you say, “Oh, yeah. Now, it makes sense. I could have solved it that way. That example. It makes sense to me but I could have never come up with that on my own.” If you do that enough times and you copy what they did—actually, write out their solution. Don't just look at their solution and say, “Ah, yeah. That makes sense.” Instead, write it out. Look for good that is solving their problem and actually reimplement it yourself. You've seen the answer that the teacher made. Now, don't leave it at that. Copy the answer. Now, do it from scratch. Copy the answer once looking at it, so that you can understand it and make sure you understand all of the elements in there. Then wipe the board clean and write from scratch the answer using what you know now and test yourself. Keep on doing that. It's like what Benjamin Franklin did when he improved his writing skills.
Same thing like I said. If you want to improve your English writing skills, you do something similar. You could take an essay and you could rewrite that essay and you could rewrite it as best as possible from memory, and then you could look at it and compare it and say, “Oh, look. That's where I used this awkward phrase.”
The other thing that you can do that I think will help you as well, the same thing that would help with writing or learning English is let's say that, again, you wanted to improve your English writing. Well, write a nice, long blog post or essay and then have a native English speaker look at it and explain to you what is wrong, “Oh, this is why you shouldn't say it this way. You used the wrong verb tense” and explain to you exactly what's wrong, and then the opposite which you could do is you could take someone who had written a really good English who had written an essay and all the parts where you don't understand like why they made these choices, you could ask them, “What was the logic behind that?”
Again, you could do the same exact thing with programming language. Take your instructor's code and say, “Ah, okay. What made you think to decide this? What made you think to use this data structure right away and to write your code this way and go through that process?” There's multiple avenues of attack here and I know that this works 100% because I actually started to become a really much better programmer when I started doing Topcoder. The whole thing with Topcoder is that you solve a problem and you try to solve a problem and then you have this period, this phase, where you see how other people solve the problem and you try to challenge their code, try to find bugs in it. I kept looking at people's code and I was like, “Man, I could never figure out how to write a solution like that.” After seeing it so many times and then trying to implement it myself, eventually, I got to the point where I could see the patterns and I instantly just like grammatically when you're good at a language and you're fluent at a language, you know how to construct the sentence. It just flows from you automatic. You don't have to spend much time thinking about it. The same thing started to happen with me with writing code. As soon as I saw the problem, I knew what kind of solution to create.
That's what you got to do. Don't worry. Don't get discouraged. Just keep on going but make sure that you're doing some kind of deliberate practice. Again, another resource that I'll give you here is the book I've been recommending lately. It's called Peak. I must have really liked this book because I recommended it a lot. That's where I got the Benjamin Franklin story, by the way, and he talks so much about improving on something, about using deliberate practice and how to construct that kind of practice. That's what you need to do in this case if you want to improve and to be able to write code like that. All right. If you like this video, click that Subscribe button below if you haven't already and I will talk to you next time. Take care.