2022 is here, and as much as I try to be reflective on a day-to-day basis, my pattern-seeking brain places special emphasis on this day in particular. So here’s my thoughts on the past year, and ideas going forward.
One year ago, I wrote about following my nose, which at the time entailed diving into the CPython internals, and immersing myself in systems work. While I had some painful lessons this year from not following my gut and straying from the path1, I’m pleased that following the direction I’d set at the start of the year has been extremely fruitful.
It’s interesting how much can change over a year, and I’m continually surprised at the degree to which one can reinvent themselves over and over again. Slightly more than a year ago, I was completely uncertain of who I was as a computer scientist2, and this confusion was reflected in my haphazard endeavours. Now, I’m fairly certain that, at least for the next few years, I’ll be focusing on systems, and everything feels aligned internally.
All things considered, 2021 was a productive year. Life has its dark moments, but many days were enriching and purposeful. I learned a lot, clarified my life’s mission, spent time with family, met great new friends, caught up with old friends, found a job, saw my sister get married, became a serious open source contributor, started dancing again, and survived to tell the tale.
2022 and beyond
Looking ahead, this year marks the end of my formal education (about time) and presents many opportunities and potential pitfalls. I’m blessed to have received a great education for the past 24 years, but lately it feels like I’ve outgrown it — I know what I want to learn, and I know enough about subject matters and about learning that I can teach myself effectively or seek out teachers outside of school; these days, schoolwork gets in the way of this business. This is in stark contrast to the time I had before university, when I didn’t know enough to train myself and just fumbled about. At the same time, I’m cognisant that without a proper structure in play, it’s possible to do great harm to oneself (or great nothing, which is close enough to great harm).
So now that I’m stepping out into the big and exciting world of lifelong informal education, what are the ingredients to a successful recipe? A few things: stimulus, codification, practice, feedback, experimentation, enrichment3.
The world is more vast than one human can experience, and it would take millennia to personally rediscover and recreate all the knowledge out there. So we must take in existing high-quality ideas. This can come from direct experience, from books, from conversation, from videos, and many other sources. These are all great, and I use all of these. But my main weapon of choice is research papers.
When I talk to researchers, when I talk to people wanting to engage in entrepreneurship, I tell them that if you read research papers consistently, if you seriously study half a dozen papers a week and you do that for two years, after those two years you will have learned a lot. This is a fantastic investment in your own long term development.
But that sort of investment, if you spend a whole Saturday studying rather than watching TV, there’s no one there to pat you on the back or tell you you did a good job. Chances are what you learned studying all Saturday won’t make you that much better at your job the following Monday. There are very few, almost no short-term rewards for these things. But it’s a fantastic long-term investment. This is really how you become a great researcher, you have to read a lot.Andrew Ng, Inside The Mind That Built Google Brain: On Life, Creativity, And Failure
Papers are a great learning tool. Not only do they present novel ideas that are peer reviewed and have gone through many rounds of polishing, they also usually take the time to succinctly present the background knowledge needed to understand these ideas, and they conveniently come with a great list of additional reading materials in the form of citations. If you’re the sum of the five people that you spend the most time with, then you want to be hanging out with the experts.
My goal, and I’ve hit this goal for the past few weeks, is to read at least two papers a week (more, if able, and if inclined) critically and deeply. Mostly foundational, and mostly curated papers.
Flipping through my notebook from freshman year, I was surprised to see many nuggets of information that I’d simply forgotten about. I’m optimistic that the information was retained and potentially incorporated into my life, but realistically most information that we learn is not immediately applicable, so this is unlikely. One needs a system to encode their knowledge that 1. improves retention of that knowledge and the ability to recall it, and 2. makes knowledge discoverable.
From what I see, the Zettelkasten method seems to be effective. The idea is to create a heavily-linked system of ideas that is navigable. This allows the system to produce information that “surprises” you because of links you may not have foreseen or recall creating, and also makes you write notes more intentionally which helps you process and learn the material. I’ve only been using a zettelkasten for a few weeks and it has already generated productive discussions and connections. I look forward to witnessing my notes evolve over the next few decades.
Knowing is not enough; we must apply. Willing is not enough; we must do.Johann wolfgang von Goethe
Something that was made painfully obvious to me through dancing — we can take all the lessons that we want, and learn all the theory, but unless we drill, these lessons won’t become incorporated into our being and at the end of the day we’d have wasted everyone’s time. For computer science, the act of practising is multi-faceted.
In terms of coding, I plan to continue working on projects. Last year I wrote two database systems, an operating system, a distributed file system, a programming language, a ray tracer, and worked on the Linux Kernel. This winter break I’m working on writing a compiler. I can’t say for sure what the next project will be, but the important thing is to always have a project in the pipeline.
In terms of knowledge management, I view working on my zettelkasten as part of my practice. But I also need to practice generating and communicating insights. Hence, I’m going to write more reviews on computer science papers, and participate in more critical discussions in computer science.
A critical element of deliberate practice is feedback. In the absence of feedback, we calcify bad habits and mental models, and limit our horizons for growth. There are two important elements of feedback: measurement and coaching.
Measurement is supposedly easy to achieve on one’s own because it only involves tracking forward predictors such as how many hours were spent practising such and such thing. I’ve found that the head space required for such disruptive tracking saps my mental energy quickly, so instead I rely on habits such as reading a paper every morning, followed by writing until lunch, then exercise, then dance, then study. With these habits, measurement can be done by simply multiplying the hours spent on each habit by the number of days I’ve followed this habit. Of course, this is subject to drastic change when school resumes and when I start working full-time, but I believe the general principle is correct.
Coaching is a bit more interesting. I once had a teacher, Dr. T, tell me that I needed to find a mentor. Another supervisor, P, told me the same years later. My immediate thought at the times were “wait, why can’t you be my mentor?” But I now realise that our interests and personalities didn’t quite match up, and also, that’s not how it works. What happens instead is that you do something, and someone takes an interest in what you’re doing and offers some tips. Then, and this is important, you must go and do the things they suggested, then followup with what you tried and what you discovered and go from there.
The goal then is to actively do things and seek out feedback, and then followup. Followup is what most people miss4.
It’s not enough to simply do the things that are already out there, one must strive to create. The ways to experiment with other aspects of my life, like dancing and writing, is clear to me. If I’m being honest, I’m not as good about experimenting in computer science. I’m learning, and I do a little bit of research on my own and with professors, but I need to become more effective at this.
So for now my goal is to spend more time on my research project with the Microservices Observatory research group to get practice and mentorship. Once I graduate, I plan to take these lessons and conduct my own experiments. What this entails, I’m not sure. My friend Nick once mentioned a great idea about writing a database system in Rust to serve as a platform for experiments. I may explore in this direction.
One dimensionality is harmful because it makes it hard to be creative and think in different directions. It’s also boring.
So one needs to take steps to actively enrich their lives with different experiences, both internal and external. Internally, my goal is to improve my meditation practice (step one: meditate daily) and to read more. Here, my reading goals are significantly relaxed, and I’ll choose to read whatever it is that I feel like reading. Externally, my goal is to maintain a level of athleticism that allows me to enjoy any physical activity that looks interesting, which means I need to be better about maintaining my gym habit, and to actively seek out new activities. These last few months I picked up longboarding, hip-hop, and poker, and I’m open to spontaneously exploring more things5.
I’d like to talk a little about why I care so much about learning. My hope is that such a desire is self-evident (and perhaps for the reader of this reflection, it is so), but from the things that I’ve heard people say, and from my observations of people around me, even in a supposedly world-class university, the will to learn — deliberately, obsessively — is anomalous. Yes, humans learn all the time, but few gun to be an outlier. Heck, some people choose not to play when the game has barely begun. This is not realism, this is ego protection. One is able to preserve their ego by saying things such as “Maybe if I really tried I could have done it, but I’m not really about that”. A valid choice, yes, but a choice nonetheless.
Anders Ericsson’s work has been greatly influential in my understanding of life, and I’ll quote from him here.
People believe that because expert performance is qualitatively different from normal performance the expert performer must be endowed with characteristics qualitatively different from those of normal adults… We agree that expert performance is qualitatively different from normal performance and even that expert performers have characteristics and abilities that are qualitatively different from or at least outside the range of those of normal adults. However, we deny that these differences are immutable, that is, due to innate talent. Only a few exceptions, most notably height, are genetically prescribed. Instead, we argue that the differences between expert performers and normal adults reflect a life-long period of deliberate effort to improve performance in a specific domain.Ericsson, K. Anders et al. “The role of deliberate practice in the acquisition of expert performance.” Psychological Review 100 (1993): 363-406.
Life is so short, so beautiful, and so rich. It would be an absolute shame not to match its efforts and to push, to really push, and to see what one is capable of.
- But this is fine. Life is one long multi-armed bandit problem, and I’m more than happy to explore a little to escape local minima.
- More accurately, I thought I knew what I had wanted to do, but it turned out that I was simply ingenuous, and ignored how I felt internally.
- My Singaporean upbringing made it irresistible to try and create an acronym out of this. If we remove “practice”, an obvious one appears. And while funny, I need to think of a good justification before I can start using it while taking it seriously.
- I’m guilty of this too, of course, but I’m going to be more deliberate about it now.
- I also tried out rock climbing a number of times, but I probably need a less hectic lifestyle, i.e. outside of college, before I can do that with more regularity.