Better ways of learning

Learning is an important activity in almost any context. We humans need to acquire new knowledge and skills to face the challenges we find in our lives, no matter where we live or what we do.

This is especially true for knowledge workers like engineers or software developers. The work we produce is very often intangible: a piece software or a blueprint are both forms of materialized thought. The value we produce depends on the quality of our thoughts, ideas, and ability to organize them.

Because of this, it's important to consider our knowledge as one of our most important assets. Ideas and concepts are the raw materials we use for our craft, and we should continuously seek to improve them.

This is something that I wish more HR professionals were aware of because at the end of the day it's not about the specific set of technologies you know, but about how well you can learn new things. If you can master new concepts and tools on the fly I guarantee you will have a great time in this profession.

Learning can be difficult, depending on the material you are dealing with and countless other factors. In this article, I'll try to share a couple of tips that might make it a bit easier.

So, let's get started.

Learning is meant to be exploratory

Most people's learning experiences through their school years are more or less the same: Write down some facts that you'll later memorize, regurgitate them on an exam and repeat until you get a diploma.

After following this recipe for the thousandth time we forget how we learned during our infancy: exploration. Our brain is structured in a way that requires us to explore and build mental models on our own. The facts we memorize will eventually be forgotten, but the models we learned through exploration are much more useful and long-lived. So go ahead and experiment with different ideas and techniques!

That new programming language you want to learn? Read about it and become familiar with the basic concepts and constructs, just enough to write a simple program. When you are done, start writing your own projects, they don't need to be perfect, you will learn on the march.

Remember that learning is not something done to you, it's something you do. Instead of the passive memorization approach we are so used to, go and take an active role in your own learning process. After all, knowledge without relevant experience is not useful.

Instead of focusing on memorizing minor facts, try to grasp the general idea and see where the different concepts fit. When you feel more or less comfortable with this outline you can start to spend more time on the details. You don't really need to memorize all that stuff, keep a notepad and write things down, eventually, you will become so familiar with the material that you will just look up the things you forget.

Build to learn, not learn to build

Creating is one of the best ways of learning a new skill.

Developers are especially lucky in this regard: we don't need expensive materials in order to build software. We just need a computer (almost any will do), our brains and we are ready to go.

If you want to learn about any particular technology you just need to read the basics. When you are familiar with the general ideas you can start building your own projects.

At this stage, it's very important to fight your perfectionism. Your approach will be suboptimal, and there are better ways of doing things, and that's fine. You are not required to craft perfect solutions, you just need to keep going and building things. Feeling comfortable with these imperfections will let you get out of your comfort zone and build useful models that will eventually let you create great software.

Build things, it's by far the easiest way of learning a new skill. If you don't know what to build, check the 'What to do next' section for project ideas.

Schedule your learning

Set some time aside every week (or day if you have the chance) for learning.

It doesn't matter if you have just 1 hour or 5 hours, what matters is that you do it regularly. If you learn just when you have spare time, you will never make it a habit.

Learning should become one of your priorities, so see it as an investment. A little bit of learning every day is much more effective than huge sessions once or twice per month. Your brain will have a much easier time if it needs to process a good amount of material daily instead of a huge chunk occasionally.

Set aside time blocks where you can focus 100% on learning: learning or practicing in a hurry doesn't work.

S.M.A.R.T little steps

S.M.A.R.T is an acronym created by George T. Doran in 1981 that encompasses the criteria good objectives should satisfy. As it happens with lots of things, it can also be applied to the process of learning a new skill. Try to chop the whole learning process into little steps with the following characteristics:

  • S for specific: Define your goal and subtasks to a good level of detail. Instead of vague goals like 'I want to learn Ruby on Rails' go for something more specific, like: I want to be capable of writing an Instagram clone using Rails. Aiming for a moving target can be very demotivating. Instead, aim for specific goals, it will be much easier to keep yourself motivated and accountable.

  • M for measurable: Having measurable goals goes hand in hand with creating specific objectives. Being able to measure your progress is not only motivating but also helps you keep your efforts focused on the main goal. Make sure to split the process into smaller chunks you can complete on regular increments.

  • A for attainable: Your goals should be reasonably within your reach. Aiming for the impossible is just going to become a soul-killing death march that will make you hate the topic or skill you are trying to learn. This doesn't mean you should ditch your ambitions, it just means you should aim for milestones you can actually complete. Instead of aiming to become a guitar virtuoso in a year (not gonna happen) aim for the basic technique, scales, and chord shapes. This will keep you motivated while providing a foundation for your long-term goals.

  • R for Relevant: Ask yourself: will completing this milestone move me a step closer to my long term goal? If the answer is no, then it's not relevant. For example, if you want to become a data scientist you should spend your time learning data science-related skills. All those React/Vue/Angular tutorials are very nice, but they are not relevant for a typical data science position. Focus your efforts on the things that matter and you will become unstoppable.

  • T for time-boxed: Your tasks should have deadlines, if not, they will probably never get done. If they are already S.M.A.R, adding the final T is much easier, as they will have the right size and definition. Remember one of our previous points in this article: schedule your learning. If you set time aside for finishing the tasks and hold yourself accountable it's much easier to set deadlines you can finish.


Not that long ago I read Cal Newport's Deep Work, a book about the importance of focused work and how to deal with distraction.

The main idea is the following: with the advent of the internet and social media, being able to perform focused work is becoming harder and harder. This is a bad thing for knowledge workers like us because we need focused work to get things done.

What should you do to solve this? Well, the book provides different techniques to deal with distraction. The most important thing is to train your brain to perform focused work. Your reduced attention span is the product of years of TV commercials and context switching, so you need to start making a conscious effort to maintain focus without interruptions. The more you do it, the easier it will get.

Oh, and you can use the Pomodoro technique, a very popular and effective way of maintaining focus. I've personally used it a lot in the last year, and it works very well. You can find a good introduction to this technique here.

Learn, learn, learn, learn

The advice provided in this article is quite simple, but it's surprisingly effective at improving your learning process. You don't need to start using everything at once or to apply it exactly the way I wrote it, but it can inspire you to take action and transform your education into an active process instead of a passive one.

So go try a couple of these things and see what sticks. If you have luck with any of these ideas go and write me an email, I'd love to hear how they changed the way you learn.

Oh, and remember this: the professional death kiss is to behave as if you already know everything. There are lots of wonderful ideas out there, so keep learning!

In the next article, we will discuss cognitive bias and other bugs in our thought process.

Thanks for reading!

What to do next

  • Share this article with friends and colleagues. Thank you for helping me reach people who might find this information useful.
  • This article is based on Pragmatic Thinking and Learning: Refactor Your Wetware and on Deep Work. These and other very helpful books can be found in the recommended reading list.
  • These are some of the most popular repositories with project ideas:
    4.Open source
  • Send me an email with questions, comments or suggestions (it's in the About Me page)
Author image
Budapest, Hungary
Hey there, I'm Juan. A programmer currently living in Budapest. I believe in well-engineered solutions, clean code and sharing knowledge. Thanks for reading, I hope you find my articles useful!