Through my university experience I came to understand that the ability to learn is a skill by itself. You can be either good or bad at understanding new things. For a physics undergraduate such as myself (and now a physicist) it’s a skill that’s pretty fundamental and I dare say it’s also no less important to you if you want to be (or you already are) a software developer.
And that’s why we’re going to spend a couple of minutes talking about it.
What this blog post is not about
Thanks to the many hours of careful calculations, I now know that there is, precisely, a bilion ways to learn programming. There are video tutorials, blogs, courses, lectures, workshops, open-source projects, libraries, code reviews, bootcamps, and many more. I wouldn’t dare to suggest that I’m able to add something of value to that list; there’s enough for everyone already. Today I want to tell you about something else. I am going to say a controversial statement, that it doesn’t really matter that much which of those above you decide to choose and stick with, not really. Because with any of those methods your head is going to hurt. As it should. Because learning is goddam hard. And that’s our topic for today. I’ll begin by saying something true about you:
You are lazy
And so am I. Feel offended? Then tell me the answer of 43 * 59,21 / 37,3. Go on, it’s just a simple multiplication, you know you are able to do that. But getting the answer by calculating it in your head would be a nightmare. Being lazy is troublesome for us now, but it actually made much more sense in the environment in which our species evolved. Our brain use around 20% of energy of our organisms, and in the savanna thousands years ago the supply of food (and therefore – energy) was limited. The effectiveness of the energy usage made all the difference – those who were more effective with what they had, who were less likely to waste energy on non-crucial tasks (so those more “lazy”) were more likely to survive. We don’t have to fight for survival now, but biologically we’re still pretty much the same species as back then. Even though our “good reason” for being lazy is gone, the laziness itself is not going away soon. That’s one of the reasons learning difficult things is painful and there’s no way around that. More on that in the book “Thinking, Fast and Slow” written by Daniel Kahneman, which I recommend wholeheartedly.
People trying to sell you “quick and easy ways to learn” hate him! Click here to learn his secret!
Learning difficult things is a process best compared to hitting your head against the wall – there’s no visible effect and it’s rather painful. Have you ever had a time when you spent several hours (days) trying to solve a problem or understand a concept or fix a bug and after all that time you felt exhausted, frustrated, and still without a solution? If the answer is yes – that is completely fine! Where you are going, there will be that and much more. Frustration and making mistakes is part of the learning. It means your mind is making the effort to understand a new concept – probably something difficult, complicated, abstract; and probably something that you will be later paid for doing ;]
There’s just one catch with this head-on approach though. There’re plenty of computer programs in which the code is an interconnected, complex web of a mess. Even if the code is well-written and legible, it can prove to be too difficult for a beginner programmer to understand; spending your next week trying to do so may not be worth it. Always start with something simple. Learn syntax and basic programming principles first. If it’s possible, try to find problems that are just “a bit too difficult” for you and learn one thing at a time. If there aren’t any problems like that and you feel that everything is overwhelming, equip yourself with time and patience. If you ever find yourself caught in a web of problems, try to find the simplest (but still relevant to the problem) thing that you don’t already know and start with that.
And that’s it for now, the last piece of advice I got for you is that the best way to learn is to learnbydoing.it! ;]