登入  |  English
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。
電子報總覽

懶惰的美德

當我們提到「黑客文化」的時候,經常會提到黑客的種種美德;在這些美德當中,一般人最難領會的大概是「懶惰」,不過這項美德對近代科技影響甚大,而且也值得一般人學習仿效。

任何事情認真起來,都有一套學問,「懶惰」也是,需要有認真研究的精神、勤奮貫徹的實踐能力,才能達成最終極的懶惰。「勤奮地懶惰?」聽起來似乎很矛盾,很難想像懶惰也需要勤奮與認真,這是因為世俗把「懶惰」跟「懶散」混淆了。「懶散」是什麼都不做,「懶惰」則是盡量不做事,把精力集中在必要的事情上。

「懶惰」的學問,在於釐清哪些事情才是重要的事,以及如何不要做那些不重要的事。這不僅是黑客的美德,也是管理學以及其他許多領域所持續研究的方向:例如把「可以不用自己做的事,丟給其他人做」,就是「搞定」(Get Things Done!)術的重要步驟。不需要自己做的事,想辦法分配給其他人做──僱傭、外包、招募員工、聘請工讀生、威脅研究生等,都是常見的手法。

對於這類「不重要的事」,因為要交給別人做,所以要嘛是真的很不重要的事,有人做就好了,做得如何不重要,要嘛則是需要加以「驗收」的事──雖然不重要,但是不能太離譜,不能拖過了某個期限還沒有動靜,也不能太草率或粗製濫造。

需要驗收的事,當然就要有用來驗收的標準。因此,這裡的「懶惰」之術就會是如何有效率地決定某件任務要怎麼驗收。在資訊技術的領域當中,常用的方法是用一組「測試資料」來做這件事,看看程式對這組資料的反應是否符合預期;艾西莫夫在他的《機器人》系列科幻小說當中,描述了一種檢測機器人功能是否正常的方法,這套方法並不是真的按照機器人的規格,逐條檢測其邏輯徑路是否正常,而是運用類似人類神經系統當中的「反射徑路」的設計,用一組綜合的刺激,來觀察機器人的整體回饋。這種驗收的方法看似抽象,但是現代的資訊技術其實已經在如此實踐了;用來檢測網頁瀏覽器是否符合標準規範的 ACID 測驗,就是如此:若網頁瀏覽器能順利通過,則會顯示出一幅圖案,反之若無法完整、流暢地在網頁瀏覽器當中顯示出該幅圖案,就表示網頁瀏覽器無法通過驗收。

當你站在「驗收者」的立場時,只需要迅速知道「有沒有通過」即可,「知道哪裡錯了」並不是重要的事──那對實際做那件事的人來說才是重要的事,不是你。發現有錯就退件要求重做,這才是你該做的事。

其他領域的案子也常常使用「抽測」的方式,來評估成品是否能通過驗收;這種驗收方式的要點仍然相同,但是實作起來會比較麻煩:首先你要決定抽測的範圍,這個範圍最好能夠有代表性或象徵性,能夠反映出整個成品;如果無法在範圍上做取樣,另一種作法則是在深度上做取樣,也就是針對所有的成品內容驗收,但僅概略看過,而不是逐字細讀。

還有一種更為懶惰的驗收方法,就是把驗收這個工作也視為不重要的事,然後丟給別人做。(不過,也許終究你還是要想辦法驗收──也就是後設驗收了)無論如何,把能夠丟出去的事情立刻丟出去,不要想著「先放著一陣子再看看」,就能夠迅速減少待辦(但是其實不是重要的)事項。

重要而且是你必須自己做的事情當中,「懶惰」的學問在於減低你需要投入的時間、精力、經濟等成本。對於重複性高的事情,要想辦法批次進行,像是利用批次檔、巨集指令、Shell 腳本或其他腳本語言(例如 Perl)等;任何使用電腦工作的人,至少都應該要精通其中一種巨集或腳本指令,才能在職業生涯當中省下幾年的光陰;電腦以外的工作也還是一樣,例如所有的信件都集中到收發單位一起處理,或者是把所有的讀者來函都集中在一起回覆等,本質上都是相同的事。

對於剛開始想要「懶惰」的人來說,也許要判斷「什麼事情將會成為重複性高的事情」會是一個困難之處,他們可能會因為一時的懶散,反而重複花了數倍的時間精力。任何一件事,如果發生了第二次,即使只是相似而非完全相同,就一定要視為重複性的事,就應該設立批次進行的方法。由於事情經常都是很像而非完全相同,因此在準備這些批次方法時,務必要保留足夠的彈性,讓你可以隨時稍加變更,應付任務的變化;然而,此時為了要達成最終的懶惰,這些批次方法也一定要有合理且良好的預設值,也就是不另外指定任何參數的時候,該如何進行。

除了重複性高的事情外,另外還會有些繁瑣的事,這些事可能並不重複,但是卻很繁雜,因此會花費大量的時間、精力。這些事也要精簡,才能讓你達成「懶惰」的理想。任何作業流程,都應該要逐一審視,看看每個步驟的目的是什麼、是否有存續的必要等;如果可以的話,你應該把這些步驟都逐一加上註解,可以合併的步驟就一起完成,可以跳過的步驟就設法省略。Toshiba 公司靠著生產線流程最佳化,節省下來的人力及時間成本,就足以讓他們把工廠從天津移回日本,由此可見「精簡」的重要性。

前述「撰寫腳本」的工作其實也會是一種繁瑣的事,應該比照相同的方式來達成「懶惰」的目標。實務上來說,你的腳本應該要詳實註解,這不是為了交接給其他人,而是為了交接給未來的你自己,讓你日後可以用更懶惰的方式來維護這些腳本。

不過,「懶惰」的美德當中,最重要的元素則是「紀律」。懶惰的紀律不在於外在環境對你的要求(例如晚上十點睡,早上六點起床開始工作;這種作息其實不適用於所有的人),而是在於你自己建立的生活方式與工作方式。你可以花上一個星期的時間,觀察、記錄自己的作息方式,像是哪些時候會肚子餓、哪些時候會昏昏欲睡、哪些時候容易被打擾;你可能會覺得這些事沒什麼一致性,但是通常他們會有個大致的規律,不記錄下來你就不會發現。

接下來的一個星期,則是按照前一週觀察的結果,實驗不同的紀律規劃,確認自己工作效率最高的時段,以及最無法靜下心的方式,或者實驗不同工作環境(例如在家裡、在圖書館、在辦公室、在咖啡廳、有無網路連線等)對你的影響,把這套屬於自己的紀律定下來。一開始一定會遇到很多挑戰,例如你可能會失去某些與外界(例如案主或金主,或者是親友)聯繫的機會,可能會遇到引誘你偏離紀律的誘惑,但是請務必要堅持下去;如果遇到嚴重的問題,可以藉著修正紀律的方式來調整,不嚴重的問題則當做懶惰的代價,放棄他們。如果你什麼都割捨不下,就無法過著懶惰的生活。

紀律的幫助在於,你再也不用去想「現在要做什麼」,也可以把「突然要處理別的事」的機會降到最低,所以你可以很懶惰地不去管其他事;紀律的另一個好處則是,也能夠可以幫助你記憶與管理,因為你總是在同樣的情境中工作的話,你的工作也能情鬆地接續下去,甚至你可以把工作所需的道具、材料遺留在這些工作環境中──這可不是在開玩笑,我就曾經把電源線、外接鍵盤直接寄放在固定前去的咖啡店,坐在固定的座位,點固定的餐點、飲料,甚至跟該咖啡店達成記帳月結的協議,如此一來我就可以很懶惰地不用帶錢出門、不用看點單,直接懶惰地進入工作模式。我喜歡的食物與飲料會自動出現,工作告一段落後也可以直接閃人,這真是太好了。

有些讀者可能會提出「過於有紀律的模式,並不利於工作,也無法帶來靈感」的主張。這也是常見對「紀律」的誤解。

紀律可不是把時間表排滿,你仍然可以安排每日、每週、每月、每季、每年的「自由時段」,然後在這些自由時段多做些不同的事、接觸不同的人事物。紀律是要你順著穩定的生活方式來安排行程,你可以有娛樂,也應該要有娛樂,但是這些娛樂不能造成你更大的工作負擔,這樣纔能讓你懶惰。

不重要的事交給別人做、批次處理重複的事、繁雜的流程加以精簡、生活有紀律,這些都是「懶惰」的要素,也是促成工業革命以及各種科技產品發展的契機;因為人類崇尚懶惰,才能夠持續進步,發展出更多更強力的工具,從既有的基礎出發,企業號也才能勇敢地邁向終極邊疆。

你,今天夠懶惰了嗎?




自由軟體鑄造場電子報 : 第 147 期 針對個人通訊軟體 (MSN) 實作一個反制蠕蟲傳播的主動防禦平台

分類: 自由專欄



評論 

 
0 #1 TSEN 2012-07-26 15:59
挺喜歡您的論點,謝謝您分享囉 :)