上帝的歸上帝,程序的歸程序 (卓有成效的程序員)

程序員 12年前發布 | 901 次閱讀 CCleaner PHP Darwin

 程序員,就是整天與機器打交道的那群人。

在計算機并不普及的年代,這樣的描述毫無疑問;然而,這些年來,得益于計算機成本的不斷下降,軟件使用門檻的不斷降低, 如今,昔日昂貴而又神秘不可莫測電腦,已經成了隨處可見、人人能用的辦公器材。 一句話:人機交互,不再是程序員的專利。 大家都可以用電腦干活,只不過,程序員用電腦寫程序,其他人用電腦干其它事

結果,普通人抱怨的問題,程序員也在抱怨:電腦不夠聰明,不夠智能,效率太低……

可是,電腦真的進化到了對程序員和普通用戶“一視同仁”的地步嗎?

我不由得想起,上個世紀80年代,溫伯格在《技術領導之路》中提出的疑問:

(開辦技術領導力學習班)也讓我們產生懷疑,技術在當今社會扮演了重要的角色,我們的學習班,是否賦予了某些人太多的力量?

細細想來,當年,IT技術那么高深,只有少數人能夠接觸,因而程序員“理所當然”地借助了IT的東風,具有超常的力量。 可是如今呢?與常人無異的程序員(或者說,IT 技術人員),他們身上讓人擔心的“太大的”力量,到底是被淘汰了,還是沒有發揮出來?

對這個問題,不同的人或許有不同的看法。不過,讀過 The Productive Programmer(中文版《卓有成效的程序員》)的人,多半會選擇后一個答案。

The Productive Programmer 是一本奇特的書,它的 Productive(也就是“生產力”),與新的語言、新的框架、新的系統完全無關,而是另辟蹊徑:它只是提醒讀者,作為程序員,你與普通用戶是不同的:其它人只是簡單地“啟動”程序,而你完全可以動用自己的專業知識,“驅使/調度”那些程序。這樣的機會,普通用戶想不到,也不愿意抓住,但是抓住它們,你的生產率就會成倍上升。所以,這本書叫做 The Productive Programmer,而不是 The Productive Computer-User。

薄薄的一本書(英文版224頁,中文版215頁),共分16章,兼顧概念和實踐兩個方面,既介紹了加速、專注、自動化等等提高生產率的“先進”思維觀念(譬如“多用鍵盤少用鼠標”,“消除干擾集中精力”),也給出了在設計、分析、構造、元編程、多語言編程等等多種任務中貫徹前述思想的若干實例(譬如 “用全面測試保證質量”,“選用最省事的方式/語言完成任務”),可以說是“麻雀雖小,五臟俱全”了。

不過,看完整本書,我最深刻的印象還是貫徹全書的思想。說白了,就是盡量讓機器做機器該做的事情,讓程序和程序打交道,發揮程序員在這方面的先天優勢——他人眼中的普通工具,是程序員手里的有利武器

不信,你可以想想,雖然如今人機交互的難度已經大大下降,然而程序終究是程序,程序跟人打交道,與程序跟程序打交道,效率差的不是一星半點:

  • 不用宏,你可能需要一次又一次地重復選擇、修改、保存;
  • 不用腳本,你可能需要一次又一次地點擊、配置、等待;
  • 不用自動化測試,你可能需要一遍又一遍地運行、調試;
  • 不用管道,你可能需要一次又一次地生成、刪除中間文件;
  • ……

The Productive Programmer則會“教導”你:

  • 多用宏吧,啟動它,你就可以迅速完成大量重復的工作;
  • 多用腳本吧,你可以提高運行的效率,避免變數和誤差;
  • 多用自動化測試吧,你可以迅速定位問題,保證質量;
  • 多用管道吧,這樣多個程序就可以“無縫結合”成一條生產線;
  • ……

沒錯,學習宏、腳本、自動化測試、管道(Shell),不是“容易”的事情。但別忘了,身為技術人員,了解技術,學習技術,運用技術,正是你的職業,你的優勢,也是你的責任,你的生產力(所謂productive)所在。隨便舉個例子吧,在本書中文版的第196頁有這么一段話:

……在我剛才提到的例子中,開發人員用了1小時58分建立正確的語法,然后用了不足兩分鐘運行。在一些未曾培訓過的人眼里,他的大多數時間都沒有效率(這就是為什么他們反對使用正則表達式的原因),但最后,他節省的是幾天的時間!……

我還要補充的是,解決好這樣的問題,“現在”能節省幾天的時間,將來,更可以節省無窮無盡的時間!就我的開發經歷來說,平時多注重這樣的細節,做些 “沒效率”的事情,積累起來,就可以節省大量的時間和精力——至少至少,你不會抱怨,自己終日被一大堆“簡單重復勞動”所困擾。

類似的例子,在書中隨處可見,譬如作者講到,“幾乎每個 nix 用戶,都會有自己的 shell alias”,真是于我心有戚戚焉:我自己積累了一大堆 alias,喜歡用 grep –color 把要找的內容標成高亮,也喜歡在統計腳本里用不同的顏色標注不同的狀態……在 Shell 下干活,更加簡單、利索,一目了然,這種流暢和效率,也可算專屬于程序員的寶貴財富*。

當然,也有讀者會覺得很煩:作者幾乎講一個很小的例子,幾乎都要強調一遍:“簡單重復勞動是低效的(程序員不應該這么干)”。不過,我絲毫沒有覺得羅嗦,反而因此喜歡上這本一個下午就能看完的“輕量級”小書:閱讀它,你并不需要太多的期望,權當一次愉快的思維體操吧——你會發現,專屬于自己的高效率,就來自書中提到的點點滴滴。

 本文由用戶 程序員 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!