Better Programmer
2018-08-25T00:23:28

I recently came across a blog post at malisper.me[1] wherein the
author (Michael Malis) describes how he has improved his coding and
other related skills in the last one year or so.

The most interesting changes that I could find were about reading a
technical paper per week, and recording his work session and then
revisiting it at a later date.

Reading a technical paper is a great way to improve skills. Though
reading here won't mean just reading, but also preparing notes for the
same and registering everything in memory so that the registered
information can be recalled when desired.

There are multiple ways of creating notes. I used to create extensive
paper notes over the years (actually I started creating paper notes
when I was turning into a lazy sloth, not exercising my hands and
started having pain with too much typing). These have two major
flaws:

1. These are not always available. If I am outside without access to
  my notebook, then I am screwed. I can't check my notes, and there's
  a high chance that the time is then wasted on phone.

2. I can't search my notes. Once upon a time I thought I'll keep notes
  as well as an index to properly file these. Nope, didn't happen. I
  kept on making notes without filling in the index and it soon
  turned into a dumpster.

3. I can't tag my notes. There is a lot of information which would
  have so called cross-cutting concerns. Something is both math and
  science, something else is both science and music. Enough said.

So I have made 2 changes to my (ever changing) workflow:

I have started making notes in the majestic Emacs with the marvellous
Org mode. I can tag my notes, I can grep them, most of these are
available as a git repository which I can access from anywhere (even
my phone). On Android there's orgzly which can read org mode files,
though I've not used it too much. Anyhow, phone is not meant to read
so much notes.

The second change is to install the superior Anki which allows me to
take notes on my phone or on my laptop, and then revisit them either
on my phone or my laptop. I just can't describe how amazing it feels
when the knowledge flows from my brain to my keyboard. I have used
Anki to create notes while programming, and these days to create
questions while reading research papers. Anki forces me to revisit
these questions at predefined interval. While you can not visit the
questions, but I've done that once and Anki threw hundreds of
questions back at me which caused me enough grief. Anyhow, the trick
is to create few questions everyday and keep up the daily revision
schedule.

Coming back to recording the work session, I find that both amusing
and interesting. That's something which makes perfect sense -- Michael
compares that with atheletes who study their training footage to
understand themselves better. The questions then becomes how often
does one do that? He does it everyday and then looks through the
footage on weekends. I believe that doing that will have two benefits
in my case:

1. I will stop wasting my time by going to leechers like HN and Reddit.
2. I will focus on work because of the Big Brother effect.
3. (Bonus) I might actually see where exactly I can improve.

While I have been doing the Anki thing for quiet some time now, and
have close to 200 cards in my drawer, reading papers is something I
wanted to do for a long time. I have started with a few ones, trying
some Anki workflows that I have found somewhere else[2].

I now have to keep walking on the same path, busting my ass in the
process and measure how things are a few months down the line.

[1]:
http://malisper.me/my-approach-to-getting-dramatically-better-as-a-programmer/
[2]: http://augmentingcognition.com/ltm.html