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