The best performance improvement is the transition from the nonworking state to the working state. (John Ousterhout)
Discovering a solution to a mathematical problem is only half of the battle. Actually writing down the argument that you’ve discovered formally can also be a daunting task, especially if the argument is lengthy and is not modeled on an existing one in the literature. While every individual detail of the argument may be clear to the author, the overall structure of the argument may not be immediately obvious. In particular, it is often difficult to make the (important) decisions about the organisation of the argument, and selection of good notation, until a large part of the paper is already written, at which point any changes in the organisation or in the notation often become painful to implement. (Many times in the past, I have started to write a paper without devoting enough thought to the overall structure, and spent a lot of time establishing some lemmas which I thought were important, only to realise later that one did not actually need the lemma, thus wasting quite a lot of time.)
I found that the technique of rapid prototyping from software engineering is useful in ameliorating these difficulties. According to this technique, one does not write the paper in linear order, and one also refrains from the temptation of writing the easiest or most straightforward portions first. Instead, one writes the paper in the following order.
- First, one writes a bare-bones “skeleton” or “prototype” of the paper as quickly as possible; this prototype has the (approximate) statements of all the key lemmas, propositions, and theorems, as well as all key definitions, but all the proofs are omitted, or sketched in very informal “notes to self”. At this primary stage of the writing process, the priority is to get the “big picture” right – the logical organisation of the paper, and some semi-precise descriptions of each important proposition or piece of notation. The fuzzy nature of these descriptions will allow one to easily move parts of the argument around to improve this big picture.
- After the organisation is completed to one’s satisfaction, the second objective is to write down just enough of the proof so that one can make the statements of all the lemmas, propositions, theorems and definitions precise.
- Once this is done, the third objective is to carefully write the key portions of the argument, for instance deducing one key proposition from two previous key lemmas, to make sure that the structure actually works as expected.
- Finally, one fills in all the “routine” aspects of the paper, such as proofs of standard lemmas, or a quick application of the main theorem. Usually, by this stage, the remaining gaps in the paper are so disconnected that they can be filled out in basically whatever order one pleases. This is also a good time to write the introduction and similar motivational sections.
Any decisions which do not impact the big picture should be deferred until late in this process. For instance, if you have a small quantity which is probably going to equal or maybe
, but do not know exactly which it is yet, you could write “let
” for now, and use
as a placeholder for this quantity until you get to the point in the proof where you figure it out exactly what ??? should be, and which point you can edit a single line to complete the proof. (Contrast this with writing
in two dozen places in the proof, then discovering much later in the writing process that you have to go back and change
to
(and
to
, etc.) in those two dozen places. Even with modern search-and-replace tools, this can be an irritatingly time-consuming task.)
One nice feature of this approach is that it can be divided with a coauthor. For instance one author may write an informal sketch of the proof, with many details omitted, then the other coauthor may tweak the organisation and notation, and then fill in the details, and then the first author might then review the paper and add in some remarks and write the introduction. Many other permutations are possible; it depends very much on the nature of the collaboration. Using version control software (e.g. Subversion) can facilitate this process immensely, and I recommend investing some time in learning how to use such software (e.g. starting with this link).
While one is writing one part of the paper, one often gets some good ideas regarding what to do for another part of the paper; e.g. when writing down a lemma, one may have an idea for an example or remark which will illuminate that lemma. When that happens, I do not recommend ignoring that idea, nor do I recommend dropping what you are currently doing to fully flesh out that idea; instead, devote a minute to write down a “stub” for that idea in the relevant location of your paper (just enough to jog your memory when you return to that location), and then return to what you were doing before, so as not to break your concentration or momentum. That idea can then be safely forgotten about for the moment, and revisited at one’s leisure, at a more appropriate stage of the writing process.
The rapid prototyping strategy is often hard to adhere to perfectly, and I must admit that sometimes (especially for shorter papers) I take a very different approach, writing the “easy” and “fun” parts of the paper first (e.g. the introduction, or some simple lemmas), and try to use the momentum generated to then write the rest of the paper quickly. This tends to work well if one is very confident as to how the large-scale structure of the paper will be arranged, but I have regretted using this hastier approach when I found, halfway through the writing process, that a radically different organisation would have been much better.
29 comments
Comments feed for this article
17 July, 2008 at 6:29 pm
Rapid Prototype
Hey,
I am across your site looking for Rapid Prototyping info. I got some great writing tips instead.
Thanks
Ivan
7 August, 2008 at 10:38 am
On time management « What’s new
[…] 7 August, 2008 in non-technical, opinion by Terence Tao Prodded by several comments, I have finally decided to write up some my thoughts on time management here. I actually have been drafting something about this subject for a while, but I soon realised that my own experience with time management is still very much a work in progress (you should see my backlog of papers that need writing up) and I don’t yet have a coherent or definitive philosophy on this topic (other than my advice on writing papers, for instance my page on rapid prototyping). […]
8 August, 2008 at 4:32 am
我如何安排时间(译自陶哲轩博客) « Liuxiaochuan’s Weblog
[…] 受到一些评论的鼓励,我最终决定在这里写一些关于如何安排时间的想法。其实,我怀有这个想法已经有一段时间了,可是就我自己的经验而言,这方面也还在做着探索(读者应该看看我等着写的论文排了多少!)而且很多想法未必成熟。(除了有一些经验写在advice on writing papers,比如page on rapid prototyping)而且,我的一些个人经验恐怕也不能对所有人通通适用,因为每个人都有不同的性格类型以及工作状态。欢迎大家把自己的想法啊,经验啊,或者建议在评论中写出来。(其实,即使我自己的经验,我有时候也不能严格的遵照,挺遗憾的。) […]
11 August, 2008 at 12:09 pm
xinweiyu
A great post indeed! I would like to add some of my thoughts.
I recently found that a good way of “rapid prototyping” is to give a talk on the result before writing the paper. The talk slides then can serve as the “skeleton” of the paper. One good thing I feel about this strategy is that I was forced to focus on the “skeleton” since there is simply no place for details.
14 August, 2008 at 7:56 pm
On Time Management « What’s New
[…] or definitive philosophy on this topic (other than my advice on writing papers, for instance my page on rapid prototyping). Also, I can only talk about my own personal experiences, which probably do not generalise to all […]
27 December, 2008 at 12:22 am
Tricks Wiki: Use basic examples to calibrate exponents « What’s new
[…] worked out already, but without precise details; in particular, I find it particularly useful when writing up a rapid prototype. When the time comes to write out the paper in full detail, then of course one should instead […]
24 May, 2009 at 8:24 am
Ano
Dear Professor Tao,
I have finished my undergraduate thesis and as there was no originality in it, my way of working was: read/learn the thesis problem first and then write it all up. When I had finished the first stage of learning, I knew what to put in the thesis and thus could start with a sketch (everything pretty much taken on the top of my head) and then when this was done I would go on and fill in the details, where I would have to look in the books as one can not remember everything.
However, when it comes to PhD studies, there should be originality in it and I do not see how one would be able to build up the skeleton as one does not know where the path is leading, which theorems that will be included etc. So say the graduate studies last for four years. When should one start writing? Say that out of these 4 years, there is a part including reading graduate courses worth 1 year. So should I spend the first year completely reading courses (assuming one has the possibility to distribute the coursework during the 4 years as one wishes (I am not from the USA, so things here, I guess, does not work as they do there)) and the second year is spent on reading papers and stuff related to your PhD project etc? I guess I am asking for some advice on how one should spend the 4 years. I know there is no universal way that suits everyone but any ideas and suggestions are welcomed.
Thanks
21 April, 2010 at 9:09 pm
Terence Tao
This is an extremely belated reply, but nevertheless: one should distinguish between two types of writing. The first is that of writing informal notes intended primarily for yourself, to help you understand something that you’ve just learned or discovered, and I recommend doing this sort of writing whenever you can: see https://terrytao.wordpress.com/career-advice/write-down-what-youve-done/
The other type of writing is that of formally writing a paper or thesis. There is not too much point in starting the formal writing process unless one already has pretty much solved most of the problem that the paper is intended to address, and one has accumulated some informal drafts of the key steps in the solution (of the type mentioned in the previous paragraph). While some cut and pasting is possible when transferring an informal sketch into the formal proof, I usually find it better to write the formal paper from scratch (starting for instance with a rapid prototype), as this also gives another opportunity to go through the argument and catch any minor or major mistakes or other technical issues that need resolving.
12 March, 2012 at 4:23 pm
Jiasun
Dear Prof. Tao,
I assume that any published paper go through several versions, all the way from preliminary ideas on a scratch paper to a well-organized TeX file. I wonder from what stage would you begin to convert a pencil-and-paper version to a TeX version? I find it hard to think before a computer screen so I always wait until I’ve thought through everything and got everything written down before typing, but seems a lot of time could have been saved if those hand-written drafts were avoided.
14 April, 2010 at 1:14 pm
Anonymous
good question. I am in the same situation
24 February, 2011 at 6:02 pm
Advice on writing paper « Success doesn't come overnight
[…] To reduce the time needed to write and organise a paper, I recommend writing a rapid prototype first. […]
15 March, 2011 at 6:56 am
liuxuewudi
[…] 受到一些评论的鼓励,我最终决定在这里写一些关于如何安排时间的建议。其实,我有这个打算已经一段时间了,可是就我自己的情况而言,这方面也还在做着探索(读者应该看看我等着写的论文排了多少!)而且很多想法未必成熟。(已经有一些经验写在advice on writing papers,比如page on rapid prototyping)而且,我的一些个人经验恐怕也不能对所有人通通适用,因为每个人都有不同的性格类型以及工作状态。欢迎大家把自己的想法啊,经验啊,或者建议在评论中写出来。(其实,即使我自己的经验,我有时候也不能严格的遵照,挺遗憾的。) […]
3 April, 2011 at 5:48 am
我如何安排时间(译自陶哲轩博客)- (转载自Liu,Xiaochuan的博客) « What's new
[…] 受到一些评论的鼓励,我最终决定在这里写一些关于如何安排时间的建议。其实,我有这个打算已经一段时间了,可是就我自己的情况而言,这方面也还在做着探索(读者应该看看我等着写的论文排了多少!)而且很多想法未必成熟。(已经有一些经验写在advice on writing papers,比如page on rapid prototyping)而且,我的一些个人经验恐怕也不能对所有人通通适用,因为每个人都有不同的性格类型以及工作状态。欢迎大家把自己的想法啊,经验啊,或者建议在评论中写出来。(其实,即使我自己的经验,我有时候也不能严格的遵照,挺遗憾的。) […]
13 June, 2011 at 5:34 am
Definition
“…I found, halfway through the writing process, that a radically different organisation would have been much better.”
Why not write the paper in different versions? In particular, it is interesting to expose the defects of the definition-theorem-example pattern; this pattern is good for an efficient writing, but it is too efficient to be regarded or to be meaningful and inspiring…
20 October, 2012 at 8:30 pm
Anonymous
Thanks! Chinese Translation 简体中文翻译:
http://article.yeeyan.org/view/94114/322442
10 July, 2013 at 6:32 am
Rapid Prototyping: An Idea for Getting a Handle on Large Writing Projects — The Deliberate Writer
[…] Terence Tao writes of rapid prototyping on his blog. The term is borrowed from the manufacturing field, in which prototypes are quickly […]
20 August, 2013 at 5:21 pm
Rapid Prototyping: An Idea for Getting a Handle on Large Writing Projects
[…] Terence Tao writes of rapid prototyping on his blog. The term is borrowed from the manufacturing field, in which prototypes are quickly […]
16 November, 2014 at 6:14 am
El Tao de la productividad | Homo Minimus
[…] Write a rapid prototype first […]
8 March, 2015 at 3:11 pm
Write a rapid prototype first | Design Sprints
[…] Terence Tao talks about using rapid prototyping when writing math papers: […]
25 June, 2015 at 12:17 am
dt1510
I also use a version control system for writing mathematics but Git, not Subversion. Subversion saves all the changed files, which may be even several seconds if many of them, but Git saves only the changes made and even for writing a book or big software, the commit takes usually less than 100ms. Also the Git repository is only slightly larger, probably no more than 2 times the size of the actual files than the Submersion repository.
15 February, 2017 at 5:49 pm
More links from math professors – Lucy's World of Technical Communication
[…] excellent idea for “rapid prototyping” method applied to writing papers (not exactly sure what this means but I like it). This seems particularly valuable for those of […]
22 February, 2018 at 8:41 pm
someone_you_spoke_to_in_last_30_days
Hey, what a great “thinker” you are! Really. Making such “deep” links with “other areas” of science. Do you think this is some kind of amazing insight?
Look, I think you’d best stick to solving your math puzzle for the week. Isn’t that what you do, calling it “research?” Serious mathematician you are not. Thinker? let’s not even go there. You are a puzzle solver on steroids. Even your so-called theorems (primes in APs?) are nothing more than glorified olympiad-type problems. In our department, you are easily the best puzzle solver, but I wouldn’t rate you even among the top 10 serious mathematicians. And guess what? There are many who suspect this, and we do talk to each other. Now go and do your silly little puzzles and look for the next photo-op.
11 March, 2020 at 10:28 am
On writing: Write a rapid prototype first – Hacker News Robot
[…] https://terrytao.wordpress.com/advice-on-writing-papers/write-a-rapid-prototype-first/ […]
11 March, 2020 at 1:15 pm
Write a rapid prototype first – GeekWay
[…] The best performance improvement is the transition from the nonworking state to the working state. (John Ousterhout) Discovering a solution to a mathematical problem is only half of the battle. Ac…Read More […]
11 March, 2020 at 3:24 pm
Efrens' Blog
[…] This requires knowing what one is doing, unfortunately. […]
16 April, 2020 at 6:00 am
Boletim da nave 2020-04-16 – Cyber Café da nave Migre Seu Negócio
[…] Por que desenvolver um protótipo o mais rápido possível pode ser um baita diferencial para o seu … […]
24 April, 2020 at 4:25 pm
Boletim da nave 2020-04-16 - Cybercafé da nave Migre Seu Negócio
[…] Por que desenvolver um protótipo o mais rápido possível pode ser um baita diferencial para o seu … […]
7 May, 2020 at 1:54 pm
Boletim da nave 2020-04-16 – Cybercafé da nave Migre Seu Negócio
[…] Por que desenvolver um protótipo o mais rápido possível pode ser um baita diferencial para o seu … […]
30 April, 2021 at 7:06 pm
Writing an academic paper with Scrum – Owen Biesel
[…] different methods for handling the writing process better — I’ve tried Terry Tao’s rapid prototyping method, and I’ve even tried adapting the Snowflake Mathod for writing novels, but I ended up […]