軟件開發中最流行的錯誤觀點有哪些?
英文原文:What are some popular myths in software development?
本文譯自 Quora 的同名問答貼:軟件開發中最流行的錯誤觀點有哪些? Lee Semel 給出的答復得票數最高,他列出了一些流行的錯誤觀念:
● 瀑布模型是在實施軟件之前最行之有效的描述系統的模型,它能幫助軟件實施時循序漸進,而非循環反復。人們一直當它是一個好的實施方案,而一篇論文中恰好將它列為很差的實施方案,因此引起廣泛討論。http://en.wikipedia.org/wiki/Waterfall_model
● 用戶知道他們想要什么,他們也能夠將需求闡述清楚。
● 有某種語言、技術或是流行方法將會是殺手锏,能夠取代你正在使用的方法,解決你的問題。
● 人月神話里說,在一個開發團隊中增加人手會讓效率成線性增長。http://en.wikipedia.org/wiki/The_Mythical_Man-Month
● 對規范文檔的認同意味著對實際功能的認同,甚至規范文檔本身寫的很模糊或是有出入也要遵守規范文檔。http://gettingreal.37signals.com/ch11_Theres_Nothing_Functional_about_a_Functional_Spec.php
● 唯有一種方法能將開發實施得最好,程序員的自由被所用的語言嚴格束縛。
● 有多于一種方法來完成一個任務,程序員有完全的自由。
● 設計樣式是通用的,而不像某種編程語言的表達式一樣有諸多限制。
● 最好的技術方法就是最好的方法。
● 你可以用正則表達式來解析 HTML:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags
● 不需要理會市場反應,應該讓市場來適應軟件。
● 軟件可以被精確估計。
● 軟件開發可以被當作固定價格、固定限期的項目出售。
● 對象是對現實世界最好的描述。對象最好的應用方面便是描述真實世界中的實體。
● 數據應該隱藏在對象后面,對象應提供操作數據的需要的所有方法。
● JavaScript 和 Java 有關系。
● 邏輯應該和顯示完全分離開。
● 軟件開發最重要的是需要好的數學能力,最好的學習方法是學習理論的計算機科學,數學能力強的也能寫出好的軟件。解決邏輯難題的能力是判斷一個軟件工程師能力在最有效方法。
● 軟件就是表面上看到的,設計后面發生了什么不需要引起我們的注意,尤其對于那些非技術出身的經理和客戶來說更是這樣。
● 編寫軟件對于缺乏人際溝通能力的人來說是一個好職業。
● 軟件可以有效的用其他媒介來模擬和設計,例如 wireframes 或 Photoshop comps,因為用實際的代碼來設計(HTML 和 CSS)太難,太貴了。
● 設計師們不能也不需要學習寫代碼,應該盡量遠離真實的代碼。
● 設計僅僅是表面上的裝飾,其重要性沒有好的開發重要。
● 軟件可以基于一系列的抽象的基礎之上可靠的構建,你僅需要理解最上的抽象層,而不需要了解背后的實現細節。參看 Joel Spolsky 關于抽象漏洞定律的討論:http://www.joelonsoftware.com/articles/LeakyAbstractions.html
● 當你最終發布了新的應用或是網站,就意味著一切結束了。