How Do You Know What You Don’t Know?


I joined Atomic Object last summer as an apprentice. I was eager to learn and work with people who give a shit about what they do. As an apprentice, I wasn’t expected to be an expert, but I was expected to soak in as much knowledge in three months as humanly possible. I quickly found that there was a lot I didn’t know and a lot that I didn’t have a deep understanding of.

But how could I ever know what I don’t know? I came up with three criteria to help me determine how well I understand a particular topic.

Do I know what it is?

This is the first question that I ask myself. If I can’t identify the topic, I know I have virtually no understanding of it. I could derive some initial assumptions based on the term or technology, but that is not enough for me.

When I come across a topic that I have never heard of, my first step is to find someone that does know about the topic. Sometimes it is my mentor or a teammate; other times it was an article written by an expert in the field. Once I have a better understanding of the topic, I ask myself a second question.

Can I talk to it?

If there are ever any holes in your understanding of a topic, discussion of that topic will put a spotlight on those holes. There are two ways that I can tell when I don’t have a good understanding of a topic:

I resort to generalities.

When I don’t understand the intricacies of a philosophy or a term, I find myself describing it too vaguely. For example, lets say I am just learning Objective-C, and I have limited exposure to Reactive Cocoa. I am asked to explain this gist.

[[[self.propertyA sendSomeInterestingMessage]
    flattenMap:^RACStream *(SomeOtherObject *param1) {
      return [self.someProperty];
    subscribeError:^(NSError *error) {
      [self.someRacSubject sendNext:nil];

If I didn’t have a good understanding of the gist, I may respond with: “Well, the property on self receives a message that it returns, and if there is an error, it sends a message.”

After doing some research of Reactive Cocoa, I may respond with: “Well, propertyA on self receives a message and the flattenMap block is executed that will return a new signal which is a merging of all received signals. If an error occurs, we send a message on a someRacSubject.”

I clam up.

If I’m not confident in my ability to explain an idea, I don’t share the idea at all.

In order to better talk about ideas, I know I need a deeper understanding. These are the times I know I should pick up a book for some heavier reading.

Can I apply it?

This is the final question I ask myself. If I can apply the topic, I have a good understanding. If I cannot apply it, I know it is time to iterate back to the second question and maybe time to pick up a book on it.

It is amazing how well answering these three questions sheds light on gaps in my knowledge or creates a stronger foundation of my knowledge. When I can confidently answer these three questions, I know I have a great understanding of the topic and therefore I’m confident in my ability to discuss and use it.

What techniques do you use to teach or solidify your understanding of topics?

  • Phil Kirkham Phil Kirkham says:

    Seems that working at Atomic makes us realise how much we dont know..

    I like your 3 questions, I’ll make use of them

  • Comments are closed.