All Articles

Learning how to learn as a programmer

I’ve been thinking a lot recently about our learning process as programmers. How we as software engineers learn new things. Our field evolves so fast so we always feel the urge to catch up with the latest technologies and standards. It’s not a surprise to me anymore that some people call us a fashion-based industry. We like to get our hands dirty with things that are currently fashionable. If there is a new editor theme, we want to try it. When a new coding font gets out, we become early adopters. A new programming language that helps us to build more reliable backend services? We add it to our already long to-do list, hoping one day we can start exploring it.

Learning new things is exciting. However, knowing what to learn is hard, and the abundance of choices doesn’t help. If I want to revise my Linux skills, then I might end up browsing the entire day just trying to find the right resource. This becomes even more complicated when you’re not self-aware and don’t know how you learn best. Learning how to learn is extremely important and not only for programmers. I think before you decide to learn a new skill, you first need to learn how you learn most effectivelly.

There are many heuristics you can try. For programming, there are books, courses, and other kinds of resources. I find that the best kind of learning for me is talking with other programmers and learning by doing. If I want to learn about Networking, then I should maybe implement TCP/IP stack from scratch. Learning by doing has this magical power for creating the right mental models for us.

Unfortunately, I find that current educational resources are more optimized for short-term memory, and they don’t stick well. Of course, you can be intentional about it and augment your learnings for long-term memory. As an example, I use Anki that utilizes spaced repetition. I find it incredibly useful for creating long-lasting memory because I can recall my learnings after its completion.

I want to see educational mediums that are more designed for long-term memory. Can we innovate on books, so it’s easier to recall what we read? What’s the next version of online courses? Can we apply spaced repetition techniques in teaching programming skills? I think building more interactive courses with hands-on experience might be a good start.