軟件工藝 Software Craftsmanship

>>>  讀書—連接古今充實信仰  >>> 簡體     傳統

軟件工藝 Software Craftsmanship [美] Pete McBreen著 熊節譯


如果某個導演在一部電影中看到或聽到什么喜歡的東西,他總能夠很容易地找到它的創造者。

將失去已久的職業榮譽感重新帶回軟件開發行業。

工藝學力圖在人、機器和知識之間找到微妙的平衡,從而創造有用的產品,這正是工藝學的目標所在——全面而深入地掌握科學和工程學,從而不斷地以工藝進行精煉。

“建立良好聲望還有另一方面的含義:軟件工匠應該花一些時間來考察他的客戶。”

很明顯,在大多數項目中,這種控制權的轉移一般都是要大張旗鼓地宣布的。

在現代軟件企業的管理中,指揮已經不再適用,交流才是有效的方法。

激情洋溢的年輕人與見識廣博的老手之間的交流迸出了炫目的火花。

軟件工藝拒絕軟件工程犟加給開發者的這些精細的角色分工,而是頌揚能夠從頭到尾完成工作的工匠。

“技師”在英語中的單詞匯是“journeyman”,這個由“journey(旅行)”衍生而來的詞形象地描繪出了他們周游四海學習技術的生活方式。

軟件工藝認為軟件開發者應該是“經驗豐富的專業人士”,他們會提出很多問題,然后把用戶真正需要的東西(而不是用戶要求的東西)交給用戶。

建立這樣的聲望需要相當長的時間,但這是值得的,因為軟件工匠開發的應用程序將歷久彌新。

“掌握”意味著承担起傳遞工藝的責任。

學徒模式小心地避免了學校模式中常出現的“習慣性失助”的心態。

沒有反饋的實踐只會強化錯誤。

在一個軟件工藝團隊中,凡是工藝學的文化和規范,對背景知識的深刻理解。

將軟件工程的實踐縮小規模以應對小型項目中的問題,就跟將軟件工藝的實踐放大規模一樣困難,這兩種做法都是不恰當的。

人們內心深處依然堅信:哪怕是司空見慣的日常用品,也只有工藝大師才能做出精品。

軟件開發不僅僅是一項技術工作,同時也是一項人文工作。

理解軟件開發與學業相關,一定技術實力基礎上良好的企業人際。

對于絕大多數項目,人的天賦比使用過程更重要。

軟件工藝帶來了另一種隱喻:擁有技術的軟件開發者抱定決心要掌握自己所從事的工藝,對自己的蔻成果負責并以之為榮。

現在,軟件工藝將把軟件開發過程中的樂趣和激動重新還給軟件開發者。

編程是一門手藝。

自動化構建還是來自一張安全網:每當項目的核心源碼被修改時,整個應用程序就會被重新構建,隨后自動運行回歸測試,以確保這些修改沒有造成任何破壞。

從用戶群提取需求,學習發布一個系統所必須的實用主義的思維方式,項目結束后使系統繼續發展的后續工作。

那些認證組織,暗示“通過考試就意味著你是一個優秀的開發者,那就完全是在混淆視聽。”并不證明這個人擁有開發能力,僅證明他學會了如何通過考試。

如果想在科技領域獲得成功,就必須把事實擺在公共關系之前,因為自然是無法愚弄的。

敏捷聯盟:www.agilealliance.org

真正可復用的組件也是存在的,但它們不是項目內部開發的組件。

軟件工程的另一個貽害是:它把文檔搞得聲名狼籍。

很多時候,最佳實踐存在的意義只是讓員工固守本分,不致越雷池半步。

使用漸進過程時,在開發過程中的系個階段,總有可運行的系統。我發現在4個月的時間里,開發團隊所能培育(grow)的系統比起他們所能搭建(build)的要復雜得多。

如果你看到小型團隊在實施瀑布過程時陷入“分析癱瘓”(analysis paralysis)一點都不用感到驚訝。

軟件開發者不但要博問強記,而且要善于遺忘。

遺忘是開發最重要的能力,因為它是不斷學習的關鍵。

讓你最好的開發著組織一次技術研討會,向團隊的其他成員傳授立竿見影的技術。

講座也使得開發者更有功力深入研究自己感興趣的技術,因為沒有人愿意在知之未深的時候就走上講臺。

開發部門的所有人(包括管理者)都應該參與到學習時間中,因為“對學習的態度”是軟件工藝與軟件工程最大的差異。如果包括管理者在內的所有人都參與,就能向整個企業發出一個強有力的信號:企業領導層向開發者作出了承諾,允許他們努力學習以掌握軟件開發的技藝。
 


Pete McBreen著 熊節譯 2011-02-22 19:24:20

[新一篇] 《行者無疆》精彩句子摘選

[舊一篇] 《軟件觀念革命》句摘
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表