優秀程式設計的“藝術”

labazhou發表於2014-11-05

  優秀的程式碼是一件藝術品?或者軟體工藝宣言言過其實了?成為一名“優秀”的程式設計師,有什麼要求?

  設想你僱傭了一名水管工,讓他更換地下室的舊管道。這個傢伙在工作之前、之中、之後,他就沒有停止過談論他的管道工藝的藝術美。

“看看那根管道的角度。看看它與牆壁對齊是多麼地美?如果你問我,那麼它就是一件藝術品。”

  這和程式設計師沒什麼區別。沒有什麼比 不可一世的程式設計師把他或她自己的程式碼看做是藝術品 更糟糕的了。這個類推借用了”敏捷麻煩製造者”和BDD【注1】創立者Dan North的一篇廣受讚譽的文章,Dan North激烈地批判了軟體工藝宣言,論證了“程式設計不是藝術”。

  軟體工藝宣言

  宣言的作者Kevlin Henney、Bob Martin、Corey Haine和Glenn Vanderburg揭示了下面幾項將通往軟體工藝的大門:

  • 不僅是可執行的軟體,而且是精心設計的軟體。
  • 不僅響應變化,而且穩步增加價值。
  • 不僅個體與互動(Individuals and Interactions),而且是專家社群。
  • 不僅僅是客戶協作,而且是有生產力的合作伙伴。

  North的問題在於,軟體開發者的自尊經常妨礙其成為優秀的軟體專案。North談到,用“精心設計的軟體”這種榮耀的概念進一步加壓到自尊上,是達不到預期的。Webservice和J2EE就是最近的專案例子,軟體藝術性的崇高詮釋部分地導致了專案的失敗。

  優秀的程式設計

  你或許已經知道了來自於小型IT專案的這種問題。某個開發者主張使用特定技術是因為審美(而非務實)的原因。從此就每況愈下了。

  根據North的觀點,程式碼優美是因為它能有效地執行,而不是因為審美上有吸引力。不應該太計較程式碼看起來怎麼樣,而是看程式碼在從A點到B點帶來的一段資訊是多麼可靠、高效。

“一個技術嫻熟的程式設計團隊可以在非常短的時間裡交付讓人驚奇的業務結果。一名真正的專家——真正的工匠——將理解埋葬在、比如我們把企業軟體稱作的雜亂裡的、優雅的簡單,並整理清楚。” ——Dan North

  但是悲哀的是,甚至那些優秀的程式設計師經常忘記優秀軟體的核心職能——軟體工藝宣言的過分強調往往是禍因。

“軟體從業者—特別具有諷刺意味的是優秀的軟體從業者—經常忘記這一點。他們愛上了軟體本身,開始把他們自己看做軟體工匠。”——Dan North

  開發者需要多大的才能?

  這裡有個引起整個爭論的問題:軟體工程是一種藝術形式嗎?焦點集中在 對他們的工作充滿激情的有熱情的專家 和 只為薪水工作的程式設計師 之間的掙扎上。

  據說效能和效率在軟體行業的差異正在縮小,但是就成為優秀開發者的條件定義而言,沒有達成一致或被認可的方法。Dan North說,“一名真正偉大的程式設計師勝過數百個為錢做事的程式設計師,在數小時或數天就可以交付,而普通程式設計師要用數週或數月。”

“做為軟體解決方案的買家,難道你不想知道你的系統是被大師級工匠而非拿薪水的人開發的?你支付了錢,你有權保持某種信心。讓我們搞清楚怎樣提供這種軟體。”——Dan North

  North聲稱,“架構之美”無助於我們區別好壞。任何程式設計師都能把他或她自己稱作軟體工匠,滔滔不絕、高談闊論軟體架構的“美”。North對我們說,他將“樂於看到有人根據結果導向和取悅客戶來重寫軟體工藝宣言。”

  地下室與程式碼

  房主不關心他們的水管看起來如何,只要它們不漏水就行。軟體同樣如此。客戶和使用者都不關心它是如何運轉的,尤其不關心它內部看起來是否“美”。

  “同樣,我想讓專家級電工而非新手給我的屋子佈線,我想讓專家級程式設計師涉足我的業務,”North對我們說。“然而,我不想要一個堅持談論管道系統優雅與審美的、恃才傲物的管道工。”

  來自: www.labazhou.net

相關文章