Circle of Knowledge

Note: This essay uses autolooping video as graphical aids. The videos contain no sounds and are minimal. If you don't see the video, you may need to ask your browser to allow autoplay/autoloop. There may also be issues on mobile platforms.

I. Starting Over

I’ve been programming for almost 3 years now. In late 2019, I sat down and read Paul Graham’s Hackers and Painters and made a decision. I wouldn’t stick with what I knew or what came easy. I would chase down programming, even if it meant abandoning what was safe and embracing what was hard.

Before switching, I spent my early undergrad and all of secondary school learning finance. I was good at it too. Having a head start helped, but I also worked hard to develop my understanding. I spent nights in McIntire’s computer labs reading, studying, and working. I read McKinsey’s Valuations, Moyer’s Distressed Debt Analysis, countless other books, investor letters, and anything else I could get my hands on. I could talk deeply about technical concepts like Net Operating Working Capital, Modern Portfolio Theory, Corporate Investments, and much more. I felt like I could hold my own with the best I knew.

But, of course, that was the best I knew. I might have been confident, but what I knew was only a drop in the ocean. The theory I knew was real, but so were the differences in practice. Numbers don’t come from a formula; they come from people. And in finance, the most valuable knowledge is never shared[0]. It’s hidden by contract or by choice. Everyone keeps cards close to their chest. It was easy to look around and say that I was near the top with the best of the best. And it felt good to think so.

Programming and software were different. It was game over. It didn’t matter how far I had made it in a previous life. I was right back at the start.

Game Over Mario Screen

Unlike in finance, programmers share everything. The hacker mentality and concepts like FOSS captured my heart[1]. At the same time, everything in the open made my own understanding feel wholly inadequate. I saw roadmaps like https://roadmap.sh/backend and thought I was on the journey to Mordor. Or programming language design discussion on Hacker News that might as well have been about quantum physics. I didn’t understand how some people could build beautiful programs in a cave with a pile of scraps[2].

This is an exaggeration, but the point is real. More unknowns than ever before surrounded me, and it was exactly what I needed.

II. Circle of Knowledge

In undergrad, despite my love of finance, the most important course I took was an English class titled “Career-Based Writing and Rhetoric.” The professor was an impressive man who was well-published and well-read. Just the way he spoke told you he had read enough for several lifetimes.

The course itself was unlike others I took. There was only one assignment, never more than one reading for class, and the class was an open discussion led by the professor. In one class, we discussed the research needed for an essay at length, and the professor presented us with a strategy to divide our knowledge. Everything fell into one of three buckets: known knowns, known unknowns, and unknown unknowns[3]. I want to revisit this idea because as I’ve programmed more and more, my unknown unknowns have grown larger and larger. And now, unlike then, I also know about knowledge graphs [4].

knowledge graph

In my example above, I represent knowledge with nodes representing data, evidence, or a single piece of information and edges forming connections between the different nodes.

Known knowns are nodes with edges linking them to other data. Known unknowns are nodes with missing edges or connections to the rest of the data. It’s the knowledge known to exist but not yet understood. Then there is the circle of knowledge. We can recognize everything inside it as known to us in a way.

Outside this circle lies the unknown unknowns, the missing nodes and connections from our understanding. We don’t know what is beyond our circle, but we make guesses about it and even position ourselves accordingly. If we believe there is only a small amount outside the circle, it would be normal to feel some confidence about our beliefs and vice versa[5].

Let’s make a simplified model of how we estimate what we don’t know. From observation, let's say that each time we’ve added to our known knowns, we’ve discovered three new known unknowns. We can then estimate that there are also three more unknowns beyond our circle for each known unknown. Of course, we could estimate that each unknown unknown leads to three more nodes ad infinitum, but let’s assume that we can only estimate what is immediately beyond the horizon[5].

At the start, it feels like we know a lot. We believe there are only three more nodes of knowledge beyond the horizon. But, when we transform our first known unknown to a known known, three new known unknowns are uncovered. Behind those, an estimated three more unknown unknowns each! We went from familiarization with 4/7th (~57%) of the estimated total knowledge to 8/16th (50%). As we continue and discover more known unknowns, we find that we know even less, now only 10/25ths (40%)!

In pursuit of knowing more, we sometimes come to know less. This example is contrived, but it hints at a real problem. The more we expose ourselves to, the better we become, the more we recognize that we know very little. Even as we become experts, we can still feel like an imposter[6].

III. Existence at the edge

Now, imagine we can decide to stand anywhere in our circle of knowledge. When I studied finance, I’d say I stood in the center. I was comfortably surrounded by everything I knew. What was unknown was far away. It felt safe to be in the center, but it was almost useless. The real progress was happening somewhere out there on the edge.

Today, I chose to always exist at the edge. The unknown always lies in front of me. It’s not as safe. I’m always at my highest level yet. On the edge you can make mistakes, fall, and become discouraged. On the worst days, that’s what happens. But I found out the fall is short.

On the best days, I step beyond the edge and discover something new all over again. So, the edge is where I will stay.


Notes:

[0] In finance, the knowledge everyone shares is worthless. It’s just the table stakes. Your advantage must come from something secret and proprietary.

[1] I switched to Linux (arch btw), set up my own website and email server, got a Pi-Hole, used LaTeX for all my assignments (which is weird in business school), and did other assorted hacker and FOSS things. The more free my software was, the better.

[2] https://insights.stackoverflow.com/survey/2020#developer-profile-writing-that-first-line-of-code

Actually, I did. Most people had a head start as I had before, but the anxiety of being behind is real.

[3] This technique is based on the Johari window and has long been used in risk analysis and planning. https://en.wikipedia.org/wiki/Johari_window

[4] Knowledge, of course, doesn’t need to be represented as a graph. It’s a useful abstraction and model, and of course, “All models are wrong, but some are useful”. https://en.wikipedia.org/wiki/All_models_are_wrong

[5] https://en.wikipedia.org/wiki/Dunning–Kruger_effect

[6] I’d argue we behave this way in real life as well. It’s hard to comprehend all we don’t know. If we had to consider all the vast knowledge we don’t know each time we made a decision, we’d be far less confident.

[6] https://en.wikipedia.org/wiki/Impostor_syndrome