優秀的程式設計師就像藝術家?
優秀的程式碼能不能算藝術品?軟體工藝這一理論是否有點矯枉過正?怎麼樣才算是一名真正“優秀”的程式設計師?
讓我們先從一個問題引入話題。假設你僱了一個水管工替換地下室裡已經老化的舊水管,在整個過程中,這傢伙一個勁地給你灌輸這些水管是有多麼多麼的有藝術美感。
“哇哦,看看這根管子彎曲的角度,它與牆壁對齊得是這麼的漂亮!簡直就是藝術品啊!”你會怎麼看這個水管工?
寫程式碼也是如此。再也沒有比一個開發人員非要將他的程式碼寫成藝術的模式更糟的了。上述比喻來自一篇廣受好評的文章《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 英文原文:The ‘art’ of good programming 翻譯作者:碼農網 – 小峰
相關文章
- 優秀程式設計的“藝術”程式設計
- 程式設計師和程式藝術家程式設計師
- 程式設計藝術家之路程式設計
- 優秀程式設計師的優秀歷程程式設計師
- 《程式設計師程式設計藝術》程式設計師
- 優秀程式設計師因何而優秀?程式設計師
- 優秀程式設計師不一定是優秀的軟體設計師程式設計師
- 對優秀程式設計師的思考程式設計師
- 程式設計師常有,優秀程式設計師不常有程式設計師
- 優秀Java程式設計師的程式設計風格Java程式設計師
- 程式設計師如何保持優秀程式設計師
- 如何招聘到優秀的程式設計師?程式設計師
- 你是優秀的程式設計師嗎?程式設計師
- 如何辨別優秀的程式設計師程式設計師
- 優秀程式設計師的 18 大法則程式設計師
- 程式設計師 錯錯更優秀!程式設計師
- 優秀程式設計師眼中的整潔程式碼程式設計師
- 優秀的程式設計師都有哪些習慣?程式設計師
- 做一名優秀的程式設計師程式設計師
- 優秀程式設計師的各種跡象程式設計師
- 優秀程式設計師需要磨鍊的技能程式設計師
- 優秀程式設計師的十個習慣程式設計師
- 卓越程式設計師和優秀程式設計師有哪些區別?程式設計師
- 每個優秀程式設計師必須具備的技術技能程式設計師
- 優秀的程式設計師的七個特質程式設計師
- 程式設計師越老越優秀嗎?程式設計師
- 程式設計師 你可以更優秀些程式設計師
- 優秀程式設計師寫可除錯的程式碼程式設計師除錯
- 優秀設計師與卓越設計師的區別
- “優秀”設計師與“卓越”設計師的區別
- 優秀的程式設計師都熱愛寫作程式設計師
- 優秀程式設計師都在注意的十個點程式設計師
- 優秀程式設計師的6個共同特質程式設計師
- 如何才能造就一個優秀的程式設計師程式設計師
- 優秀程式設計師必備的10個技能程式設計師
- “腦子快”的程式設計師更優秀嗎?程式設計師
- 腦子快”的程式設計師更優秀嗎?程式設計師
- 優秀程式設計師必備的15大技能程式設計師