I used to have a programming module back in my undergraduate days. The thing is, I always found it hard to listen in class. It’s not that I’ve not tried (sorry, profs). But the experience was one that made me think about how we truly learn something.
By the way, I didn’t leave that module at the end of the semester not knowing how to code (the language was Python). In fact, there was a competition at the end of the semester and I think, if I remember correctly, our team did quite well. So how was it possible that I couldn’t make myself listen in class and yet still be able to learn the basics of Python during that time?
I jumped straight into the exercises. Yes, without exactly first knowing what I was doing, I tried out the exercises immediately. Once I begin to understand the problem that was given in each exercise, I started to look for materials that can help me to solve the problem. Some of the materials were the ones given by my lecturers, others were found among the myriad of free resources available online.
Was there ever a particular resource that was all I needed to solve a single problem? Not exactly. Not for the more complicated problems anyway. So that brings me back to my point. How to really learn something?
1. We need an interesting problem that captivates us
I think the main reason why I only started to learn the programming language was when I found the exercises given to me interesting enough to want to solve it. It’s not that the exercises were immediately connected to real life. Especially initially, the exercises were basic. But what motivated me was that there was something to be solved. A challenge that seems solvable within reason.
And isn’t that how we started out learning when we were young? We learn whatever languages that our parents speak because we have a problem to solve – we need to find a way to communicate with them.
However, what captivates me might not captivate you. And I think that’s the beauty of the diversity we have among us. Because we are all wired differently to take interest in different things, we can, therefore, bring different sets of skills and experiences to share with one another.
2. Learn by actually doing the work
After we see the problem that we want to solve, isn’t it natural that we want to start experimenting? We imitate what our parents say, blabbering and not making sense initially. And it is only through constant trial and error that we truly pick up the nuances of the language we speak.
So I think the second point is this, that we can only ever learn by doing something for real. To actually learn how to code, we need to code. We need to see how each line translates to something. And to see how each successive line interacts with the previous to translate our intentions to reality.
It’s like learning a musical instrument. There is no way you will be able to learn a musical instrument without actually playing it – right from Day 1. You can learn all the music theory there is, know the names of all the notes available, and yet if you don’t translate that knowledge into the actual playing, what’s the point?
3. Integrate information and skills from different sources
You can pick up information from anywhere and everywhere. Inspiration can come from all places. The hard part is knowing when you have found something that can help you to solve the problem.
I think the only way is to try and see if it works. If it doesn’t, then look elsewhere. At least you would have exhausted one resource that you know wouldn’t work. Sometimes you would need to combine information from different sources as they point to different things that might not translate exactly to what your problem needs.
4. Build on what works
Once you figured out something that works, you will have to do something to cement that learning. What can you do to apply that knowledge or skill again?
Think back to when you first learnt how to cycle. Do you stop immediately after successfully balancing on the bicycle for a few seconds? No, you actually continue to pedal, building on what you just learnt and trying to see if you can push yourself to ride faster and longer without falling.
To really learn something, you will have to keep building on your skills or knowledge. You will have to keep practising and finding ways to challenge yourself more.
Most importantly, you will make mistakes and fail.
If you want to learn anything and get better at it, you will have to be prepared to make mistakes and fail. You will continue to fall and stumble, constantly testing things that might not work.
I think it’s ridiculous to always expect your plans to succeed. Sure, we plan to the best we know how to. We can do our market research, or we can conduct lots of focus groups and interviews with people. We can even co-design with our end-users. But to expect that anything that you roll out to always succeed is just selling yourself and others short. Because it might actually mean that you are not pushing the boundaries enough.
To say that you embrace failure and to really embrace failure through your actions are 2 very different things. Are you just paying lip service or are you living and breathing a culture of constant experiments and trying things out?