程序員經(jīng)常犯的幾個錯誤是什么?



隨著網(wǎng)絡(luò)科技的創(chuàng)新,IT行業(yè)迎來了長足的發(fā)展,程序員群體也在不斷擴大當中。盡管程序員能夠解決開發(fā)或測試或運維等方向的大部分問題,但是程序員畢竟不是萬能的!今天就來總結(jié)一下程序員經(jīng)常犯的幾個錯誤是什么?

 

1、在設(shè)計模式上常犯的錯誤

不排除有的程序員認為,只要學(xué)會了設(shè)計模式、設(shè)計原則,就等于學(xué)會了設(shè)計。但是實際上設(shè)計模式和設(shè)計原則,只是前人根據(jù)設(shè)計實踐做的總結(jié)和提煉,設(shè)計,歸根到底是要解決問題的。而程序員需要做的就是把具體問題的解決辦法,經(jīng)過一定的抽象,變成程序員的語言。

有時候我們反而被設(shè)計模式或設(shè)計原則粗暴地掌握束縛了手腳。跳脫出刻板的設(shè)計模式,換種角度思考,說不定會有好的結(jié)果哦!

2、多種計算機語言學(xué)習(xí)觀點的錯誤

有程序員覺得學(xué)習(xí)一種語言就可以了,學(xué)習(xí)那么多語言沒有必要。事實上,多掌握一門合適的計算機語言不僅僅是多掌握一種謀生的工具,如果一種新的語言能夠很大程度上改變你對編程、對設(shè)計的看法,那么興許它就值得你去學(xué)習(xí)。

譬如C語言,可以培養(yǎng)嚴謹?shù)乃季S;譬如動態(tài)語言,它可以幫助程序員更好地做面向?qū)ο蟮腸oding;譬如函數(shù)式語言,它在工業(yè)生產(chǎn)、運算領(lǐng)域有著不可替代的作用。

當然話說回來,所謂術(shù)業(yè)有專攻,對于某一門計算機語言(包括該語言所需的運行時環(huán)境、其中的編譯或解釋的原理)深入的掌握,是很有必要的。

另外,我們時?吹街T多計算機語言孰優(yōu)孰劣的爭論,計算機語言歸根到底是一種工具,工具是隨著時代發(fā)展升級和變更的,單純的優(yōu)劣爭論沒有太大意義。

3、算法問題上的爭議

算法有多重要,這一件事的爭議一直都很大。

軟件歸根到底是用來解決問題的,提到算法就不能不提到數(shù)學(xué)(這也是為什么很多軟件領(lǐng)域的大師都具備相當?shù)臄?shù)學(xué)背景),對于解決問題,這里可以簡單歸納成兩步:

(1)把實際的問題抽象成簡化的數(shù)學(xué)模型

(2)用算法去解決這個數(shù)學(xué)問題

算法,在這里應(yīng)該是一個廣義的概念(這里的算法并不僅僅指大學(xué)里學(xué)習(xí)的狹義的具體算法),算法是解決上述數(shù)學(xué)問題的辦法。如果工作中你并未意識到它的存在,那只是說明,你抽象出的數(shù)學(xué)模型比較簡單,解決這個模型的辦法也很簡單,或者有現(xiàn)成的方式可以模仿,或者有現(xiàn)成的框架幫你完成了,以至于你不去關(guān)注它、在乎它。

如果你做的事情是充滿創(chuàng)新意義的,是別人從沒有做過的,這時候算法興許就成了決定你成敗的因素。

在當前中國的環(huán)境下,視野廣闊和經(jīng)歷豐富的人很好找,但是企業(yè)要招到具備上述兩點能力來解決問題的人,其實是非常困難的。

客觀印象上,大家都會認為程序員每天的工作就是碼代碼、碼代碼and碼代碼,但是在實際工作的過程中,我們一定不能被固定思維框住,跳脫出來,做最靈活的程序員!

北大青鳥網(wǎng)上報名
北大青鳥招生簡章