本章節(jié)原標(biāo)題:干將莫邪(yé)
前言
- 就工具而言垮媒,即使是現(xiàn)在(作書時)芽偏,每位軟件的公司的骨干人員都像五金店老板一樣澜公,仔細(xì)的保管著自己工作生涯中搜集的一套工具富拗,這些工具是個人能力的直觀證明楔脯。
- 這種方法對軟件項目來說是愚蠢的撩轰,項目的關(guān)鍵問題是溝通,個性化的工具只會妨礙而非促進溝通昧廷。
- 隨著技術(shù)的變化堪嫂,所有個性化的工具生命周期都是很短的。開發(fā)和維護公共的通用編程工具效率更高木柬。
- 僅僅通用是不夠的皆串,建議為每個團隊配備一名工具管理人員。
- 項目經(jīng)理應(yīng)該制定一套策略眉枕,并且為通用工具開發(fā)分配資源恶复。與此同時怜森,他還必須意識到專業(yè)工具的需求。
目標(biāo)機器
就目前服務(wù)器的發(fā)展速度而言谤牡,本節(jié)內(nèi)容已經(jīng)不具備具體的參考價值副硅,但仍然有一些優(yōu)秀的思想
- 使用機器進行調(diào)試的時間是爆發(fā)式的,幾位程序員可能同時開發(fā)好自己的模塊翅萤,需要使用機器進行調(diào)試恐疲。
- 需要安排一名系統(tǒng)程序員,保證機器上的軟件是最新且可用的套么。
- 主程序庫應(yīng)該被劃分為:(1)一系列獨立的私有開發(fā)庫流纹;(2)正處于系統(tǒng)測試下的系統(tǒng)集成子庫;(3)發(fā)布版本
- 在開發(fā)過程中违诗,節(jié)省最大工作量的工具可能是文本編輯系統(tǒng)(強調(diào)溝通和文檔)。
- 系統(tǒng)文檔中存在大量不容易理解的問題疮蹦,但仍然比未能詳細(xì)描述系統(tǒng)特性的短小文章更可取诸迟。
- 自上而下、徹底的開發(fā)一個性能測試工具愕乎,盡可能早的開始這件事情阵苇,并聽取“它的意見”。
高級語言和交互式編程
- 只有懶散和惰性會妨礙高級語言和交互式編程的應(yīng)用(生產(chǎn)率和調(diào)試方面的優(yōu)勢是勢不可擋的感论,要堅持使用新的技術(shù))绅项。
- 高級語言bug更少而且更容易尋找。
- 傳統(tǒng)的反對意見——無法實現(xiàn)想要的功能比肄、代碼量太大快耿、高級語言代碼執(zhí)行速度慢,隨著語言和編譯器的進步已不再成為問題芳绩。
- 某些應(yīng)用上掀亥,批處理系統(tǒng)并不會被交互式系統(tǒng)所取代(現(xiàn)在依然成立)。
- 調(diào)試是系統(tǒng)編程中較漫長和較困難的部分妥色,漫長的調(diào)試時間是調(diào)試的禍根搪花。
- 有限的數(shù)據(jù)表明,系統(tǒng)軟件開發(fā)中嘹害,交互式編程的效率起碼是傳統(tǒng)的兩倍撮竿。
舊有的編程模式:編輯,保存笔呀,編譯幢踏,運行和調(diào)試
交互式編程:直接輸入腳本語句,回車執(zhí)行许师,立即顯示結(jié)果惑折,不用經(jīng)過復(fù)雜的保存和編譯階段授账,很多腳本語言都提供類似的控制臺(PHP,Python)
以上就是《人月神話》第12章——干將莫邪的所有內(nèi)容
本章主要說明了工具對于軟件產(chǎn)業(yè)的重要性惨驶,工具需要做到通用白热,需要專人進行維護〈植罚看一看當(dāng)下github的受歡迎程度屋确,jetbrain這類工具提供商的地位,以及阿里云等服務(wù)器提供商的發(fā)展速度续扔,還有當(dāng)前對于新技術(shù)(ReactNative攻臀,Vue)新框架(ROR,Laravel)的推崇纱昧,完全印證了作者當(dāng)年的觀點刨啸。我們有理由相信阻礙高級工具發(fā)展的只有人們的懶散和惰性,這樣的觀點時至今日都是鐵律识脆。
個性化的工具是個愚蠢的選擇设联,但也是順其自然的選擇,如果管理者不加以干預(yù)就必然會存在的灼捂。某種程度上具有合理性使得這種缺陷很難被管理人員重視离例。
不被重視的另一個重要原因是成本,通用工具的創(chuàng)造和維護是需要調(diào)配精英資源的悉稠。通用與個性化的實現(xiàn)難度不在同一個層面上宫蛆,可以理解為通用是個性化的一種特殊形式
,開發(fā)人員從無數(shù)個矩形中需要找到某個正方形的猛。與成本相比耀盗,通用工具的收益是隱含的甚至是不可預(yù)計的,有可能需要多次迭代之后才能帶來收益卦尊。
通用工具需要帶來效率提升是有前提的袍冷,那就是通過該工具有效的降低了溝通成本。這就意味著通用工具應(yīng)該是體系猫牡,而不是部件
胡诗。通用工具需要迭代,但一定不是積累而來淌友,工具同樣需要具備概念完整性煌恢,需要團隊意識到專業(yè)工具的需求。
綜上震庭,通用編程工具的出現(xiàn)有下面幾個條件:
1瑰抵、 管理者意識到通用工具的重要性
2、通用工具需要系統(tǒng)規(guī)劃器联,而不是漸漸積累
3二汛、公司能夠承擔(dān)開發(fā)的成本
4婿崭、工具維護人員具備技術(shù)實力
上面理解的工具是開發(fā)工具,另外還可以理解為開發(fā)環(huán)境肴颊。開發(fā)環(huán)境的問題隨著虛擬技術(shù)的發(fā)展現(xiàn)在已經(jīng)是過去式了氓栈,即便使用不同的電腦不同的操作系統(tǒng),也能統(tǒng)一開發(fā)環(huán)境(VirtualBox)婿着。
本章中提到的主程序庫的劃分授瘦,現(xiàn)在看來就是Git的一種使用策略罷了,不再需要專人維護而且十分好用竟宋,可以視為被解決掉的問題提完。但即便如此,為什么人月依然是個神話丘侠?
自由轉(zhuǎn)載-非商用-非衍生-保持署名(創(chuàng)意共享3.0許可證)