Learning tips

Kamil Tałanda
3 min readJan 23, 2022

Not long ago, I had an exciting conversation that led to the way we learn and get frustrated with lack of progress. It got me thinking later about my approach to getting new knowledge and my current, ongoing projects.

Firstly, a big blocker is a fact that it is tough to admit a lack of knowledge. We know we came there to learn a new thing, but it is not easy to be comfortable. Instead of listening to what the teacher is sharing with us, we often show how much we know and how well we understand the topic already. It might be helpful to place the new knowledge in the context of our current understanding, but at the same time, it is essential to realise why we came there in the first place. If we already had the experience and knowledge, we wouldn’t have to learn it. For example, while learning Haskell, I often relate my functional programming knowledge to my experience with other languages that do not encourage pure functional approaches. The more I dive into the fantastic world of Haskell, the more I realise I need to leave the baggage behind and look at writing the software from a fresh perspective. Later, using it in my imperative day-to-day coding rather than polluting my new functional way of thinking with the old habits. I firmly believe that looking at the problem without dragging too much context is very helpful and helps to be open to new perspectives that might be revolutionary and turn our thinking upside-down.

It is not always easy to admit that despite a few years of experience, we still do not get some basic concepts and need to train stuff that seems obvious. However, with my years of experience, I learnt that simple things look apparent only from the naive perspective and there could be hidden complexity in something that seems simple. An example could be `getters` and `setters`. When I started coding, I never even considered things being immutable. I thought there was an object with parameters that you change as you go. So if somebody told me at this point that it is helpful to put constraints and never change the value, I wouldn’t believe that it could be beneficial. Now I see lenses in Haskell that abstract it even further. This example teaches me that something as elementary (from an imperative programming perspective) as assigning value, can get a lot behind it.

Another big blocker in the learning process could be the impression that we are not making any progress despite extensive work. Often we see others as gifted and that we lack the talent. I don’t want to argue that some stuff comes more accessible to us and some are harder, but it is often more about training and persistence than talent. Of course, we need to have realistic goals and dreams, but focusing on our progress rather than comparing to people around us makes it much easier to grow and not give up on the way. I will not compete with Kelly Slater in the WSL tour, but I firmly believe that I can do a proper bottom turn and use the wave’s energy efficiently in a few years with enough training.

So to summarise, I believe that a few things are essential to learning new things. First, we admit ignorance and lack of current knowledge. Then we accept our current situation that we want to improve. Finally, we need to get that good things do not come easily or quickly.

--

--