許多開發者都曾遇過被要求減少設計的環節並「盡快把東西做出來」。martin fowler對這種做法表示質疑,並認為對於大多數專案來說,以設計質量為代價換取開發速度是不現實的。martin說道:
\\設計活動的確要花費時間和精力,但這是有回報的,因為設計使得將來程式的發展更為暢順。忽略設計能使你在短期內節省時間,但這筆技術負債越積越多,最終會逐漸降低你的生產效率。為軟體設計投注精力可以讓你的專案更具生命力,讓你的專案可以走得更快更長久。
\
這裡所說的設計活動包括各種風格,從經典的預先設計(up-front design)到自然出現設計(emergent design),都是在敏捷專案中常見的。
\
\\確實有數次讓我印象深刻的看法是,即使降低開發速度,也要使設計上的成果讓程式設計師們保持心情愉快。
\
犧牲設計上的投入來或換取開發速度在大多數專案中都行不通,這是因為系統很快就變得難以下手,在設計上節省的時間很快就由於生產效率的降低而得不償失。
\ 在削減任何設計投入之前,如果我們能找到正在開發的系統的設計投入和回報的邊際曲線,當然結果會最好,但我們只能依靠經驗和直覺來做到這一點,因為我們沒辦法測量軟體開發的生產效率。
\ 然而,在特定條件下,估算設計回報的邊際需要經驗,正如antti tarvainen所指出的,缺乏經驗不光讓軟體開發的新手難以作出直覺判斷——也使經理難以評估設計投入的經濟價值:
\
\\我們的軟體開發新手無法直覺判斷設計的價值,因為他的概念模型還不夠豐富……問題是,他不知道與沒有設計直接去編寫軟體功能相比,設計到底有多大的價值。對設計的低估導致糟糕的**質量,並陷入編碼——修補錯誤的迴圈。高估設計的價值導致專案癱瘓在分析階段(對於大型的預先設計)或者降低迭代速率(對於敏捷方法)。
\
dennis e. hamilton(又名orchid)將設計成熟前就武斷結束設計環節歸因於幾個常見錯誤:
\
\\這解釋了新手常犯的疏失:好高騖遠。我已經揪住了豬尾巴,下一步該怎麼做紅燒肉?如果一開始能預見到結局,我就不會搞砸了,但誰說我一定會搞砸呢,對不對?讓我在沒有設計的野地裡撒撒野,反正在這裡我也沒有起到什麼作用。除了fowler說的安全降落區域,肯定會有什麼看不見的東西接住我,摔不死的。
\ 這也解釋了常見的管理疏失:沒有深思熟慮就將泰山壓頂的技術負債丟到一邊,也從不想法去補救。管理層也許應該比軟體工人們更加理解軟體生命週期和風險管理,雖然他們沒有技能(當然也不會蠢到)自己去完成這些工作。
\
\\我認為它比大多數人想象的要低:通常是數週而非數月。但這仍然只是我的直覺判斷。
\
如果這個觀點是正確的,那麼幾乎所有軟體系統都會為設計上的妥協付出代價。
軟體設計,你會嗎?
軟體設計,你會嗎?不知道當我問到你這個問題的時候,你會怎麼回答?軟體設計是什麼?各抒己見 結果 眾說紛紜,自認為都是對的,那誰才是理解的是最正確和最完整的?我不知道類似的問題還有多少個,總之,軟體設計不是你想的那麼簡單。高手和低手的區別往往在於高手認為周邊的人都比他差,固然他理所當然就成為高手 而低...
真的有天堂嗎?
城市夜晚的天空很難見到群星,幸運的話也只能瞧見少許的幾顆星,不像家鄉的夜空,總是群星璀璨。今天從外面回來時,抬頭仰望天空,瞥見了一顆星星,望著那顆星星,下午在星巴克窗邊望著來往人群時那種思念的情緒再次肆意的襲上心頭,仰望那顆星星,我在想,那些傳說是不是真的 天空的每顆星星都代表了乙個人,即使那個人已...
真的可以有積分嗎
部落格真的你能有積分嗎 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮...