優秀的程式設計師就像藝術家?

Bugtags發表於2016-08-22

優秀的程式碼能不能算藝術品?軟體工藝這一理論是否有點矯枉過正?怎麼樣才算是一名真正“優秀”的程式設計師?

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

Alt text

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

寫程式碼也是如此。再也沒有比一個開發人員非要將他的程式碼寫成藝術的模式更糟的了。上述比喻來自一篇廣受好評的文章《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 翻譯作者:碼農網 – 小峰

相關文章