Do you find yourself googling, again and again, every time you sit down to code? Or do you not feel confident even after learning? Perhaps you keep postponing learning endlessly? It is quite likely that you’re learning programming the wrong way that will result in your tiring out, and losing motivation. What is the wrong way and how can you avoid it?
When I was learning programming with Python, I had a similar experience. Each time I sat down to work, I would come across a problem that I know how to solve conceptually, but I’m not sure how to write the code for it.
Then I would start searching online which would waste my time, and increase how long it took to write the script.
Are you familiar with this experience?
Over time I’ve come to realize the following things about learning programming and why most people are learning it wrong (and possibly you too!):
1) Learning Programming in bits and pieces with a narrow focus area:
Let’s say that you’ve picked up data-structures (no matter what programming language you’re learning). You’re following an online course, and it tells you an X way to create a dictionary.
Later you start working on a script, and you arrive at a point where you need a dictionary. However, you need to create it from a list. You haven’t read how to do this yet. So you search on StackOverflow and other sites. Sounds familiar?
You learn Y way to create a dictionary from a list and move on.
Later you arrive at a point where you need to create a dictionary from 2 lists. Again, this isn’t something that you’ve studied.
So you search again and learn Z way to create a dictionary from 2 lists.
After a day or two you’re coding again, and now you need the Y way again. Guess what! You don’t remember!
You see the problem is that when you learn in bits and pieces, the information is not structured. Our brains work best when the complete data is presented in a connected manner rather than in haphazard one. In this case, if you’re shown X, Y and Z method and a comparison between them, then you are much more likely to recall them better.
Our brain derives meaning by finding patterns in the information.
Reading in a structured manner not only makes you recall things better but also increases your confidence in that area, thereby putting you in an upward spiral.
So what does this mean for us? It means that you learn from a source that teaches you all the related-programming concepts in one flow rather than in bits and pieces.
2) Not Practicing Coding:
This one’s a no-brainer, and it will come as no shock to anyone, but I still can’t stress this enough. I’ve seen too many people pick up a coding book and skim through it. Or they play a video tutorial and keep watching one video after another. But when they sit down to code, then they’re blanked out. Why?
You can’t learn to code by just reading or watching. At some point in time, you have to put in some output, (figuratively of course!)
It’s only when you sit down, pick up a problem, and write the code that you truly being to understand what you’ve learned.
3) Not creating Mini-projects:
Did you know that 90% of people who pick up guitar-learning quit in the first year? Imagine that! 90% quit learning!
Why do you think they’re quitting?
It’s because they’ve imagined themselves playing the guitar, playing songs, having fun, but in the end, they toil away on a few basic chords throughout their initial learning. You can spend a whole day just twinging a single chord! Thankfully for us, programming isn’t as tough!
However, a similar burnout can happen to someone learning programming too, if you’re continuously learning without applying it in real life. In other words, you go on devouring one concept after another with no application. That’s sort of like a Harry Potter movie in which Hermoine learns one spell after another but never casts anything. Not something that you would want to watch, right?
It’s the same with programming too. This is where the beauty of mini-projects comes in.
If strumming songs, for a guitar learner, fills him with joy, then mini-projects, for someone learning programming, fastens up his learning!
Each time you create a personal project and code it successfully, it fills you up with joy, confidence and solidifies your understanding of the concepts. You could create a script that finds out how much disk space you have, or something which helps you search your files better, or something that reads through lots of text files and finds something, or even a simple script that outputs a series of numbers that you want.
“There is something amazingly enticing about programming.” – Vint Cerf.
4) Writing your program but not running it!
When you’re learning programming, it is not enough to merely write it down on a paper and move on to the next concept.
You need to execute that code, soak in the feeling that you wrote the right code and toil debugging the code to find your mistake. It is only by continually running your code and debugging it that you will become a solid stalwart of the language!
5) Forgetting because of a lack of visuals!
It is of no surprise that we process visuals better than no visuals when learning anything. We are somehow more attuned to the sense of eyesight.
This is one of the reasons that people frequently struggle to learn concepts because in programming tutorials there is usually no relevant video. You could be learning about data-structures by watching the video of someone’s head-bobbing around as he speaks, or you could be going through several lines of code trying to visualize their meaning. That is how people typically learn programming!
However, if you come across any visual, then you instantly absorb that information and gain a better understanding of the concept. Indeed, a picture can genuinely speak a 1000 words when it comes to conceptual learning.
Hence, you need to find a source of learning, that presents you with visuals so that you can learn with ease.
6) Not revising what you’ve learned:
This is a sad thing that can happen to anyone, even meritorious students. Even the people who’re good at concepts need to revise the concepts they’ve learned at least once later on. It’s only by revision and repetition that a piece of knowledge gets more settled into our minds.
This the problem that I’ve found with books. Too often, we read a chapter and move onto the next one which demands bazillion efforts of constant learning. Too often, we realize that we’ve forgotten the previous concepts.
We need to revisit and revise whatever we had learned earlier. The easiest way to achieve this is to keep trying out mini-projects that will make you recall concepts that you learned earlier.
7) Quitting midway:
What are our sources of learning? Books? Online videos? Crash-courses? Or even on-the-fly while doing the job?
All of these are monotonous methods, IMHO. The very heart of learning lies in quick quizzes, getting to know interesting facts, a little anecdote here or there, a joke or two.
But programming is usually presented in a bland manner, kind of like our history text books in schools.
I would like to tell you that it need not be this way! You need not struggle to learn programming. You don’t need to “work hard” to learn programming.
“I always considered programming as being like modern-day wizardry. You could think of things in your mind and then make them happen.” Jeff Minter
To summarize, if you avoid these mistakes, then you will find that not only is learning much quicker but also your motivation is maintained, and you don’t have to keep pushing yourself to learn.
You can learn much more efficiently when you’re learning from a source with all information presented in a good structure, that has good visuals, by having fun with mini-projects, repetition, by taking quizzes, reading jokes about programming, reading stories/anecdotes about the language that you’re learning.
Here, at PythonStation.com, we understand these expectations when it comes to learning a language. We’re passionate about Python, and we’ll be adding more posts on Python concepts. Do subscribe if you want to keep learning all concepts from us, one by one (for no charges)!
“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” Linus Torvalds (software engineer, hacker, a major contributor to the development of the Linux kernel)