As a software developer, you are probably well aware of the feeling: You are overwhelmed by the amount of interesting stuff you want to test and learn. But I’m sure that this problem is also very common in other fields.

If you feel like me, you may read and watch various books, blog articles or online courses, but you won’t really keep much of their contents.

In today’s article, I’d like to help you to learn more effectively about the topics that really interest you, wasting less time.

I apologize in advance for all my personal examples coming from my projects as a software developer, but I’m sure you can draw parallels and transfer my experience to your own even without the appropriate knowledge.

Before we dive in, I would like to introduce you to a tool that has often helped me when I was looking for an initial idea of a topic: is a website that lists sources based on a keyword that offers you learning materials. There are many different topics and it can’t hurt to drop by here.

Before I restructured my learning flow, I used to google for “How to learn XY” and work through the first tutorial I could find. You can certainly imagine that this is not really effective. Often the contents are outdated, incomplete or just incorrect. Another problem I often had is watching video tutorials without trying out the acquired skills directly. Based on the idea “That looks easy” I watched the whole video and didn’t even get a simple “Hello World” application to run afterwards.

I have fundamentally revised my process of learning new things. My new concept can be described in a single sentence:

Don’t learn without a reason

Don’t learn anything just because it’s hip or because everyone else seems to use it. Learn something because you are enthusiastic about it and, more importantly, because you have a real application for it. Vice versa, of course, if you have an idea for something, you can also use this opportunity to learn something new, i.e. to implement it with a different technology or something similar.

For example, I had the idea to write a simple app to manage lists. The application should only be able to manage shopping lists, for example, as efficiently and uncomplicatedly as possible. The apps I found on this topic were simply too bulky and cumbersome for my application, which is why I decided to write my own.

I took the opportunity to improve my knowledge in Android development. I’ve hardly ever worked with the integrated SQLite database on Android, and I’ve decided to try an OR mapper that I’ve only read a little about so far (For everyone who’s interested: Room for Android, I’ve got a post on the topic here. For those who don’t know: an OR mapper is used to transfer data records between an application and a database).

You can see the result here.

So come up with an idea you need to learn what you’re interested in. Then learn exactly what you need to get ahead with the implementation. This gives you the best opportunity to apply what you have learned and to check immediately whether you have really understood it. At the same time, you have a concrete goal in mind as you learn so that you are able to improve measureming your progress.


My concept of learning things quickly and effectively can be summed up in one sentence: Don’t study without a reason.

  • Set yourself a specific goal to work towards
  • Break down your goal into small work units
  • Start with the seemingly simple things
  • Learn something when you need it and can put it into practice right away

If you can’t think of anything to take as your goal, you can also simply just recreate existing things.

Finally, you don’t have to learn every facet of something. The important thing - which you will also learn through this concept - is the ability to ask the right questions. In most cases you will be able to find details within a very short time that you don’t have in mind.