Contents

My programming 2-year-plan

Tianci Hu Marrero

2021-06-01

--

It has been almost 2 years since I started teaching myself programming. After 2 years, I have gained some insights on the difference between credentialed learning and learning on the wild. In credentialed learning, a fixed chronological and cognitive structure is imposed on the students. This approach gives the students more mental room to reckon with the course materials one bite at the time. The downside? It costs a lot of money and you can get used to being told what to do. Once released on your own devices, you have to relearn total autonomy. I had the similar experience after quitting my full-time job as a video producer and starting my own writing business. In the first few months, I often woke up with a panic. It took the better part of a year for me to tell myself what to do.


For learning on the wild, there is a heavy overhead in administration. At every step the way, I spend a significant amount of time deciding what to learn, how long to learn it, and what specific tasks to do on each given day. To be honest, this continuous arbitration can become taxing unless I become good at compartmentalizing and managing my cognitive resources. Going to the Recurse Center definitely exacerbated this challenge. The community presents a kaleidoscope of new technologies, methodologies, mental models, and projects, so much so that I lost my own footing and took on too much, only to achieve less than what I desired in each thing.


Now that I am more than half way through the batch and have assuaged my beleaguered cognitive overload, I understood that it was important to manage my brain, treat it like something limited, and plan according to this limitation. This is why I am committing to writing the list of intrusive thoughts that pop into my mind when I was doing something else - things like "I should learn Rust." and "I should read the iptables manpage back to back". In other words, I am committing my intellectual ambitions to disk storage, so I can have more RAM to commit to current tasks at hand. Here is my programming 2-year-plan:


2023

Dids

1. Learn Go 2. Nand2Tetris


Technical debt:

  1. Migrate immigration data site to EC2 instead of Heroku.
  2. Write bash scripts to automate the daily spawning of background workers.
  3. Restyle UI.

Projects:

  1. All the protohacker challenges.
  2. Arduino toy for Matteo

Programming Language & tools:

  1. Read "The C Programming Language" and do the exercises.

Books & Papers:

  1. Designing Data Intensive Applications (almost done)
  2. How Linux Works (halfway done)
  3. The C Programming Language, as shown above
  4. Pro Git (halfway done)
  5. "Kafka: a Distributed Messaging System for Log Processing"

2024

Technical debt:

TBD


Projects:

  1. All Gossip Glomers challenges.
  2. Linux Keyboard Driver - written in C.
  3. Seeblin app for playdates

Programming Language & tools:

  1. Rust
  2. Perl
  3. Figma

Books:

  1. Linux Device Driver 3
  2. The Rust Programming Language