業餘大叔程式心得筆記#3:一次寫程式時間分配的簡單觀察/葉光釗
許多人對寫程式的族群、以及這個族群的活動,存在著許多不瞭解、以及莫名的神祕感。
我在一個有名的社群上,看過這樣的對話:
工程師:這個需求預計開發48個工時,所以最快要到下個禮拜。
專案經理:不懂,可是一天有24小時呀?
雖然我寫程式,但是一直都是業餘性質;之前主要的工作還是「管寫程式的人」。
十幾年下來,即使對於其中的時間分配有些心得,但究竟不是第一手的接觸;現在有時間了,決定用幾天時間好好觀察自己的行為,順便印證之前的心得。
測試的時間是兩個星期;但因為大叔還有其他外務以及家務要料理,真正能留下紀錄的只有「兩個三天」。記錄的方式是用手機計時,一旦活動有改變就記下來,從早上6點一直到10點。
而活動的分類及分析,則是整個紀錄完之後再進行。
詳細內容就不列了,不然讀者恐怕到這裡就不想看了;不過有些規律,還是大致講一下:
真正能冷靜下來面對編輯器的時間並不是連續的,上午約略是10點到12點前,下午則要到3點之後,一直到4點半左右;其他的時間幾乎沒有生產力,都在摸東摸西、發呆、或是看網頁。
解決比較大的問題、或是「Eureka!」式頓悟的時間點,沒有例外,都在早上。
真正在 editor 中寫程式的活動再細分,發現查API用法的時間比例很大,大過去stackoverflow網站上找解法。這個我有點驚訝,比例比我預期的高;因為在現在的開發環境中,Intelligent code completion(智慧型程式碼預測完成)的功能越來越先進。現在回想起來,可能時間都花在找API的sample用法。
當解決一個大一點的問題之後,注意力反而下降,當天的其餘時間幾乎都寫不出東西。我想是因為壓力突然降低,人就鬆懈了;這也表示單一個人生產力是會上下波動的,很難一直持續。
另外有兩點心得,這裡也記錄一下:
即使是自己觀察自己,也感覺得出來有 「觀察者效應」;實際情況應該還是有點差異(生產力可能更低?);
這個觀察應該只限於獨立工作的人;若是團隊的時間分配,應該會更複雜。
心得:除了驗證了程式設計師也是人之外,目前並沒有其他可以彙整的結論。
究竟這只是單一一個人在短期間的活動、以及粗淺的判斷。不知道有沒有機會能有學術單位、或是企業做有規模的研究?或許會有意想不到的發現也說不定。
角色轉變
我之前曾經有一個觀察,就是不同的角色(專案經理、開發者、測試者、設計師)的溝通風格和性格都很不一樣;很難說是工作塑造了個性,還是有這樣個性的人適合這樣的工作。
最近又一個突發奇想(人閒下來很容易這樣),既然現在做了開發者,思考的方式有沒有不同?
這是個有趣的比較,就拿了一張白紙,把自己反省過的對比寫下來,不只有,還洋洋灑灑的寫了整張。
這裡列幾個比較明顯的:
以前當專案經理的時候,不自覺的偏向將工時塞進計畫時程;現在則是習慣先估算要做幾件事,然後再加總每件事的時間。
當專案經理時即使資訊不足,也會狠心下決定。但是當了開發者,總覺得資訊實在不夠,希望再多花時間多蒐集,甚至接近恐慌程度。
以前關心的主軸,是「主要功能甚麼時候可以出來」;現在則是一直回想「哪個邊界條件或是例外沒處理到」。這些「周邊」的程式碼所佔的範圍還蠻高的。
以前總是在想功能怎麼 demo 最有效,現在則是程式怎樣測試最方便。
以前總是希望有個漂亮的圖形介面(GUI),現在則是覺得文字命令列(command line)最簡潔。
所以我的心得是:我以後不再苛責別人「換位置就換腦袋」了,因為自己就是個活生生的例子。