第一篇:《人月神話》讀后感
《人月神話》讀后感
通過閱讀《人月神話》,我從中學到了一些東西:
首先,開發一個項目,我們錯誤的認為用人月這個工作量單位來估計和進行進度安排。成本的確隨開發產品的人數和時間的不同,有著很大的變化,進度卻不是如此。因此我認為用人月作為衡量一項工作的規模是一個危險和帶有欺騙性的神話。它暗示著人員數量和時間是可以相互替換的。人數和時間的互換僅僅適用于以下情況:某個任務可以分解給參與人員,并且他們之間不需要相互的交流,而在系統編程中近乎不可能。當任務由于次序上的限制不能分解時,人手的添加對進度沒有幫助。調試、測試的次序特性,許多軟件都具有這種特征。因為軟件開發本質上是一項系統工作——錯綜復雜關系下的一種實踐——溝通、交流的工作量非常大,它很快會消耗任務分解所節省下來的個人時間。從而,添加更多的人手,實際上是延長了,而不是縮短了時間進度。
對于編程,有其樂趣和苦惱。創建事物的快樂,開發對其他人有用的東西的樂趣,將可以活動、相互嚙合的零部件組裝成類似迷宮的東西,這個過程所體現出令人神魂顛倒的魅力,面對不重復的任務,不間斷學習的樂趣,工作在如此易于駕馭的介質上的樂趣——純粹的思維活動,其存在、移動和運轉方式完全不同于實際物體。將做事方式調整到追求完美,是學習編程的最困難部分;由其他人來設定目標,并且必須依靠自己無法控制的事物(特別是程序);權威不等同于責任實際情況看起來要比這一點好一些;真正的權威來自于每次任務的完成任何創造性活動都伴隨著枯燥艱苦的勞動,編程也不例外 人們通常期望項目在接近結束時,(bug、工作時間)能收斂得快一些,然而軟件項目的情況卻是越接近完成,收斂得越慢產品在即將完成時總面臨著陳舊過時的威脅。
開發一個軟件,我們要有合理的時間進度,開發人員要少而精,概念完整性必須考慮在內,要盡量做到盡早交流和持續溝通。
同時,文檔形成了關鍵的樞紐,每個項目管理的工作都圍繞著它們運轉,它們是經理們的主要個人工具。對于計算機硬件開發項目,關鍵文檔是目標、手冊、進度、預算、組織機構圖、空間分配、以及機器本身的報價、預測和價格;對于大學科系,關鍵文檔類似:目標、課程描述、學位要求、研究報告、課程表和課程的安排、預算、教室分配、教師和研究生助手的分配;對于軟件項目,要求是相同的:目標、用戶手冊、內部文檔、進度、預算、組織機構圖和工作空間分配。即使是一個小型項目,我們都會要求書寫相關文檔,對每個關鍵文檔的維護提供了狀態監督和預警機制并且本身就可以作為檢查列表或者數據庫。
良好的工作手冊和組織架構可以開發出更加符合用戶的需求。手冊、或者書面規格說明,是一個非常必要的工具,盡管光有文檔是不夠的。手冊是產品的外部規格說明,它描述和規定了用戶所見的每一個細節;同樣的,它也是結構師主要的工作產物。
形式化定義是精確的,它們傾向于更加完整;差異得更加明顯,可以更快地完成。但是形式化定義的缺點是不易理解。記敘性文字則可以顯示結構性的原則,描述階段上或層次上的結構,以及提供例子。它可以很容易地表達異常和強調對比的關系,最重要的是,它可以解釋原因。在表達的精確和簡明性上,目前所提出的形式化定義,具有了令人驚異的效果,增強了我們進行準確表達的信心。
通常,開發一個軟件我們還會設立規模目標,控制規模,發明一些減少規模的方法——
就如同硬件開發人員為減少元器件所做的一樣。規模預算必須與分配的功能相關聯; 在指明模塊大小的同時,確切定義模塊的功能。培養開發人員從系統整體出發、面向用戶的態度是軟件編程管理人員最重要的職能。
調試,是一種檢驗程序中的方法。然而調試是系統編程中很慢和較困難的部分,而漫長的調試周轉時間是調試的禍根。它可以持續一個很長的時間,從而可能影響項目的交付日期。
為了更好的控制進度,我們需要制定一個嚴格的進度表來控制項目的進度表,進度表由里程碑和日期組成。里程碑必須是具體的、特定的、可度量的事件,能進行清晰能定義。進度表有時可以根據進展情況進行適度的修改。
產品測試時每個產品在提交給用戶的一道程序。而這項工作主要由產品測試機構/小組根據規格說明檢查機器和程序,充當麻煩的代言人,查明每一個可能的缺陷和相互矛盾的地方。每個開發機構都需要這樣一個獨立的技術監督部門,來保證其公正性。產品-測試小組則是顧客的代理人,專門尋找缺陷。不時地,細心的產品測試人員總會發現一些沒有貫徹執行、設計決策沒有正確理解或準確實現的地方。出于這方面的原因,設立測試小組是使設計決策得以貫徹執行的必要手段,同樣也是需要盡早著手,與設計同時實施的重要環節。
一個已開發的項目,我們需要對它進行后期維護。其維護基本上不同于硬件的維護,它主要由各種變更組成,如修復設計缺陷、新增功能、或者是使用環境或者配置變換引起的調整而且維護總成本通常是開發成本的40%或更多。維護成本受用戶數目的嚴重影響,用戶越多,所發現的錯誤也越多。在每次修復之后,必須重新運行先前所有的測試用例,從而確保系統不會以更隱蔽的方式被破壞。其實,對于一個項目,我們要盡量做到完美,減少以后的維護困難和成本。
在計算機技術進步的同時,計算機相關學科知識也在飛速發展。興趣太多,令人興奮的學習、研究和思考的機會也太多——多么不可思議的矛盾啊!這個神奇的時代遠遠沒有結束,它依然在飛速發展。更多的樂趣,盡在將來。
第二篇:人月神話讀后感
人月神話讀后感
二十九年前(1975)﹐IBM大型電腦之父──Fred Brooks 出版一本書﹕“The Mythical Man-Month”。收集了他在1960年代領導1000多人共同發展OS/360大型軟件系統的心得和經驗。該書是論文集﹐其中有一篇文章叫“The Mythical Man-Month”﹐他就以此作為書名。在1956~1965 之間﹐Brooks實際領導IBM 360 大型電腦的開發計劃﹐包括硬體結構及龐大的OS/360作業系統在內﹐因之他具有IBM 大型電腦之父的尊稱。由于OS/360是多達1000位程式師共同合作的大型軟件開發工作﹐讓他深刻了解到大型軟件開發的技術和管理上所面臨的種種困難和挑戰。于是﹐他就將其領導開發OS/360軟件系統的經驗心得收集在這本書里。人們常拿Man-Month(多少人﹐做多少個月)來計算軟件的工作量﹐但是Brooks發現軟件的開發工作是需要人與人之間密切溝通的﹐使得設計工作不易分割﹐所以Man-Month 為單位的計算方法是有問題的(mythical)。也就得出著名的Brooks法則── 「對于進度已落后的軟件開發計劃而言﹐若再增加人力﹐只會讓其更加落后。」(Adding manpower to a late software project makes it later)這是該書名稱的涵義。
看完此書后,我發現人月神話無處不在,其實在我們做
軟件工程來說,此書已經滲透進去了。本書作者為人們管理復雜項目提供了頗具洞察力的見解,既有很多發人深省的觀點,也有大量的軟件工程實踐。本書對我觸動最大的,一是保持設計的概念完整。無論對小軟件還是大軟件,都必須由一個設計師主導,最多兩個人討論來共同完成軟件的整體設計。作為一個軟件,一個系統,必須有一個清晰明確的概念模型,大家都在這個框架下工作,所有的創新發展都必須與基本的概念相吻合。具體的實現人員可以細化概念,但只有總設計者才有否定與發展基本概念的權力。需要注意的一點是,即使是總設計師一直是同一個人,他腦海中所認為理所當然的規則或者概念,很可能由于沒有明確的文檔化,而沒有成為所有開發者共同的概念。概念的完整性,對于很多小規模軟件,由于開發人員不多,開發經理一般都能控制住所有的代碼,概念完整性在組織層面就維持住了。但要注意以后的Bug修改,功能擴展的時候,也要時刻留意與最初的設計是否概念上相容。對于大規模的軟件系統,則必須通過樹狀組織結構,層層控制,總設計師還是一到兩人,每一層都有對下層的絕對把握能力。
二是“一個拿2倍工資的人,生產率可能是其他人的10倍。”不知道其他公司的程序員們如何看。我覺得,作為公司,應該給最好的人最好的待遇,或者說給比目前更高的待遇。組建一個團隊,最好的就是那種精英團隊。微軟就是這
種思路吧,把最聰明的人集中在一起,想不成功都難。
三是進度落后與增加人力。記得當年看《C++編程思想》,Bruce說“十個婦女不能在一個月內生下小孩”(大意),于我心有戚戚焉。而本書作者Brooks得出的結論是對我是震撼性的:“向進度落后的項目中增加人手,只會使進度更加落后”。以前,增加人手基本是挽救進度落后項目的主要辦法。這個辦法行不通的話,難道只有“加班”一條路了?如果不想加班,不想削減功能,不想推遲發布日期,那么。。。唯一的方法還是只有….加人。加足夠的人。而且不要逐步加入,一定要一次性加入。要小心的是,新加入的人可能對原來的組織造成沖擊,或者對原來的設計有不同意見(特別是加入的人中有比較強大的設計者)。那么,就當作,新組建了一個團隊吧。交流,培訓新人,就設計達成一致,繼續向者目標前進。
不同的社會經驗,不同的思想狀態,對讀本書的心得也不一樣。在此我說說書中許多非常好的觀點。
1.外科手術隊伍The Surgical Team
項目經理在項目的初期必須清楚的估計項目的人月運作模式(時間、人力在項目各階段的分配),例如什么時候需要出什么樣成果,決定了什么時候需要什么樣的人加入項目,這是項目經理的責任。
2.貴族專制,民主政治Aristocracy,Democracy,System
要獲得概念的完整性,設計必須由一個人或具有共識的小組來完成。
3.畫蛇添足The Second-System Effect
講述的基本都是基于IBM 360操作系統以及編譯程序等方面的經驗,講述如何避免開發第二個系統的風險,作者認為開發第二個系統的設計師設計出來的系統是最危險的,因此要求他們自律。
4.貫徹執行Passing the word
印象比較深刻的是“體系結構設計人員必須為自己描述的任何特性準備一種實現方法,但他不應該支配具體的實現過程。”
5.巴比倫塔會失敗Why did the Tower of Babel Fail?講述巴比倫塔會失敗的原因是缺乏交流。
6.胸有成竹Calling the Shot
主要講述如何計算編程時間,以及提出幾個人的經驗算法。講述的各種算法可能都不太適合與現在的高級語言,但Portman的觀點仍然適合現在,即編程人員實際的編程時間只有50%,其他的時間都花在了無關的瑣碎事情上。
7.削足適履Ten Pounds in a Five-Pound Sack
主要講述程序占用的空間等,在70年代比較突出,但現在好多了。
8.提綱擎領The Documentary Hypothesis
說明文檔的作用
9.未雨綢繆Plan to Throw One Away
唯一不變的是變化本身。在大型項目中,項目經理需要有兩個和三個頂級程序員作為技術輕騎兵,當工作繁忙最密集的時候,他們能急馳飛奔,解決各種問題。
10.干將莫邪Sharp Tools
主要講述項目中管理好各種工具的重要性,項目經理首先要制定一種策略,讓各種工具成為公用的工具,這樣才能使開發、維護和使用這種工具的開發人員的效率更高,這種工具可能是開發人員開發出來的,也可能是使用現有的,可能是通用的,也可能是專用的或個人偏好的。比如:文檔編寫工具、開發工具(包括各種不同開發平臺)、調試工具、測試工具、數據庫工具、版本管理、項目管理工具等。
11.整體部分The Whole and the Parts
特別是這句話"BELL實驗室監控系統項目的V.A.Vyssotsky提出,“關鍵的工作是產品定義。許許多多的失敗完全源于那些產品未精確定義的地方”,細致的功能定義,詳細的規格說明,規范話的功能描述說明以及這些方法的實施,大大減少了系統中必須查找的BUG數量。雖然這句話的意思只是說明精確定義產品將減少BUG的數量,但我看到了系統分析的最重要的工作——產品定義。
12.禍起蕭墻Hatching a Catastrophe
這章節說明使項目進度拖后的最大原因不是重要的事件,如新技術、重組等,而是一些瑣碎的小事,每件小事只耽誤半天或一天時間,但這種小事多以后,將使項目的進度嚴重拖后。項目對于公司就如程序對測試工程師一樣,如果不了解它,它就是一個黑盒子,如果不打開這個黑盒子,你可能永遠不知道盒子里面有什么。
13.另外一面The other face
本章說明程序的另一面——文檔。
不了解,就無法真正擁有——歌德,作者引用的歌德的話來描述文檔對客戶的重要性,提出客戶需要什么樣的文檔以及文檔的格式和包含的內容,指出當時存在的大多數文檔只描述了樹木,形容了樹葉,但沒有整個森林的圖案。想想,這種情況在現在仍然沒有改變。于是作者提出了兩個觀點:
1.流程圖:流程圖是被吹捧得最過分的一種程序文檔。許多程序甚至不需要流程圖,很少程序需要一頁以上的流程圖
2.自動文檔化(self-documenting)的程序:提出文檔與程序合為一體,能很好的解決文檔與程序分開造成的文檔過時的問題,并說明了在程序中加入文檔的一些方法和技巧。
14.沒有銀彈-軟件工程中的根本和次要問題(No Silver Bullet-Essence and Accident in software Engineering)
人狼是傳說中的妖怪,只有銀彈才能殺死他。作者認為軟件項目具有人狼的特性,因為軟件項目也可能變成一個怪物,一個落后進度、超出預算、存在大量缺陷的怪物。作者通過軟件系統的內在特性復雜性、一致性、可變性和不可見性來分析說明了軟件天生就沒有銀彈。作者試圖通過分析軟件問題的本質和很多侯選銀彈的特征來探究其中的原因。他行動的第一步是將大塊的“巨無霸理論”替換成“微生物理論”。這個變化的過程告訴你,進步是逐步取得的,伴隨著辛勤的勞動,對規范化過程應進行持續不懈的努力,而這個努力的過程相應的就誕生了軟件工程。
15.再論《沒有銀彈》No Silver Bullet Refired
看完再論《沒有銀彈》后,雖然作者說有不少人對他的觀點持反對或不同意見,但我始終覺得他的觀點是對的——根本和次要問題的劃分以及定義。作者認為軟件開發困難的部分是概念的結構,如規格化、設計和測試等概念的結構,而不是概念的表述和實現概念,雖然實現概念可能占用了小于90%的時間,就如現今的軟件開發一樣,系統分析通常占用的整個項目開發時間不超過20%,而80%的時間花在編程上一樣。
第三篇:《人月神話》讀后感
學號:0967020449姓名:張小波班級:軟件工程專升本3班
《人月神話》讀后感
在軟件領域中,很少能有像《人月神話》一樣具有深遠影響力和暢銷不衰的著作。Brooks 博士為人們管理復雜項目提供了最具洞察力的見解,既有很多發人深省的觀點,又有大量軟件工程的實踐,影響著一代又一代….通過閱讀《人月神話》,我從中學到了一些東西:
首先,開發一個項目,我們錯誤的認為用人月這個工作量單位來估計和進行進度安排。成本的確隨開發產品的人數和時間的不同,有著很大的變化,進度卻不是如此。因此我認為用人月作為衡量一項工作的規模是一個危險和帶有欺騙性的神話。它暗示著人員數量和時間是可以相互替換的。人數和時間的互換僅僅適用于以下情況:某個任務可以分解給參與人員,并且他們之間不需要相互的交流,而在系統編程中近乎不可能。當任務由于次序上的限制不能分解時,人手的添加對進度沒有幫助。調試、測試的次序特性,許多軟件都具有這種特征。因為軟件開發本質上是一項系統工作——錯綜復雜關系下的一種實踐——溝通、交流的工作量非常大,它很快會消耗任務分解所節省下來的個人時間。從而,添加更多的人手,實際上是延長了,而不是縮短了時間進度。
對于編程,有其樂趣和苦惱。創建事物的快樂,開發對其他人有用的東西的樂趣,將可以活動、相互嚙合的零部件組裝成類似迷宮的東西,這個過程所體現出令人神魂顛倒的魅力,面對不重復的任務,不間斷學習的樂趣,工作在如此易于駕馭的介質上的樂趣——純粹的思維活動,其存在、移動和運轉方式完全不同于實際物體。將做事方式調整到追求完美,是學習編程的最困難部分;由其他人來設定目標,并且必須依靠自己無法控制的事物(特別是程序);權威不等同于責任實際情況看起來要比這一點好一些;真正的權威來自于每次任務的完成任何創造性活動都伴隨著枯燥艱苦的勞動,編程也不例外 人們通常期望項目在接近結束時,(bug、工作時間)能收斂得快一些,然而軟件項目的情況卻是越接近完成,收斂得越慢產品在即將完成時總面臨著陳舊過時的威脅。
開發一個軟件,我們要有合理的時間進度,開發人員要少而精,概念完整性必須考慮在內,要盡量做到盡早交流和持續溝通。
同時,文檔形成了關鍵的樞紐,每個項目管理的工作都圍繞著它們運轉,它們是經理們的主要個人工具。對于計算機硬件開發項目,關鍵文檔是目標、手冊、進度、預算、組織機構圖、空間分配、以及機器本身的報價、預測和價格;對于大學科系,關鍵文檔類似:目標、課程描述、學位要求、研究報告、課程表和課程的安排、預算、教室分配、教師和研究生助手的分配;對于軟件項目,要求是相同的:目標、用戶手冊、內部文檔、進度、預算、組織機構圖和工作空間分配。即使是一個小型項目,我們都會要求書寫相關文檔,對每個關鍵文檔的維護提供了狀態監督和預警機制并且本身就可以作為檢查列表或者數據庫。
良好的工作手冊和組織架構可以開發出更加符合用戶的需求。手冊、或者書面規格說明,是一個非常必要的工具,盡管光有文檔是不夠的。手冊是產品的外部規格說明,它描述和規
定了用戶所見的每一個細節;同樣的,它也是結構師主要的工作產物。
形式化定義是精確的,它們傾向于更加完整;差異得更加明顯,可以更快地完成。但是形式化定義的缺點是不易理解。記敘性文字則可以顯示結構性的原則,描述階段上或層次上的結構,以及提供例子。它可以很容易地表達異常和強調對比的關系,最重要的是,它可以解釋原因。在表達的精確和簡明性上,目前所提出的形式化定義,具有了令人驚異的效果,增強了我們進行準確表達的信心。
通常,開發一個軟件我們還會設立規模目標,控制規模,發明一些減少規模的方法——就如同硬件開發人員為減少元器件所做的一樣。規模預算必須與分配的功能相關聯; 在指明模塊大小的同時,確切定義模塊的功能。培養開發人員從系統整體出發、面向用戶的態度是軟件編程管理人員最重要的職能。
調試,是一種檢驗程序中的方法。然而調試是系統編程中很慢和較困難的部分,而漫長的調試周轉時間是調試的禍根。它可以持續一個很長的時間,從而可能影響項目的交付日期。
為了更好的控制進度,我們需要制定一個嚴格的進度表來控制項目的進度表,進度表由里程碑和日期組成。里程碑必須是具體的、特定的、可度量的事件,能進行清晰能定義。進度表有時可以根據進展情況進行適度的修改。
產品測試時每個產品在提交給用戶的一道程序。而這項工作主要由產品測試機構/小組根據規格說明檢查機器和程序,充當麻煩的代言人,查明每一個可能的缺陷和相互矛盾的地方。每個開發機構都需要這樣一個獨立的技術監督部門,來保證其公正性。產品-測試小組則是顧客的代理人,專門尋找缺陷。不時地,細心的產品測試人員總會發現一些沒有貫徹執行、設計決策沒有正確理解或準確實現的地方。出于這方面的原因,設立測試小組是使設計決策得以貫徹執行的必要手段,同樣也是需要盡早著手,與設計同時實施的重要環節。
一個已開發的項目,我們需要對它進行后期維護。其維護基本上不同于硬件的維護,它主要由各種變更組成,如修復設計缺陷、新增功能、或者是使用環境或者配置變換引起的調整而且維護總成本通常是開發成本的40%或更多。維護成本受用戶數目的嚴重影響,用戶越多,所發現的錯誤也越多。在每次修復之后,必須重新運行先前所有的測試用例,從而確保系統不會以更隱蔽的方式被破壞。其實,對于一個項目,我們要盡量做到完美,減少以后的維護困難和成本。
在計算機技術進步的同時,計算機相關學科知識也在飛速發展。興趣太多,令人興奮的學習、研究和思考的機會也太多——多么不可思議的矛盾啊!這個神奇的時代遠遠沒有結束,它依然在飛速發展。更多的樂趣,盡在將來。
第四篇:人月神話讀后感
人月神話讀后感
、《人月神話》是預言了未來還是扼制了未來?
事實是:我們目前的許多工程知識,——無論是從書上看到的,還是從實踐中經驗到的——大多未曾脫離《人月神話》之所言,人月神話讀后感。
我在開篇中說《人月神話》“是一本可怕的書”。然而我感受懇摯的可怕之處在于:現今凡是論及工程(且不要讓人感受是離經叛道),那么所解說的定然是Brooks的這么的經驗以及由此推出的見解,可能在不違拗這些經驗和見解上的一些翔實的實作措施!我們全然不顧書中所言是假象,還是性質的推論,可能只是假象歸納的一個(未必準確的)答案。盡管這些答案大多數時候都好像預期地展目前你的切實工程中:
原文中還有眾多相仿的見解、假象和答案,都成為了切實工程中的既存假象。先民們所說的圣人以及通神者,皆因他們多數時候在準確地預言自己的切實。只有當這個“多數時候”變成半點的時候,先民們才會置疑圣人和通神者的力氣。其實我們懂得并未曾預言未來的人,大多數時候是兩種情形導致的假象:
他做出了準確的推斷;
你主觀地跟隨了他對未來的設定。
后者是風險的。大師們預言了未來也就改換了未來,即便未來未必“該當”好像他所預言的那樣。
但萬一這種預言的前提不準確,那么未來定然脫離這種波及而回到它該當的事態上去。好像我們看到的另一些事實一樣,有許多假象闡明,我們正在歸來工程***的道路上摸索前進。我們也覺察,在大多數情形下,先哲們的預言在實踐中被檢討著,只是偶爾“不太靈光”。下表則列出一些不同的例子:
注1:我例舉了爽利的一些見解,并不闡明我是Ap/Xp的fans。Ap/Xp的問題另論,在這里,我只是解釋存在一種不同的信念。
注2:Brooks爾后確認“定然丟棄原型”是一個不太準確的見解。
注3:Brooks在這里未曾犯訛謬,只是他所談論的是狹義的流程圖,而我們例舉的時序圖則更廣義。
我們追憶上一細節,在《人月神話》中的那“31%的答案”的前提——也即便那7%的性質中,如下兩項是顯明猜忌的(也是重要置疑):
目標的性質:是大型工程,是系統項目,而不是過程
個體的性質:是私利性的其實早就有人意識到個體的性質“未必全是私利的”,尊重這些個體就會帶來一些收獲。例如Ap正是因為更尊重開發人員的稟性與力氣,以及互相間的配合而獲得了效率的晉級。
再進一步地說,既然Brooks設定了“大型工程或系統項目”這么的目標,并給出了一些答案。那么在“小那么一點點的”工程項目中,是不是這些答案就無須定了呢?例如Brooks的眾多提倡,對于某些目標——例如你要用為期三個月的工夫開發一個的產品——就并不是很管用;可能大約無法厲行——例如你的群體總共只有6個人,連“外科手術式的群體”都組織不起來,讀后感《人月神話讀后感》。
Brooks的答案對于同樣的目標,以及在他所述的“性質”未能發生改換時,還是比擬管用(或有厲行的可能性)。因而上述一些例外,總是在上述的“7%的性質”被抵賴或被改換的情形下獲得的。因而我們提出的問題是“如何抵賴或改換”這些難以撼動的性質。然而在我看來,Brooks早曾經在最佳位置上,給出了撬動它們的一個支點:
Brooks感受發生“自力更生小型過程”與“編程系統產品”是不同的問題。
Brooks談論的編程系統產品的規模究竟有多大呢?我想起碼該當是以IBM 360為參看的。不過書中在引用Joel Aron(IBM在馬里蘭州蓋茲堡的系統技巧主管)的例子時說,“大型意味著過程員的數目超過25人,將近30,000行的號召”。而按照《人月神話》的數據:人均效率800號召/人年,則這個“大型項目”該當必需1.5年能力告終。另外,還必需大約一倍的人工,來負責除開代碼之外的測驗、管教、文檔和溝通等工作。
好的,萬一你有一個“(起碼)50人,開發一年半”的項目,那么你能夠先接受Brooks的答案去實踐一下:起碼你能夠有工夫來談論工程問題,也能夠組建那樣規模的群體。然而,難道只有這么的“大型工程”才算得工程,而“小那么一點點”的就不算嗎?切實是,我們一方面在做著“小那么一點點的”工程項目,另一方面在聽著全副業界嘈雜著“為更大規模的工程”而準備的工程理論。我們總在實踐Brooks的“答案”可能“預言”,而淡忘這些答案的前提:
Brooks的經驗源自對IBM 360等大型項目標實踐與分析;
Brooks所述的工程是要獲得編程系統產品;
Brooks感受編程系統產品的工作量可能是自力更生小型過程的9倍(在告終大約雷同功能的情形下)。
事實上我們目前的軟件工程的進展是被駕駛了,而不是被預言了。從性質上來說,Brooks在《人月神話》中只是談論了大型工程的厲行,以及相應規模下的群體創立。而我們,便按照這么的設定來擺開了全副軟件工作的工程化厲行。
促成這種現狀的,并不但僅是一本書的能力,還在于商業的能力。因為只有在這么擴展開來的工作環境中,才可能有商業時機。——即便那些工程顧問與厲行專家歷來未曾厲行過“50人,開發一年半”這么的項目,凡是他們能報出Brooks的名字,能談及某些工具在應付“大型項目”中的獲勝經驗,他們就曾經獲勝了一半了。
為什么“爽利”之初頗受爭議?為什么爽利對一些中小型的群體顯得管用和可厲行?為什么當這些爭議被擺在現在的獲勝平息爾后,傳統工程的理論家們卻不忘恨恨地評上一句:那是一種不能(或難以)利用于大型工程的措施呢?!
因為萬一大家都很“爽利”,都只做比這些大型工程“小那么一點點”的工程,那么傳統工程的專家們就失業了。反到來,只有把工程做大,大到“爽利”錯過了含義,而“宏偉”變成了性質的時候,傳統工程就可感受任何失利找到借口:看啊,Brooks就說過“未曾銀彈”嘛。
第五篇:人月神話讀后感
3110402157_ 王森_軟件11
2《人月神話》讀后感
在閱讀這本書之前,已經很多次聽到關于人月神話這本書以及他的作者Brooks的消息了.在軟件領域, 《人月神話》具有深遠影響力而且暢銷不衰.這一次,正好老師的作業要求我們閱讀這本書,我終于使有機會閱讀這本經典之作了.在這過去的幾個星期里面,一點一滴的閱讀這本書,粗略的了解了這本書.首先,讓我印象深刻的是《人月神話》提出的兩條著名的法則:
1、人月神話:向一個已經延后的項目中投入更多的人力資源只會讓它更延后。人月神話看上去這么浪漫的名字,原來并不是真的說神話故事,作者闡述的主要觀點是在軟件開發項目上項目進度和增加人員這兩個概念是不能互換。雖然已經時隔20多年了,這本書依然給我震撼,一是讓我驚訝的是,美國20年前軟件項目所面臨的問題,在我們現在依然如此,糟糕的情況沒有改變,大家仍舊在焦油坑里掙扎,而且看上去沒有解決辦法.當讀到“是當意識到進度的偏移時,下意識(以及傳統)的反應是增加人力。這就像使用汽油滅火一樣,只會使事情更糟。越來越大的火勢需要更多的汽油,從而進入了一場注定會導致災難的循環。這讓我明白了一個重要的道:理項目的進度是不能夠光靠人力的增加來推進的.2、沒有銀彈:沒有任何技術或管理上的進展,能夠獨立地許諾十年內使生產率、可靠性或簡潔性獲得數量級上的進步。
雖然現在有不少人對他的觀點持反對或不同意見,但我始終覺得他的觀點是對的——根本和次要問題的劃分以及定義。作者認為軟件開發困難的部分是概念的結構,如規格化、設計和測試等概念的結構,而不是概念的表述和實現概念,雖然實現概念可能占用了小于90%的時間,就如現今的軟件開發一樣,系統分析通常占用的整個項目開發時間不超過20%,而80%的時間花在編程上一樣。
這兩個原則已經在過去的幾十年間得到了驗證.我相信在未來,它以依舊是成立的.另外,在焦油坑那一章里面,有一句話讓我難以忘懷:岸上的船,如同海上的燈塔,無法移動.是呀, 過去幾十年的大型 系統開發就猶如這樣一個焦油坑,很多大型和強壯的動物在其中劇烈地掙扎。他們中大多數開發出了可運行的系統——不過,其中只有非常少數的項目滿足了目標、時間進度和預算的要求。各種團隊,大型的和小型的,龐雜的和精干的,一個接一個淹沒在了焦油坑中。表面上看起來好像沒有任何一個單獨的問題會導致困難每個都能被解決,但是當它們相互糾纏和累積在一起的時候,團隊的行動就會變得越來越慢。對問題的麻煩程度,每個人似乎都會感到驚訝,并且很難看清問題的本質。不過,如果我們想解決問題,就必須試圖先去理解它。這就是生活真理。要想解決一件事,首先要了解事情的始末。提出問題就是解決問題的答案。
人月神話還讓我了解到, 軟件系統可能是人類創造中最錯綜復雜的事物.往往一個很小的功能,實在也需要開發職員的架構設計方面的完善,對 其它模塊的影響及擴展,以及代碼編寫工作。用戶在前臺可能看到的只是幾個文字,實際是中開發職員晝夜奮戰的結果。很多時候,客戶的需求修改,在他們眼里看起來是如此地Easy,可他們卻忽視了很多他們看不到的因素.總而言之,《人月神話》是一部IT界的神話,經久不衰.它就像是一顆“銀彈”,教會我們如何去消滅軟件項目這只“人狼”,指引著每個IT從業者認真開發,開拓進取.人月神話將帶領IT界的精英們創造一個又一個IT界的神話..