2010年6月10日 星期四

別當自作聰明的程式設計師(我認錯)

Bruce Sterling 轉貼了一篇標題為 Mea Culpa (我認錯) 的程式設計師反省文。並重新定標題為別當自作聰明的程式設計師。原作者是從 1969 年就開始進入程式設計領域,已有超過四十年程式設計經驗的 Jonathan Edwards。Bruce Sterling 認為文中的反省並不只是作為單一程式設計師的反省文,而是整個軟體產業需要一起面對的共業。

摘譯如下:

程式設計因為需要高度的分析能力,常常讓我們陷入一個誤區,為了提高程式設計能力,而不斷讓優秀的程式設計師擁有強大的優越感,自認為高人很多等,特別是相對於平庸的程式設計師,我們都希望盡情炫耀自己的聰明才智,得到同儕的仰慕眼光。但在之後的大半輩子裡,我痛苦的領悟到程式設計的重點在於態度、而非聰明才智。

現實問題的磨難最容易激發出聰明才智的創意靈感,但結果的表象雖然讓人驚喜於充滿創意的解決方案,實際上卻是後續長期維護災難的開端。一個讓人眼睛一亮的程式設計方式,但卻可能深藏著無數的深層炸彈,在日後一一引爆。

而在日後維護過程中,可能我們又會自我優越的認為,只有我才能解決其他平庸者無法解決的精密設計疏失,比如特製的資料庫系統,多線程(multi-threaded)的作業系統。

後來我把整個系統轉移到新框架上,解決掉讓人困擾了二十年的長期維護工作。這痛苦的領悟與經驗讓我瞭解,程式設計不是當最聰明的人,程式設計告訴我的是軟體是如此的複雜,讓全世界最聰明的菁英都顯得微不足道;不要想單靠一己之力解決所有複雜的問題。程式設計的重點在於簡化與慣例。把這句話倒著刺青到你的額頭上,這樣每次看到螢幕中的你都可以提醒自己這項原則。其中最重要的是態度:努力工作、負責任、專注在實際問題,而非未經驗證的猜測。

程式設計其實跟其他的工程與設計不盡相同。其中的主流文化常常陷在前面說的自我感覺良好誤區。就像是格列佛遊記般,只是多了大括號,中括號,縮排位置,要不要加小括號等議題。我們唯一同意的是其他程式設計師有多愚蠢,但我們應該自己試著 Google 一下"愚蠢的程式設計師",就會看到自己也名列其中。

程式設計技術的提升仰賴於文化的提升,我們能做的就是在自己的工作中耐心、持續的付出、分享交流我們學習到的經驗與心得。

參考文獻:

  1. Programmers should stop being such smart-alecks
  2. Mea Culpa