How to structure learning for maximum return

April 10, 2019

Photo by Tim Gouw on UnsplashPhoto by Tim Gouw on Unsplash

In IT, it’s very difficult to keep up-to-date. A full-time job doesn’t give you a chance to upskill or try new things because you’re too busy dealing with legacy code, developing features, etc.

Yet, self-development is an important thing and I’ve tried my best over years to make it a habit.

For the few past years, I’ve conducted a few experiments towards self-improvement, and I’d like to share a few of those here.

I spent one year reading fictional books (actually not that many books in total, but way more than I usually read).

The result was controversial. I read a few interesting books, but found literally nothing useful for myself. Instead of answers I got just more questions.

Then I tried to read some books about processes. I thought that it could help me to be more productive at work and in making some decisions.

Unfortunately, it didn’t work well. Probably, I now understand about processes more than before, but to incorporate this into actual work one should have enough of influence (which is not necessarily the case), and you need other people to share your opinion.

I should say that this actually had two outcomes: 1) I became a bit more calm about decisions and how people communicate with each other, 2) I felt ineffective in my inability to change the way other people work.

Then I spent some time trying to fill technical gaps. And I think the information I consumed gave me the most boost compared to previous attempts, though anyway I felt a bit unproductive, as the way I tried to learn was a bit random.

After that I tried to come up with a more structured way of learning, which I will try to share here.

Plan of attack

First of all we need a high-level plan, and then we’ll fill in some details. And with the plan, we need some tool to help us keep track on it.


I considered three frameworks:

Additionally, what resonated with me is the article about personal planning using GIST. I adapted it and improved in some directions to better suit my needs.

Maybe for you another framework will work better, it’s up to you to decide.


GIST a bit new framework, so not so many tools can be used to work with it out of the box. And it was actually a challenge to find what tool to use. I had few options:

So, I decided to use Airtable as a single source of truth.

Ways to gain knowledge

There are different ways to learn something new. Some of the things should become a daily routine and some of them needs to be planned:

Read books

Books have essential knowledge on particular topic. It is good for dive in to some area or to systematize knowledge. Some books are just easy reads, some require thorough work.

Read articles

Articles are good for some quick dive-in, learning from others’ experience or understanding what other people are doing.

Watch videos

Videos unlike books or articles provide additional visualization which is good for tutorials or presentations.

Listen podcasts

Podcasts are like videos. You can subscribe to some podcasts streams and save to listen them later.

Make investigations / Write articles

Good way to learn something is to try it in action, investigate and then write an article to share your knowledge. Writing articles provides additional level of understanding the problem.

Create pet projects

Pet projects is like advanced version of previous point. Instead of writing article on some topic you create working product or prototype and share it with the community. Sharing adds additional quality threshold on result which is very valuable.

Attend conferences/local communities

Conferences and local communities besides talks themselves give you a chance to chat with other people and understand mainstream topics and issues.

Organizing work

It is very important to set up a concrete goal. “I would like to be a better programmer” for example is not a good goal, because it is not clear what you exactly should do and how later understand whether you achieved goal or not.

For setting a goal it is good to use OKRs. Basically you set Objective (Goal) and some Key Results (ways to validate your goal and set some measurements of success). For example I can say that I’d like to learn Dart programming language. This is the objective/goal. As a key results I will say that:

You can see that first KR is concrete — as soon as I write a “Hello world” program I can say that I achieved result. Second KR is vague as it doesn’t state what basic features I want to learn, what these basic features are and how to understand that I actually learnt them. So this KR is bad and you should avoid creating such. Create concrete KRs with clear outputs.

As you have set goals you should come up with ideas to reach these goals. Basically ideas should be easily created from KRs as they are heavily related. So, for “Learn Dart language” the first idea would be “Write Hello World program”.

Later create number of Tasks for each idea with some low-level actions. Tasks is actually what you’ll work on. For given example it can be: 1) download and setup Dart environment, 2) Find tutorial on basics of Dart (and read it), 3) Write “Hello World” program

Note on Step projects

I decided to use GIST as a framework. Though it is a bit difficult to implement it as is for personal development. As author of original article of GIST for personal planning said:

Often personal ideas can immediately be turned into tasks. For example if I chose to travel to Japan, there are no intermediate steps to accomplish this idea, just a list of tasks.

I extended this by removing Steps from personal planning completely. They provide more mess than help (again framework for process helps you to achieve your goals not rules what you should do).


I’ve created Airtable template for GIsT for personal planning. On Goals tab one can create a Goal and provide list of Key Results. Status of the Goal is calculated based on child Ideas. Also view hides all Done Goals as we’re no longer interested in them.

On Ideas tab one can create some Ideas and link them to particular Goal. As with Goals status of Idea is calculated based on child tasks (and done ideas are filtered out). As a homework you can also add ICE score fields for the Idea table in order to decide which ideas might impact your learning more.

On Tasks view one can create and manage Tasks. Actually this is the view one will use more than others. Also for Tasks Kanban board suits very well.

With all these you should be able to organize your learning and be more effective. Just do not forget to revise your Goals and Ideas over time (at least each month).

As a bonus this is my setup on a mobile device I use for organizing learning:


Try to add few high-level goals. Try to split them into ideas and tasks. At least each weekend try to take some tasks. And review your plan over time.

Learn and improve.

Happy learning.