{"id":560,"date":"2003-07-17T16:54:45","date_gmt":"2003-07-18T01:54:45","guid":{"rendered":"\/?p=560"},"modified":"2019-01-22T15:42:33","modified_gmt":"2019-01-22T20:42:33","slug":"do_it_right_the_first_tim","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2003\/07\/17\/do_it_right_the_first_tim\/","title":{"rendered":"Do It Right the First Time"},"content":{"rendered":"<p>\n\nNeal Stephenson (<a href=\"http:\/\/lambda.weblogs.com\/discuss\/msgReader$7628#7629\">paraphrased<\/a> by Ehud Lamm):\n\n<\/p>\n\n\n\n<blockquote cite=\"http:\/\/lambda.weblogs.com\/discuss\/msgReader$7628#7629\">\n\nA good writer (and a good programmer) does not work by distilling good ideas from a large pool of bad and good ones, but by producing few if any bad ideas in the first place.  It is important to give ideas time to mature [in the subconsciousness] so only good ideas percolate to the conscious level.\n\n<\/blockquote>\n\n\n\n<p>\n\nThat&rsquo;s the only way I know how to write prose. I tend to think about things in the background and then type out an almost-final draft. However, in all levels of school, I was told that it was important to get a rough draft down on paper as soon as possible, even if it was, well, rough. It could always be revised from there. The problem is that it&rsquo;s much easier to revise in your head than on paper (or in a word processor). The ideas on the paper have inertia. They lock you into a trajectory. I spot some of the bad ideas and excise them, but I think my brain suppress new good ideas because there&rsquo;s no way to seamlessly incorporate them into the draft.\n\n<\/p>\n\n\n\n<blockquote cite=\"http:\/\/lambda.weblogs.com\/discuss\/msgReader$7628#7629\">\n\nThe great advantage of the pen is that it is <em>slow<\/em>. Ideas, in his view, come faster than we can &ldquo;serialize&rdquo; them on the paper or at the keyboard. Therefore, the ideas are stored in an &ldquo;accumulation buffer&rdquo; in the brain. When in the buffer, the ideas interact and purify. If we empty the buffer too soon, we don&rsquo;t give the ideas enough time to mature and we get a half-baked prose. There is a virtue in slow typing or in hand-writing. Needless to say, Neil is not a fan of a PowerPoint. He contends that writing on a blackboard gives a teacher and a student so important time to think. \n\n<\/blockquote>\n\n\n\n<p>\n\n+1 for chalk.\n\n<\/p>\n\n\n\n<p>\n\nStephenson&rsquo;s comments were from his USENIX keynote, so how does this apply to programming? (I guess we are meant to put aside the obvious differences between the life cycle of a program and that of a novel.) On the surface, Stephenson&rsquo;s ideas seem to be at odds with <a href=\"http:\/\/www.extremeprogramming.org\/what.html\">XP<\/a>. Discovering design through refactoring and test-driven development is essentially a <a href=\"http:\/\/www.cee.hw.ac.uk\/~alison\/ai3notes\/subsubsection2_6_2_3_1.html#SECTION0062310000000000000\">hill climbing<\/a> strategy. For certain kinds of problems, it works <em>great<\/em>. But for others, it really pays to think carefully about your starting point. The <a href=\"http:\/\/catb.org\/~esr\/jargon\/html\/R\/Right-Thing.html\">Right<\/a> design can make all the details fall into place.<\/p>\n\n\n\n<p>\n\nConclusion: to paraphrase <a href=\"http:\/\/www.amazon.com\/exec\/obidos\/ASIN\/0553293354\/michaeltsai-20\">Asimov&rsquo;s Hardin<\/a>, don&rsquo;t let a methodology prevent you from doing what&rsquo;s right.\n\n<\/p>","protected":false},"excerpt":{"rendered":"<p>Neal Stephenson (paraphrased by Ehud Lamm): A good writer (and a good programmer) does not work by distilling good ideas from a large pool of bad and good ones, but by producing few if any bad ideas in the first place. It is important to give ideas time to mature [in the subconsciousness] so only [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2019-01-22T20:42:35Z","apple_news_api_id":"f030793b-0214-408c-853f-1ef4ae3b5ec5","apple_news_api_modified_at":"2019-01-22T20:42:36Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/A8DB5OwIUQIyFPx70rjtexQ","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[71,816,268],"class_list":["post-560","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-programming","tag-refactoring","tag-testing"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=560"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/560\/revisions"}],"predecessor-version":[{"id":24001,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/560\/revisions\/24001"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=560"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}