Sunday, January 3, 2016

Paper writing process

Paper writing is an integral part of doctoral studies, especially in the field of Computer Science, where a student typically writes several papers during the course of his graduate studies. However, writing well is not an easy task. During my graduate studies, writing well was one of the toughest challenges.  I was fortunate to have great mentors who helped me in this regard. There were a number of key ideas and helpful guidelines that I picked up, which I describe below. However, these maybe specific to networking/systems papers, although some of the guidelines may be useful in general.
The key high level message is writing is a highly iterative process, start early, build an outline and then zoom in.

The writing process...

1. Outline: This consists of section headings and for each section in a bullet form the key components that will go in the section. I like to create this outline as soon as I am clear about the problem I am solving and the broad direction I am taking. Then in a highly iterative process I like to populate these sections.
2. Problem description: As I begin, I like to ask these key questions: What is the problem? Why is it important/interesting? What is challenging? If I solve this problem, what will be my key contributions/insights? A system, algorithm, data-driven analysis, measurement study, and some times a combination of these. The answers to these questions usually go into the introduction.
3. Design sections: This is when I have have designed the system or algorithm/optimization. In the case of a system, I like to have a system figure as early as possible. This figure shows the high level inputs, key system modules and outputs. In the case of an algorithm or optimization, a high level figure plus the mathematical formulation for the optimization and algorithm. These design figures are also helpful in getting feedback from collaborators.
4. Implementation/Evaluation: Having a brief description of how my final system/algorithm will be implemented, what are the key pieces. For evaluation, what are the key metrics? If possible add place holder figures, with a description of x and y axis, and the description of figures.

At this stage I usually have a draft, which is like a detailed outline and I expect that I have a clear picture of how the paper is going to look like. I like to go back to the introduction, start writing an end-end introduction.  The introduction could be split as follows: background, motivation, problem, challenges, solution sketch, contributions. It some time helps to make sure one can describe what the paper is not about? (Scope). Then I start populating the other sections. Making several iterations, asking for feedback from lab mates and colleagues, and hopefully one has a diverse set of feedbacks, before the paper is sent out to the reviewers.

Some other helpful writing guidelines...

1. The leading sentence of each paragraph is the most important. It should tell the reader what is to follow or what the paragraph is about.
2. The introduction is a key section. It should be clearly written and iterated over many times. After reading the introduction, the reader should be clear about what problem you are solving, why is it interesting and important, what approach you adopted and what are your key contributions?
3. If its a system paper, the system overview section or the design section should come up relatively early in the paper draft.
4. Make the why very clear as you write. Why did you choose this design? Why this works? Why something else doesn't work?
5. Characterize but do not over simplify. True for related work as well. It helps the reader understand when things are characterized and itemized.
6. I started off being very verbose. Using words like that, other connectives quite often unnecessarily. Avoid these.
7. Figures for illustration of an idea and concept are very helpful. Walkthroughs and hand holding can be required when explaining a complex concept or algorithm.
8. Always think like the reader, who is reading your work for the first time and has no background on what you have done.
9. Avoid both being hasty and being a perfectionist when writing. Writing is a highly iterative process, and the writing of a paper gets better as you iterate more and more.
10. Set the right expectations. If you have too little a time, chances are you will not be able to write well.
11. Spell checks, double word checks, bib checks
12. Macros macros and macros in latex
13. Use a nice latex editor --- texstudio rocks. You can go from the generated pdf to the source code and have multiple windows.
14. Follow a top-down approach in writing.
15. Writing comments on paper and then not loosing them :).