【这是自己在2012年5月16日随手记录的,一直没想过与大家分享。一方面觉得自己研究水平还比较初级,似乎都是大牛才有资格介绍这种话题;另一方面,觉得自己的很多见解也是比较肤浅,而英语写作水平也不高,公开出来很可能会贻笑大方。但昨天看到一篇文章,忽然心中顿悟,觉得自己这个阶段更需要与其他人交流分享。】
My Story at Princeton
I just completed the PARSEC project and started to look for new research projects. I came up with an idea that I planned to work on for 2~3 years with a group of 3~5 students. I discussed the idea with Prof. Kai Li and asked for his advice.
I originally thought that Kai would like the idea, but he gave me unexpected feedback. He said that the project is too ambitious to be finished by just one person in a short time. Furthermore, from the methodology perspective, usually, there is only one best solution for one specific goal. My idea violated the natural rule that achieving three goals by doing just one thing. He suggested me to firstly look for an idea that I can make progress on in three months.
I had to admit that I was stunned by hearing the comment that was not supposed to be spoken out from Kai's mouth. I used to hear him talk about how to identify a research topic when I was in ICT several years ago. He disagreed with the way ICTers do research projects whose goals are to prudently complete the requirements of proposals. He told ICTers that you need to setup ambitious research projects aiming at global demands and you also want to tolerate failure since good research implies high risk.
In his office, he kept talking about his opinion, experience as well as some concrete examples. He said, "if you devote yourself on a long-term project when you are just a junior faculty, you would probably not get any publications for a while, then some issues will show off. You might encounter doubt. People will doubt you. Especially in China, there is performance review every year. So you need to escalate your confidence through the progress of a series of short-term projects.". He added, "this proposal is sort of inappropriate but I'm not gonna to criticize you. Actually this is a good exercise. You can learn how to identify proper projects from these lessons."
After I walked out from Kai's office, I reflected on my original way of doing research. It seems that I always come up with a bunch of rough ideas but never refine those ideas to several concrete challenges. Thus, I always propose kind of big projects. How to identify a proper idea? In fact, finding an idea means finding a good problem. I think there should be several common steps.
An overview of Research Flow
The following chart illustrates my understanding of how to carry on research.
Case Studies
Let's look at two case studies.
1. Dr. Xinyu Zhang wrote an article on how he did the research that ended up with ACM MobiCom 2011 best paper award ("获得ACM MobiCom 2011 最佳论文奖",科学网). I drew the diagram to describe his experience according to the article.
In 2008, Xinyu took a course on real system and learned the idea of DVFS that is widely used in microprocessor. He asked a question that "why not apply DVFS to wireless receiver?". After doing survey and thinking, he found the reason that wireless receiver is required to obey Nyquist-Shannon Sampling Theorem in order to correctly receive and decode signals. It seems impossible to break the theorem, so he thought the idea was not doable. But in 2010, one day when he was reading papers, he suddenly came up with a solution that receiving and decoding can be decoupled. Then, he quickly implemented his idea and verified its feasibility. Finally, this work won the ACM Mobicom 2011 best paper award which led him to be a faculty of University of Wisconsin Madison.
In Xinyu's story, I think the key reason he succeeded is that he had distilled the key challenge in 2008.
2. Prof. Kai Li was elected as a member of the National Academy of Engineering in 2012 for his contributions in the fields of data storage and distributed computer systems. Kai pioneered the distributed shared memory (DSM) techniques that allow users to program using a shared-memory programming model on clusters of computers.
I used to ask Kai how he came up with the great idea, and he answered that originally he was working on implementing a message-based programming model by RPC that was just proposed in the early 1980s. But he struggled with handling pointers between different machines. So he asked a question that "why not use global address space in the distributed system?". He delved into the question and found that the key challenge was how to maintain data coherence among multiple machines. He borrowed the idea of CPU cache coherence protocol and applied it to DSM. Actually, his prestigious paper on DSM is entitled "memory coherence in shared virtual memory systems", which has been cited by more than 1600 times.
Kai's story exemplifies the importance of distilling key challenges after coming up with a rough new idea.
Actually, "how to do good research?" Perhaps this is the question that every researcher used to ask himself or herself. This article presents my thought and understanding on how to do good research. Be cautious that I am a good researcher yet but just a junior guy. You comments are welcome.