A Micro Framework for Learning


Software engineering as a field is notoriously known for the reputation of the need of constant learning. This is true to some degree. I mean, who can keep up with the infinite number of Javascript libraries?! Although, a software engineer can get by without staying up to date with technology in some cases (such as working on a stable or rather old technology). However, to be hire-able or at least relevant in this field, one needs to at least have an idea about what’s going on in the world of software.

I have to say that although learning is vital here, the constant state of always learning is not a sustainable way to live, or so I have learned! Living to learn and study languages and frameworks and tools, etc. everyday, eventually, will lead to burnout and numerous physical health issues.

What I think is most suitable to keep up and still have a normal human life is to study in small chunks. Most importantly, not for a very long time. You can for example, study before preparing for interviews, or learn a certain tool for a project at work. That’s a good way to keep up and not burn yourself out.

I have a theory that given proper resources (most importantly time), learning new skills or achieving goals is attainable to us human beings. As long as you have the patience to keep going and the pace does not matter so much. A feedback loop is of great importance here, mainly, for keeping motivation and correcting your path. The feedback loop is also very important to measure your progress; be it positive or negative.

That was a long introduction! The following very few points are what I call a micro framework for learning:

Practice

For technical skills, practice is key. When it comes to learning though, practice is mentioned a lot yet ignored so often. If you’re, for example, taking a video course or reading an online tutorial to learn a new language, you cannot say you’ve learned the material without writing it yourself. It must be engraved by your own fingers to form the muscle memory and connections needed later on. When I was younger and had difficulty learning something, my father always used to tell me to write it down. Luckily, our job as software engineers is mostly all about writing.

Imitate

This one is a form of practice. My advice is to devour whatever material you can get your hands on and imitate it. If you’re learning the Go programming language and someone made a 2-hour video building a project in Go, watch it and write the code along with the video. I know that writing a to-do app may sound silly but try it in your new technology, you might hit something you didn’t know you didn’t know. It doesn’t have to be authentic, this is merely for practice. Although, you can always add your personal touch and make changes to what you’re building.

Take notes

I always advocate for taking notes. I even wrote a post about how I take notes. I have seen opinions that are against taking notes and instead prefer searching every time you need to learn something but I don’t agree. Taking notes is a great exercise to write what you learn in your own words. Your notes become kind of a reference that you can go back to anytime. They are also great for preparing for interviews. Taking notes doesn’t have to be complicated though. I use Markdown, a text editor, and Dropbox to sync them to my phone and that’s it. For inspiration, you can take a look at this TIL repository.


In the end, I’d like to add that in theory, things may seem perfect but in practice, they are really not. It’s better to be practical and realistic about your goals than being perfect and not achieving anything.