Day 294

September 15, 2021

Say what now?

I’ve been working on my computer science knowledge for 294 days now.

The repository that I have set up to track my progress has grown over time, collecting various algorithms, notes on books I’ve been working on, minor projects etc. It’s been a great pleasure to work with as a main indicator of how well I am doing and whether I am keeping track of my habit of continuous work or not.

It was a great way of work but as my studies grew and became more and more advanced, way less of it was just writing code. A lot of it is hours of lectures, whiteboarding, writing on paper, discussions, and the implementation itself goes to the side, and thus, my accountability slipped. Since there are no green github boxes to check, it feels like I’m not working when I am working, and I am missing the dopamine hit of ticking them.

A couple months back, I have started CSI at Bradfield, a year-long course that will help me structure, organize, and most importantly - socialize the knowledge that I so deeply desire. That brings me to this blogpost - I’ve decided to follow advice of people who came before me in similar journeys and keep to a public log of my work.

No matter how small the progress, I am going to be logging it here daily. The shame of not publishing a report is one of the ways I am going to keep myself in check.

Focus areas

Tracking work without specifying what I will be working on can get very dangerous very quickly. Tracking for the sake of tracking is a tempting and rewarding habit. To keep myself habitually working on what’s important I have set initial thresholds for various activities.

  1. CSI work. The course is of utmost priority. That work has to be pushed forward daily.
  2. Data Structures & Algorithms | Maths | Leetcode-like challenges. This is a general programming prowess “muscle”. Practicing implementing and solving various algos, working on tidbits of discrete math, combinatorics and probability, or solving coding questions, katas, etc. is a good repetitive task that over months will compound to a hefty amount of serious skill. This I am going to do two days every week.
  3. Reading. I’ve got a long list of various books that I want to be reading but I don’t have a habit to pick them up and read for a bit. Currently I’m making moves on Designing Data Intensive Applications. That habit I want to cultivate daily.
  4. Shop talk. Although I’m not one to participate in editor wars, I believe that incremental improvements to my understanding of the tools I use daily is incredibly important. Thus I will, once weekly, learn a few things about the core tools - whether that be vim, git, tmux, bash, or else.
  5. Project work. At the end of CSI I am to present a capstone project. Knowing that I will most likely start work on it a week before I have to submit it, I am starting now. I believe I have very little ability to even correctly choose the project, if I start now and compound the interest of the attention I give it, I expect a better result than the former option would give me. For that I initially am planning to give a day a week.
  6. Flashcards. This one is simple. I’ve used Anki in the past to practice a variety of topics, and I am simply going to jot down anything I need to memorize or am frequently forgetting, and practice them using the default spaced repetition method.
  7. Exercise and rest. That one is so important it almost should be number one on the list. Being healthy and rested is key to sustainable success. I want to keep a solid sleep schedule and a reasonable cardio exercise, at least 2 times a week.

How exactly tho

All this looks like an insane amount of work, especially when you take into consideration that all of that I am doing whilst working full time. The methodology I am employing is based on an amalgam of ideas I picked up from a variety of sources. When it comes to habit building, I found Atomic Habits to provide a great framework. Steve Vai’s writing about Martians and their sex life, with the 30h practice regime (if you can find a pdf online) are great insights into a process of a master, and last but not least A Mind For Numbers by Barbara Oakley helped me learn how to learn.

Day 1, kinda

Even though I’ve calculated the actual amount of time since starting focused study, this blogpost feels like a day one in many regards. Writing down the thoughts and deciding to be accountable out in the open is a new chapter. I hope that (if anyone is reading this) it will help you to learn from my process, mistakes, and successes. I don’t think further posts are going to be as lengthy as this, given the format I am assuming to follow. But then again, who knows what the future brings. For now I am going to sit down to implementing a virtual machine for my “Introduction to Computer Systems” class.


Written by Daniel Kaczmarczyk, a software engineer and educator. you can find me on twitter or email me at daniel.kaczmarczyk@hey.com

a pale blue and yellow circle