Sunday, July 30, 2006

How can I know for sure that I know?

Learning is an elusive thing. The other day I was reading an interview of Robert Gallager, a pioneering information theorist. The man had a really deep understanding of information theory, and he frankly says that it took him a lot of time to understand some really simple things... well, things that we tell each other are simple. My conjecture is that very few people understand the "simple things", but most of us do a pretty good job of keeping up the pretense.

For people in positions like mine, learning is an unending process. In my experience, learning by reading alone leaves too many gaps. Whenever I try writing what I think I understand, these gaps immediately become visible. Implementing, when possible, further enhances understanding. A person who has implemented the BCJR algorithm knows a lot more about it than a person who has read about it.

How to test the depth of understanding? Two tests are useful. One, you should be able to solve any problem based on the content. Two, try explaining it to a person (or an imaginary person) who does not know the content, but has the background to understand it. Both are time-consuming exercises. Gallager claimed that he enjoyed writing his book (which was an exercise in making material that he knew accessible) more than he enjoyed writing his papers. This is probably a trait to be found in every great teacher, but I believe that a penchant for simple, solid understanding can also go a long way into making a person a great researcher.