9-7 ~ 9-27做論文全過程的反思

ujn784發表於2020-09-27

實驗是在八月底做完的,之後9.6週日的晚上和導師彙報,導師說可以開始寫論文了,於是便開始了整理文獻、憋論文、latex排版編輯的過程。本來預計一週寫,一週改,然後交給付費編輯潤色,就可以投出去了;結果卻是花了一週的時間寫,兩週的時間改,剛剛才交付給編輯潤色,寫文章花了足足三週時間,超出了預期。

這裡對做一篇文章出來的全過程,即包括前期(閱讀文獻、設計實驗方案)+中期(編碼)+後期(整理文獻、寫論文、排版美化)三個階段所做的事情做一點反思,嘗試找到優化做事方式、提高效率、提升科研質量的方法。

前期(閱讀文獻、設計實驗方案)

失誤之處

  1. 拿到文章就開始看,未曾想清楚我看它的目的究竟是什麼?是要把它當成標杆文獻(如領域內的經典)來仔細讀,去反覆琢磨它所提出方案的精妙之處、模仿它解決問題的方法、抑或是在其基礎上將某個細節做改進變成自己的東西,還是隻是被別的文獻連結到此、只是想看看原文獻中提到的方法的具體實現,還是想要通過它來了解該領域的背景知識?等等。這些問題我都不曾思考過,只兩眼瞪著白紙黑字看,效率是極低下的。
  2. 沒有及時做筆記或新增進文獻庫,增添後期找文獻、重新閱讀了寫綜述的負擔。這點做得不好本質上還是太懶,思維不願意站起來跑寧願坐下歇著,坐著歇著看文獻的一個後果就是,對文章的理解程度太淺,僅在腦中留下了「點」式的印象,而非與其他資訊、觀點、方法等連線緊密的一片「網」。另外,因為沒有去畫思維導圖、寫下它這步做的用意、與其他方法的比較等,所以這步做得不好也導致了之後自己在想新的idea時不得力。
  3. 實驗方案在設計時,沒有深入想清楚做這一步的「目的」是什麼,就開始進入到編碼階段,結果就只能是做法被導師駁回,重新想方法、設計實驗。沒想清楚便貿然行動還是因為思維的韌性不夠,只能接受「結論式」的資訊,而鮮有「過程式」的內容。到頭來做白功、走彎路。

對應的改進點

  1. 把要看的文獻分個類,例如分為以下三類:
  • 標杆文獻(通常是領域大牛寫的,影響力極高,無論解決問題的方法思路、寫作論證的嚴密性都可借鑑學習,做出好的科研成果應當向此類文逼近,故它也是模仿的物件)
  • 方法類文獻(可以是標杆文獻引用、翻閱文獻過程中看到的任何在方法上有創新的文獻,閱讀時重點關注其解決問題的方法流程,此類文名氣上比上面一篇略次)
  • 背景資訊類文獻(通常是在拿到一個課題時首先要看的,篩選標準領域、課題、解決的問題相關即可,走馬觀花看,重點看abstract、intro,有個xx問題可以用xx解決即可,無需深究)

判斷文章分別屬於哪個類別,本身就需要一定的時間和精力,故在開始讀之前先花點時間在網上多下載幾篇,然後可以和導師、師兄師姐交流哪些值得深入閱讀,而哪些不必深究。

再者,關於如何在讀文獻時提高對文章的理解程度,可以借鑑機器學習研究者的養成指南,吳恩達建議這麼讀論文裡提到的論文閱讀方法,即讀一篇文章時問自己四個問題:1)作者要解決的問題是什麼?2)作者解決該問題的方案的關鍵是什麼?3)我可以做些什麼?4)為了做成這件事,我還需要哪些資訊?

  1. 手不能懶,看過的文獻都應加入到endnote中(方便以後檢索,而非想到後又去學術上搜尋,太浪費時間了),並做好標記:這篇文章可以帶給我些什麼?它是如何幫助我完成手頭的科研的?其次,大腦也不能懶,邊讀文章邊寫綜述,中英文皆可,這一方面是增進自己對文獻內容的理解,另一方面也是方便自己之後寫作只需複製貼上即可。總之,手和腦一個都不能懶,歸納總結之類的活,早晚都得幹,留到後期寫文章的時候再去幹,不如早早地幹,況且第一次見這文還是新鮮的,好奇心會更強驅動著把筆記做好。

  2. 要想設計好實驗方案,現在反思來看,關鍵點就一個:將思維「具象化」。把自己的想法清清楚楚地表達出來,再去看可行與否,自己的腦袋裡還一片漿糊,條理都未曾整理得清楚,只是知道這裡做個xx分析,那裡做個二分類,再做個排序之類,寫也寫不出,說也說不出個所以然,就急匆匆跑去寫程式碼了,最終必然是無功而返。在這裡把做事的條理理清的兩個方法:1)寫出來,敲在page上,仔細比對自己這一步這麼做、下一步那樣做,是否在邏輯上說得通、有理論支撐;2)說出來,即遇到自己拿不準的,或理論知識遺忘的,去請教同學、老師,問問他們自己這麼做是不是可行,對理論的理解是否有誤等等;或者在彙報的時候,完整地將自己的整套實驗方案的流程講給老師聽——這是一個鍛鍊自己語言表達能力的絕好機會。

中期(編碼、儲存結果、畫圖)

失誤之處

  1. 不規範。程式碼沒能做成一套end-to-end的pipeline上傳到hub,是因為在編碼時只想著要編碼了,沒想過為了提高程式碼的可讀性和後續修改的簡易度,需要做好「變數註釋、語句功能註釋」操作(這麼做的好處在於能幫助自己在編碼時理清思路);內聚程度太低,耦合度太高,複用性不強。總之,編寫程式碼時太過隨意了。
  2. 不關注對實驗結果的儲存,結果就是返工。

對應的改進點

  1. 一個字:慢。為之後閱讀、修改、複用、上傳程式碼等工作著想,一定要慢慢地做好每一步:變數名簡潔易懂;註釋幫助自己明確這一步要做的事然後再開始程式設計;心中有大局,pipeline常駐心間,按照軟工中的程式設計規範去編碼。
  2. 在儲存時需要想清楚,結果究竟是要以什麼形式呈現在最後的paper中的,是表格還是圖,如果是表格,把能想到資訊都存下來;如果是圖,一方面要存下儘可能多維度的資訊,另一方面清晰度一定得足(包括legend等,pdf存),這樣後續需要時不需要重新再跑程式碼。自己經常在這一點上吃虧,因為儲存的資訊缺失或不夠精確、美觀等原因,耗費不必的時間去返工,如此情形常發生,可能已不僅僅是在儲存結果時考慮不周了,更是在前期明確要解決的問題、做的事情上沒有思考清楚急忙下手導致的結果。

後期(寫論文、排版美化)

寫論文

  • 提綱(具體到段落) -> 制定計劃去完成各個部分。其中在列提綱時,沒有必要把全文全部內容的提綱都列出,僅列出自己確定一定要寫的部分(如intro, materials and methods),對於其他的各部分(如abstract, disucssion, conclusion) 有一定的想法要寫什麼,但可能邊寫想法邊變,那麼這時就應該先把確定的給寫完,接著在寫discussion前確定discuss的思路,再去具體實施,最後總覽全文完成abstract 和conclusion.

排版美化

先將文字內容在word中完成,貼圖片或表格處註釋上即可但不必真的新增,最後將內容貼上到latex中排版。這裡需強調的一點是:「內容」和「排版」的活一定分開進行,改內容的時候就專注於把自己做的實驗過程講清楚、背景資訊交代完整、上下文邏輯清晰、用詞準確等,改排版的時候就不要怕麻煩地學習latex排版技巧,思考和目標期刊比對,哪裡還沒有改規範等等。不可寫內容寫到一半發現格式太醜就去改latex語句,也不可在改排版時捉摸著要不要將內容錦上添花等等。一次只專注進行一件事。

其他

此部分對上述三方面中沒有提及的問題,以及上述三方面中存在的共通問題進行反思。

對於導師提出的修改點

聽語音或當面交流時一定及時記錄讓做修改的點,否則過會兒會忘記,並按照「排版」和「內容」分開去處理。

一次做好

讀文章、寫程式、跑實驗、寫文章,都力求一次到位。一次做好的基礎,是做每一步之前都考慮足夠深入和踏實、做的過程中不可心急且細節力求完美。確認這麼做真的是符合資料分佈特點、我的做法前人有人證明過可用之後,再去做。

文章寫不出的時候更是關鍵

對於未曾寫過的內容,不知如何去完成的時候,更需要耐心,自問自己究竟要寫什麼,先敲在隔壁page上,再把這些要寫的但還雜亂的內容一點點用邏輯串起來。想不出時,逼著自己想。想得多了之後,思路會慢慢多起來,也能寫得更快。

總結

本文主要是對自己做科研的整個過程的反思。對於不同的活,我做的差的地方的共同點在於,我把很多「本應該提前思考或做」的事硬生生搬到了後頭去做,這無形中使得完成整個專案的時間變長、效率變低。故花一晚上時間作此文,警戒自己做的不夠好的地方,並積極做出改善。

好了,創新專案完成,明天就要開始忙畢設了。據以上,我首先應該完成的,是廣泛蒐集課題相關的文獻,略讀後分個類,再根據文獻的不同型別去閱讀。

相關文章