「沒(méi)有銀彈」的 《人月神話(huà)》

這是近期我閱讀的第二本關(guān)于軟件工程的書(shū)籍,第一本是《構(gòu)建之法》;雖然兩本書(shū)都是關(guān)于軟件工程方面,但各有側(cè)重。《構(gòu)建之法》一定程度是為了解決老師在具體教授知識(shí)上的一些難點(diǎn)和問(wèn)題,所以在軟件工程中的各個(gè)領(lǐng)域如構(gòu)建、開(kāi)發(fā)、測(cè)試、項(xiàng)目管理 都有具體的探討和對(duì)應(yīng)的實(shí)踐,側(cè)重于術(shù); 《人月神話(huà)》的中心論點(diǎn)是在大型編程項(xiàng)目中,由于人員的分工和軟件固有的內(nèi)在困難,在十年內(nèi)無(wú)法是生產(chǎn)率、可靠性、簡(jiǎn)潔性 取得數(shù)量級(jí)上的進(jìn)步,側(cè)重于。

從學(xué)習(xí)的遞進(jìn)層次關(guān)系來(lái)看,應(yīng)該先懂「道」,再學(xué)習(xí)「術(shù)」,這樣才能夠獲得更深的認(rèn)識(shí)。不過(guò)對(duì)于高難度學(xué)科的學(xué)習(xí)過(guò)程而言,我們更傾向于先學(xué)習(xí)術(shù),在實(shí)踐的同時(shí)不斷強(qiáng)化,逐步獲得更深的理解,最終在腦海中形成全面的「系統(tǒng)」。所以要想學(xué)會(huì)一門(mén)技術(shù)或技能,最好的方法就是馬上開(kāi)始行動(dòng),并且堅(jiān)持「做中學(xué)」。

接下來(lái)我將根據(jù)自己的理解把整本書(shū)的框架梳理出來(lái),受限于自身的能力,不免會(huì)這樣或那樣的不足,歡迎批評(píng)和建議。


名詞解釋

「銀彈」: 銀色子彈,在歐洲民間傳說(shuō)及19世紀(jì)以來(lái)哥特小說(shuō)風(fēng)潮的影響下,銀色子彈往往被描繪成具有驅(qū)魔功效的武器,是針對(duì)狼人等超自然怪物的特效武器。后來(lái)也被比喻為具有極端有效性的解決方法,作為殺手锏、最強(qiáng)殺招、王牌等的代稱(chēng)。

文中的「沒(méi)有銀彈」:沒(méi)有任何技術(shù)或管理上的進(jìn)展, 能夠獨(dú)立地許諾十年內(nèi)使軟件系統(tǒng)項(xiàng)目生產(chǎn)率、 可靠性或簡(jiǎn)潔性獲得數(shù)量級(jí)上的進(jìn)步。

1. 現(xiàn)象


軟件系統(tǒng)項(xiàng)目中的「焦油坑」:表面上看起來(lái)好像沒(méi)有任何一個(gè)單獨(dú)的問(wèn)題會(huì)導(dǎo)致困難, 每個(gè)都能被解決, 但是當(dāng)它們相互糾纏和累積在一起的時(shí)候, 團(tuán)隊(duì)的行動(dòng)就會(huì)變得越來(lái)越慢。 對(duì)問(wèn)題的麻煩程度, 每個(gè)人似乎都會(huì)感到驚訝, 并且很難看清問(wèn)題的本質(zhì)。 最終導(dǎo)致項(xiàng)目進(jìn)度嚴(yán)重滯后或者干脆以失敗而告終。

2. 原因


  1. 缺乏合理的時(shí)間進(jìn)度是主要原因,它比其他所有因素加起來(lái)的影響都還大。
  2. 對(duì)進(jìn)度缺少跟蹤和監(jiān)督(如何進(jìn)行跟蹤和監(jiān)督??)。其他工程領(lǐng)域中,經(jīng)過(guò)驗(yàn)證的跟蹤技術(shù)和常規(guī)監(jiān)督程序,在軟件工程中常常被認(rèn)為是無(wú)謂的舉動(dòng)。
  3. 意識(shí)到進(jìn)度偏移時(shí),固有(傳統(tǒng))的反應(yīng)是增加人力。這就像使用汽油滅火一樣, 只會(huì)使事情更糟。 越來(lái)越大的火勢(shì)需要更多的油, 從而進(jìn)入了一場(chǎng)注定會(huì)導(dǎo)致災(zāi)難的循環(huán)。
  4. 傳統(tǒng)團(tuán)隊(duì)(按任務(wù)分解)的結(jié)構(gòu)組成無(wú)法保證系統(tǒng)「概念的完整性」
  5. 軟件的系統(tǒng)內(nèi)在(根本)困難:復(fù)雜性、一致性、可變性和不可見(jiàn)性。
  6. 軟件的次要困難: 不能相對(duì)較容易地使用編程語(yǔ)言表達(dá)這些抽象實(shí)體, 在空間和時(shí)間限制內(nèi)將它們映射成機(jī)器語(yǔ)言。

3. 現(xiàn)行的解決辦法


  1. 定義清晰、具體、可度量的項(xiàng)目里程碑;制定合理的時(shí)間進(jìn)度表,并及時(shí)更新修正。
  2. 大型項(xiàng)目的每一個(gè)部分由一個(gè)團(tuán)隊(duì)解決,但是該隊(duì)伍以類(lèi)似外科手術(shù)的方式建立,而并非一擁而上。也就是說(shuō), 同每個(gè)成員截取問(wèn)題某個(gè)部分的做法相反, 由一個(gè)人來(lái)進(jìn)行問(wèn)題的分解, 其他人給予他所需要的支持,以提高效率和生產(chǎn)力。具體成員的職責(zé)見(jiàn)文末「《人月神話(huà)》原文摘要
  3. 系統(tǒng)設(shè)計(jì)中,概念完整性應(yīng)該是最重要的考慮因素,也就是說(shuō)由團(tuán)隊(duì)中的外科醫(yī)生或者非常少數(shù)互有默契的人員來(lái)實(shí)現(xiàn)。 這可以一定程度上盡量規(guī)避問(wèn)題的出現(xiàn)。
  4. 保證交流和交流的結(jié)果--組織
  • 必備的文檔手冊(cè)和更新機(jī)制
  • 各種形式的會(huì)議
  1. 工具的合理利用,包括「高級(jí)語(yǔ)言」和「交互式編程」。
  2. 建立軟件系統(tǒng)開(kāi)發(fā)中的「實(shí)驗(yàn)性工廠」:化學(xué)工程師很早就認(rèn)識(shí)到, 在實(shí)驗(yàn)室可以進(jìn)行的反應(yīng)過(guò)程, 并不能在工廠中一步實(shí)現(xiàn)。一個(gè)被稱(chēng)為“實(shí)驗(yàn)性工廠”的中間步驟是非常必要的,它會(huì)為提高產(chǎn)量和在缺乏保護(hù)的環(huán)境下運(yùn)作提供寶貴經(jīng)驗(yàn)。

4. 結(jié)論


  1. 「沒(méi)有銀彈」:沒(méi)有任何技術(shù)或管理上的進(jìn)展, 能夠獨(dú)立地許諾十年內(nèi)使軟件系統(tǒng)項(xiàng)目生產(chǎn)率、 可靠性或簡(jiǎn)潔性獲得數(shù)量級(jí)上的進(jìn)步。

  2. 軟件工程的焦油坑在將來(lái)很長(zhǎng)一段時(shí)間內(nèi)會(huì)繼續(xù)地使人們舉步維艱,無(wú)法自拔。只能期待人們?cè)诹λ芗暗幕蛘邉倓偝搅λ芗暗姆秶鷥?nèi)進(jìn)行探索和嘗試。這個(gè)復(fù)雜的行業(yè)需要: 進(jìn)行持續(xù)的發(fā)展; 學(xué)習(xí)使用更大的要素來(lái)開(kāi)發(fā); 新工具的最佳使用; 經(jīng)論證的管理方法的最佳應(yīng)用; 良好判斷的自由發(fā)揮; 以及能夠使我們認(rèn)識(shí)到自己不足和容易犯錯(cuò)的——上帝所賜予的謙卑。


作為軟件行業(yè)從業(yè)者中的一員,更準(zhǔn)確的說(shuō)是作為一名開(kāi)發(fā)人員,我們需要學(xué)習(xí)的不僅僅是學(xué)習(xí)開(kāi)發(fā)相關(guān)的技術(shù),更需要全面性的去了解和學(xué)習(xí)軟件工程,這將有助于我們建立全面系統(tǒng)的認(rèn)知。在工作過(guò)程中也應(yīng)該時(shí)刻注意到焦油坑帶來(lái)的束縛,去思考未來(lái)軟件工程的更多可能的出路。

還有一點(diǎn)必須承認(rèn),由于受限于自身的經(jīng)驗(yàn)不足,以及本書(shū)部分翻譯上的生硬,有一部分的內(nèi)容我并不能完全理解。不過(guò)慶幸的是即便如此書(shū)中的觀點(diǎn)已然給予我關(guān)于軟件工程更宏觀的認(rèn)識(shí),在以后的工作學(xué)習(xí)中必然對(duì)我有所裨益,我有理由相信隨著自身能力和各方面經(jīng)驗(yàn)的積累,我將獲得更深層次的認(rèn)知。


附:

  1. 《人月神話(huà)》原文摘要
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,036評(píng)論 25 709
  • 人月神話(huà)讀書(shū)筆記 焦油坑 為什么兩個(gè)人的創(chuàng)業(yè)團(tuán)隊(duì)可以超越大公司9倍以上的效率開(kāi)發(fā)任何程序。而大公司的產(chǎn)業(yè)化團(tuán)隊(duì)效率...
    陳浩要安靜閱讀 18,591評(píng)論 3 34
  • 個(gè)人簡(jiǎn)介:廖振中,西南財(cái)經(jīng)大學(xué)法學(xué)院副教授,碩士生導(dǎo)師。中華人民共和國(guó)執(zhí)業(yè)律師(2003年起執(zhí)業(yè)),四川省國(guó)資委專(zhuān)...
    職場(chǎng)起跑線(xiàn)閱讀 3,540評(píng)論 0 1
  • 家不是一個(gè)講理的地方。這句話(huà)聽(tīng)起來(lái),很沒(méi)有道理,但千真萬(wàn)確,因?yàn)槲覀円?jiàn)證了周?chē)芏嗟募彝?,有幸福的家庭,也有不幸?..
    胡青青887782閱讀 217評(píng)論 0 0
  • 中午在舊書(shū)攤上買(mǎi)了一本舊書(shū),拿回宿舍,余正穩(wěn)看到了,拿起來(lái)。 問(wèn):“你又買(mǎi)的啥書(shū)?《古文觀天》?” 我:“觀天?你...
    餘留閱讀 237評(píng)論 0 0

友情鏈接更多精彩內(nèi)容