The basic premise of research is to do something new — to boldly go where no one has gone before. This is a daunting task, especially for those who are just entering graduate school and are new to research. How exactly does one come up with these cool ideas? How does one push the field forward or in a new direction? How does one know whether their idea is truly innovative or if they are just regurgitating old material? These were the thoughts swirling in my head as I navigated my way through graduate school. I was in awe of professors and senior graduate students who could read a paper, dissect it, and come up with new and interesting ‘what if’ scenarios to evaluate. I was unsure whether I could ever achieve that level of innovation. What I didn’t realize at the time is that there is a method to this madness, and a process by which one can become a competent researcher.
When the Young Architect Workshop (YArch) coordinators reached out to me to give a talk about how to pick an interesting research topic, I began to think about what it takes to come up with the illusive research topic. This article summarizes the talk I gave at the workshop and enumerates the active measures one can take to be a successful researcher. I have broken down the steps into three categories — Parts, Process, and Potential – and these are covered in more detail below.
‘Parts’ encompasses the list of fundamental tasks that a new PhD student must cover to build the foundation for their research career. Some of these are obvious, such as finding the right professor/area, taking the necessary background classes, and reading research papers. However, there are still choices one can make. For example, should you pick an experienced, tenured professor or a new faculty member? An established professor might have a strong reputation in the field, but they may also have a large research group and less time to spend with you. A new professor may not have the notoriety, but may have the time and strong motivation to help you succeed since that also aids their tenure process.
Other fundamental tasks necessary to be a successful researcher are not so obvious, such as having a strong elevator pitch and a good tool belt. The value of a strong elevator pitch was expertly covered by Susan Eggers in her Eckert-Mauchley awards talk. A good tool belt consists of the software/simulator/measurement skills necessary for architecture research. This includes not only an understand of simulator tools such as gem5/Pin/QEMU, and performance monitoring tools such as perf/VTune/CodeAnalyst, but also scripting tools such as Python/Perl and basic UNIX command line tools such as awk, sed, grep, etc. The ability to run simulations, parse data, and analyze results quickly and accurately is part and parcel of being a good researcher.
Once a solid foundation is established, the next step is to figure out how to find that elusive research problem. ‘Process’ encompasses the different avenues of investigation that can aid in developing a research project
Attack the Big Problems (but be prepared to deviate): Be fearless in pursuing the big problems such as top to bottom security, agile computing for the data center, and breaking through the memory wall. Granted, this can be a never-ending endeavor, but you never know. The key is that you might find some interesting deviations along the way. For instance, trying to solve the memory wall problem might lead to ideas on how to better manage memory accesses for a subset of applications. Success is not just defined by whether you solved the “big problem”, but by what you discover along the way.
Peruse Survey papers: Reading research papers is a worthwhile endeavor, but also a daunting task given the number of papers being published (over 200/year in ASPLOS, HPCA, ISCA and MICRO alone). The best way around this is to find survey papers that provide summaries in order to filter out the ones that are of less interest. The papers should come not only from architecture, but related fields such as OS, programming languages, data bases, power engineering, etc. Cross pollination can be quite beneficial in finding a research topic.
Cross Pollinate: Architecture is an umbrella discipline that encompasses many different areas of computer science and electrical engineering. Research topics now commonplace in architecture, such as architectural power management and machine learning, are the result of intersection between disciplines. There were conferences dedicated to low power before it made inroads into architecture. Similarly, there was little crossover between AI and architecture until about 5 years ago when machine learning became more prevalent. Some of the boldest propositions in research result from looking outside of architecture.
Step Back In Time: Another way to mine ideas is to examine architecture from a historical perspective. Many of the ideas commonplace now are modified incarnations of earlier research or innovation. Virtualization, for instance, was used in large scale machines by Burroughs and IBM in the 1970s, but it was not until the 90s that it took off for general purpose processing. Transactional memory was covered in PL and database communities in the 1980s, and was a dominant topic of architecture research in the mid to late 2000s. Similarly, cloud computing is a modern incarnation of utility computing from the 1960s. Ideas which might have been considered too expensive or cumbersome in the past may hold new value given modern constraints such as process technologies limitations and application requirements.
Build a Strong Network: Finally, very few of us do research in a vacuum. Random discourse with researchers and other grad students can lead to fruitful ideas. One of the best opportunities to gather ideas is during internships. Regardless of the internship topic or the company, you should take the opportunity to talk to as many experts/implementers as possible. Most engineers are not heavily involved in the academic community, but they have amazing insights gathered from years of experience in the field. I have seen these conversations result in multiple research papers and PhD quality work.
The final part of the research adventure has to do with identifying the potential in each of us that can be tapped in our research career. We all have these characteristics, but sometimes they are either smothered or seen as detrimental. However, these traits are also what turn an incoming PhD student into a great researcher.
Learn to Ask Questions: Children ask questions all the time. “Why is the sky blue”, or “Why do some flowers smell?” We have an innate curiosity that is suppressed because we are taught to look for answers. However, learning to ask questions such as “I wonder why…”, “What if…”, and “How come…” can lead to the most interesting insights. The book “Ignorance: How it Drives Science”, by Stuart Firestein presents some thoughts on this topic such as “…don’t talk about what is known; … talk about what you’d like to figure out…” and “… no surer way to screw up an experiment than to be sure of its outcome”. The most difficult part of research is finding the right problems and asking the right question can help define the problem. Once the problem is well defined and understood, there are usually ways to find a solution.
Ignorance is Bliss: In every research area, there is a certain amount of dogma that is inherent to the field. However, one of the benefits of being a junior researcher is that you are unencumbered by these “established beliefs” that can lead to less questioning and risk taking. Do not be afraid of a lack of knowledge. Instead, it can be leveraged to ask questions that perhaps no one has asked before. There are many established beliefs, such as custom design is always better performing that automated design, or speculation is safe, that have been shown to be false over the years because someone did not buy into the dogma.
Failure is the Path to Success: Every successful research project is built on a bed of failures, i.e., ideas that never panned out. You can learn just as much or more from ideas that do not work because they can lead you to the correct path. A paper rejection can lead to a better paper for the next conference, or a product cancellation may mean that the next product is a cleaner, more efficient design. The goal is to learn from your failures and leverage those learnings in the future.
Know and Value Your Strengths: Everyone has natural strengths and weaknesses. Some are big idea people, while others are very detailed and meticulous. Some researchers come with industry experience while others have a deep knowledge base in an area through their studies. In other words, not every researcher is the same. Just because you do not have the same skills as others does not mean you will be less successful. There are many different paths to a successful research career and the goal is to leverage your strengths and bolster your weaknesses.
Find and Follow Your Passion: As Stephen Hawking noted, “Science is not only a discipline of reason, but, also, one of romance and passion”. In the end, you will be the most successful pursuing an avenue of research that you are passionate about. That might require you to change areas as many of us have done. Grad school is a long process with much frustration interspersed with occasional clarity, and, if you’re lucky, an epiphany or two. Therefore, love what you do.
Albert Einstein said it best — “If we knew what we were doing, it would not be called research, would it?” There are no guarantees in research which can be frustrating, but also liberating. It gives one permission to examine esoteric ideas, ask the really interesting questions, and fail more often than not. But somehow or another, most of us finish our PhD adventure and make it to the other side with new knowledge, insights, and the drive to continue the process in our future careers.
About the Author: Dr. Srilatha (Bobbie) Manne has worked in the computer industry for over two decades in both industrial labs and product teams. She is currently a Principal Hardware Engineer at Microsoft in the AI and Advanced Architectures group.
Disclaimer: These posts are written by individual contributors to share their thoughts on the Computer Architecture Today blog for the benefit of the community. Any views or opinions represented in this blog are personal, belong solely to the blog author and do not represent those of ACM SIGARCH or its parent organization, ACM.