優秀的程序員就像藝術家?

jopen 10年前發布 | 6K 次閱讀 程序員

優秀的程序員就像藝術家?

        英文原文:The ‘art’ of good programming

        優秀的代碼能不能算藝術品?軟件工藝這一理論是否有點矯枉過正?怎么樣才算是一名真正“優秀”的程序員?

        讓我們先從一個問題引入話題。假設你雇了一個水管工替換地下室里已經老化的舊水管,在整個過程中,這家伙一個勁地給你灌輸這些水管是有多么多么的有藝術美感。

        “哇哦,看看這根管子彎曲的角度,它與墻壁對齊得是這么的漂亮!簡直就是藝術品啊!”你會怎么看這個水管工?

        寫代碼也是如此。再也沒有比一個開發人員非要將他的代碼寫成藝術的模式更糟的了。上述比喻來自一篇廣受好評的文章《programming is not a craft》,其作者是 Dan North,“Agile troublemaker”和 BDD 方法的創始人。

        軟件藝術

        該理論的作者是 Kevlin Henney、Bob Martin、Corey Haines 和 Glenn Vanderburg,以下就是軟件藝術的要領。

  • 不僅得能正常運作,還應該精心制作
  • 不僅可以應對變化,還能穩步增值
  • 有良好的個體交流,以及專業人士組成的社區
  • 和諧的客戶合作關系,富有成效的伙伴關系

        而現在的問題是,很多軟件開發人員往往會因為太過自大反而不能很好地完成軟件項目。因為自大會讓他們將軟件藝術捧得很高,North 說。Web 服務和 J2EE 的項目就是這方面的例子,該項目的失敗有很大一部分歸咎于將軟件藝術放到了過于崇高的地位。

        優秀的程序員

        你或許早就在一些小的 IT 項目中就領略過上述問題的存在了。如果有開發人員堅持使用某種特定的美學技術而不愿意務實的話,那么我敢肯定他已經被所謂的“軟件藝術”洗腦了。

        好的代碼應該是高效的代碼,而不是因為它的美觀。不管它是什么樣子,只要它可靠、高效就成。換言之就是不管黑貓白貓,能抓老鼠的就是好貓。也可以歸結為理解和實現簡單流程的能力。

“一個經驗豐富的編程團隊完全可以在很短的時間內拿出驚人的業務成績。只有真正的專業人士和真正的軟件匠手才能在毫無頭緒一團糟中,例如各種企業軟件,發現被拋棄的優雅與樸素。”——Dan North

        但可悲的是,即使是優秀的程序員也經常會忘記何謂優秀軟件的核心功能——過分重視所謂的軟件藝術往往是罪魁禍首。

“軟件從業者——具有諷刺意味的是,尤其是一些優秀人才——卻經常會犯此錯誤。他們愛上了軟件本身,然后覺得自己已經化身成了軟件藝術工匠。”——Dan North

        程序員的才華

        全文這個辯論是基于一個問題展開的,這個問題就是:軟件工程是否是藝術形式的一種?

        據說性能和效率的比重在軟件行業里已經有所下降,而怎么樣才能成為一名優秀的開發人員卻依然沒有達成共識。“偉大的程序員,只需要幾個小時或者幾天就能完成普通程序員需要數周或者數月才能搞定的任務。”Dan North 堅持這么認為。

“作為買家,你難道不想知道你的系統是由大師級工匠還是臨時工做的嗎?你付了錢,就應該有這個知情權。所以如何辨別兩者就很重要了。”——Dan North

        North 也承認,好不好看并不能讓我們正確區分兩者。任何開發人員都可以自詡為軟件匠手,也能做到對何為“軟件架構之美”侃侃而談。North 誠摯地希望能有有識之士重新編寫軟件藝術的概念,這是最基礎的理念問題。

        站在背后的代碼

        我們并不在乎水管長啥樣——反正是埋在里面的。這同樣適用于軟件。無論是客戶還是用戶,都只關心代碼是否能工作以及頁面看上去 ok 就行。

        “同樣的,我只想請專家電工來給我的房子布線而不是一個濫竽充數的家伙,我也只想要專業程序員來寫代碼,” North 鄭重其事地說,“我最討厭的就是,一個自命不凡自以為是的水管工一刻不停地談論他優雅美麗富有藝術感的水管。”

        譯文鏈接:http://www.codeceo.com/article/art-of-programming.html
        翻譯作者:碼農網 – 小峰        

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