My past 3000 days of learning


This posting is mainly written for the class Learning How To Learn. However, it is not bounded to assignment. This will help my future learning, and I hope this will help you to learn from examples, or my cases.

This will embed some code snippets, but you can safely ignore them. They’re only to draw or calculate some numbers.

I’ve learned many learning methodologies, techniques and underlying researches in the class. Now, I’ll use them to analyze my past 3000 days’ learning trials. They are related to the topics:

  • Teamwork
  • Practice, Illusion of competence of learning
  • Process, not Product
  • Repeat in spaced manner, to form chunks
  • Action: Journaling, Pomodoro

My Trials

I finished mandatory military service at 2006. Since then, I’ve been trying various things. Some are for work, and some not.

I collected somewhat big learning trials for almost 8 years, approximately 3000 days.


Sorry for the big drawing. You can see the full picture at flickr page. I’ll list them up here in plaintext:

In [5]:
for trial in Trials:
    print('%-30s\t%s ~ %s' % (trial['name'], trial['start'], trial['end']))
Study Ruby                    	2006-1 ~ 2008-1
Study Japanese                	2006-2 ~ 2007-2
Study RoR                     	2007-1 ~ 2008-1
Study Python                  	2008-2 ~ 2014-2
Study Erlang                  	2010-1 ~ 2010-2
Korean brush painting         	2010-1 ~ 2010-2
Study basic statistics        	2011-1 ~ 2011-2
Writing journal               	2011-2 ~ 2014-2
Driver license                	2012-2 ~ 2012-2
Using pomodoro                	2013-2 ~ 2014-2
Korean traditional archery    	2014-1 ~ 2014-2
Study Dot Language            	2014-2 ~ 2014-2
SICP                          	2008-1 ~ 2011-1
HTDP                          	2011-1 ~ 2012-1
Aosabook                      	2012-1 ~ 2012-2
JMBook                        	2012-2 ~ 2013-2
MMIX                          	2013-2 ~ 2014-1
IPSC                          	2014-1 ~ 2014-2
PCI                           	2014-1 ~ 2014-2
MIA                           	2014-2 ~ 2014-2
Murphy                        	2014-2 ~ 2014-2
Coursera ML                   	2013-2 ~ 2014-1
Coursera compdata             	2014-1 ~ 2014-2
Coursera ModelThinking        	2014-1 ~ 2014-2
Coursera getdata              	2014-2 ~ 2014-2
Coursera learning             	2014-2 ~ 2014-2

Following number 1 or 2 means, first half or second half of the year. For example, 2006-1 means second half of the year 2006.

Trial features

For each trial, I assigned simple meta information. Meta info has 5 categories, each has boolean(True/False) value.

  1. Teamed: With team or not?
  2. Practiced: Did practice in extra time?
  3. Regular: Was it regular?
  4. Paid: Was it paid course?
  5. Success: Successful?

This is the complete table:

In [6]:
pd.DataFrame(M, columns=names, index=[x['name'] for x in Trials])
teamed practiced regular paid success
Study Ruby False False False False False
Study Japanese False True True True True
Study RoR False False False True False
Study Python False True False True True
Study Erlang False False False False False
Korean brush painting True True True True False
Study basic statistics False False False False False
Writing journal False False False False True
Driver license True False True True True
Using pomodoro False False True False True
Korean traditional archery False True True True True
Study Dot Language False True False False True
SICP True True True False True
HTDP True True True False True
Aosabook True True True False True
JMBook True True True False True
MMIX True False True False False
IPSC True False True False True
PCI True True True False True
MIA True True True False True
Murphy True False True False False
Coursera ML False True True False True
Coursera compdata True True True True True
Coursera ModelThinking True False True True True
Coursera getdata True True True True True
Coursera learning True False True True True

In the course, I’ve learned:

  • Learn with team, it works better
  • Practice makes permanent
  • Spaced repetition is important

I have teamed, practiced and regular features on each trials. Are they related to the results? I also have paid info, which is not covered in the course. But I feel it has affected my learning. How much? Let’s calculate conditional probabilities and correlation coefficients for each columns.

In [7]:
for name in names[:-1]:
    pp, pn, np, nn = 0, 0, 0, 0
    for n, r in zip(X[name], X['success']):
        if n==1 and r==1:
            pp += 1
        elif n==1 and r==-1:
            pn += 1
        elif n==-1 and r==1:
            np += 1
            nn += 1
    print 'p(success | %s) = %.3f' % (name, float(pp)/(pp+pn))
print 'p(success) = %.3f' % (float(pp+np)/(pp+pn+np+nn))
p(success | teamed) = 0.800
p(success | practiced) = 0.929
p(success | regular) = 0.842
p(success | paid) = 0.900
p(success) = 0.769

In [8]:
from sklearn.metrics import matthews_corrcoef

for name in names[:-1]:
    print('Matthew correlation coefficient between %s and success: %.3f' % (name, matthews_corrcoef(X[name], X['success'])))
Matthew correlation coefficient between teamed and success: 0.085
Matthew correlation coefficient between practiced and success: 0.408
Matthew correlation coefficient between regular and success: 0.285
Matthew correlation coefficient between paid and success: 0.245

Actually, each columns are not independent, but I’ll ignore it. (Wrong, but not TOO wrong, I guess.)

Base success ratio is about 0.77, and each condition increases the success probabilty a litte bit. It becomes much clearer when calculate matthew correlation coefficients. All 4 features have positive relations, although their strengths vary.

We cannot say it has causality, but at least there must be correlations. And, among those four, practicing was the most important factor for me.


Among 26 items in the list, there are two special trials.

  1. Writing journal
  2. Using Pomodoro

These are not direct learning challenge, but a meta-learning try: creating habits. I can say, these two habits creations are successful, because I’ve been writing journals and using pomodoro techniques for more than a year comfortably. This is more detail how I did.

In the course, pomodoro technique is introduced as a tool to tackle procrastination problem. But my reason to adapt pomodoro is to use pomodoro as a unit of works. In other words, it’s the concept of Process oriented, not product.

  • Journal (In Evernote)
    • Write down next week’s major goals on Sunday night, before sleep
    • Every morning, I declare the things to do
    • Every night before sleep, I wrote retrospection on the day
  • Pomodoro
    • When write down todo list, set a goal of pomodoros. (Example: Study on Coursera for 4 pomodoros, Read books for 6 pomodoros)
    • In the end of the week, check the number of pomodoros and adjust the number of pomodoro for the next week.

Shortly, the chart looks:

After journaling, I did more and more succeeded.

Is is true? I split the whole period into 3 segments and calculate the average number of learning activities(activities per halfyear) and success ratio. Intuitively, Learning activities times success ratio seems a reasonable score value, so I calculcated it also.


Let’s interpret the table.

  • Writing journal: It increased success ratio.
  • Using pomodoro: It increased the number of learning activities.

I concluded that: Both Journal and Pomodoro boost my overall learning efficiency.


I grouped some learning activities in the chart. There are 3 groups. I’ll explain them briefly.


At first, it was “SICP Study Group”. After almost 4 years of SICP Problem Solving(code, personalwiki), we decided to continue the group as Tuesday Study Group. The main purpose is to spend hours together regulary.


Machine learning and Data Science Study group. Most members are(or were) SNUCSE students. One core man started the group, and currently in Season 3, reading “Machine Learning: A Probabilistic Perspective”. Nowaday, I have troubles in following the study. The book seems a little bit difficult for me. So I’m trying to find a way to overcome this hardship in the course materials.


In the company, there are several people to keep learning something. Mainly we’ve been taking coursera classes. It’s like a game to collect certificates. ;-)

I already stated that, With team, learning results better above. Actually, these 3 groups’s results are much better than the total average. Ok, team works. Now, I’m saying about How to maintain the team. Before the course, I had a little bit vague ideas in my mind. While watching the class videos, I realized that,

Process, not product

This concept can be applied to team creation and maintenance.

The Team, especially if the team is for learning, must focus on process, not product. Of course, it is good to have concrete output from learning activities. But if the study group start to focus on generating output - Presentation, Code, Seminar, Finish materials in limited time … -, members are getting stressful. Product is automagically generated as long as study group keeps going on.

In a single task, process oriented goal is preferred because we can start it with easy mind. For instance, Spend 2 pomodoros on physic homework is better than Finish physics homework. This simple policy greatly works on study group. Spend every tuesday evening on solving SICP problems is (usually) better than Finish solving problems in SICP Chapter 2 until next month.

If output is considered more important, questions are skipped. Sometimes, members feel guilty to give easy questions. But they shouldn’t. If all the other know the correct and rich answers for these easy questions, they don’t need the study group. Teaching is (one of) the best learning skill.

So, in my opinion, the team should focus on the learning process, not the product of learning, for long-run.

Why So Many Failures in Programming?

My major is Computer Science and Engineering and I’ve been a professional programmer since 2006. However, you can see many(more than avg) failures in learning programming languages. Why so many, especially programming languages? It’s my field!

While watching the video, I catched the term, Illustions of competence of learning. Immediately, I understand why I failed so many in my field.

I Failed because I was experienced.

I learned new programming languages, frameworks or platforms quickly at first, because I had similar experience and knowledge in my brain. And I began to think, “I understand it. I know it enough for now”. I stopped to code, read and study and feel satisfied. That was a TRAP. Actually, at that time the knowledge and understanding were only in my working memory and NOT CONSOLIDATED YET. Because I stopped further practice, the longterm memory cannot have newly learned materials. This is typical working example of Illusions of competence of learning.

In real learning, the first understanding is just a small bit. Especially about the programming language, you must be able to write the code in the language if you learned it correctly. Understanding the syntax is nothing. Repetitive practice(=Coding) must be followed after understanding to master new languages, in spaced duration.

All successfull learning challenges involved continuous practice sessions, even though it’s not intended.

From now on, I’ll challenge to learn a new programming language(rust) with carefully scheduled repeating coding sessions.


I already listed some topic in the overview. (Repeat!)

  • Study together, it works.
  • Focus on process. Also, I think it can be applied to team activities.
  • Practice is not optional. It is the key to mastering anything.
  • My learning efficiency increased a lot by writing journal and using pomodoro. I hope you also try!

The course doesn’t cover the effect of paid learning. In my case, it results better. ;-)