我對程序員技能的一些認識


看了這篇文章《優秀程序員無他-善假於物也》,我忍不住再次吐嘲。其實,這篇文章對於剛剛接觸編程——也就是剛剛會寫"Hello World"的人,還是有點參考價值,只是這篇文章說到的技能,應該是優秀程序員所應該具備的,但只會這些就稱之為優秀的程序員,未免過於貶低優秀這個詞了。

很多時候,我聽到一些程序員很愛標榜自己很愛接受新技術,看了多少本書,很上進,相反,象哥哥這種老程序員,則之以鼻,認為不接受新事物,不愛學習,固步之封。對於這種井底之蛙,我是一笑置之,懶得跟他說,免得教聰明他。當然,如果能虛心點,我倒是很樂意和他們探討的。

相反,我是個非常上進的程序員,非常熱學習。能十幾年如一日地編碼,我想在中國里沒幾個人能做得到吧。十幾年,聽上去很遙遠,可是當這一天到來了,也不過如此。為什么不愛跟着這些潮流走?因為昨天還是MVC3,EF4,今天就是MVC4、EF5。明天就是MVC5,EF6了。這些東西根本沒有積累的價值,而只有使用的價值。什么叫積累的價值,什么是使用的價值,我打個比方說吧,家里有個老古董,皇家御用青花瓷的花瓶,就是具有收藏價值。而使用價值,就現在十幾塊錢的那種花瓶,用了一段時間,看着不順眼,就扔了,再買一新的。哪些知識是具有積累價值的呢?在我看來,越靠近底層的,越有積累的價值。比如說,算法、編譯原理等等。

作為程序員,不能僅僅滿足於些看看書,寫寫代碼這個階段。在我看來,程序員大慨可以粗分為三個階段。

第一階段就是具有基本的編碼能力。

在這個階段里寫一些代碼了。主要能力包括:

1、能夠看懂英文文檔,照着文檔上的API寫些例子出來。

2、碰到問題,能夠通過搜索引擎去搜索,去解決一些問題。

3、對源代碼管理有一個基本的認識,能夠使用 SVN 這些進源碼的管理。

4、能夠看懂一些代碼片段。

另外吐嘈一下,我接觸到的程序員,這個階段往往最自以為是,很喜歡弄些名詞來唬人。

第二階段就是對代碼有着很強的控制能力。

1、能夠閱讀一些框架的代碼,並且對框架的設計有個整體的認識。

2、在使用框架的時候,能夠發現,並且解決一些問題。

3、能夠理解並且靈活應用一些設計模式到自己的代碼里面。

4、能夠寫一些框架了。

第三階段就是對產品的駕馭能力。

這個階段應該具備產品的研發能力,把一個產品給你,通過對它把玩一番之后,能把它逆向出來。包括:

1、這個產品的基本原理是什么,都涉及到哪些技術。

2、技術的方向感。要解決某技術上的問題,應該往哪個大方向走,應該收集哪些資料。這里還有個命中率的問題,放向感好的,往往能命中90%。當然,沿着這個方向走不通了,還能夠換個方向,繼續嘗試。

3、代碼級別的逆向分析能力。很多時候,我們做的產品,存在這樣或者那樣的問題無法解決,但別人的產品卻沒有。往往是因為受到不公平的對待,某些API不對我們開發,當然,我假設做的產品是運行在 Windows 平台上,可以說,開源還是相對公平的。這時候,要突破這些限制,就需要對代碼進行逆向分析,去尋找解決的辦法。據說,一度灸手可熱,受歡迎程度遠超 VC++ 的 Borland C++ ,就是因為卡在 Windows 平台的某個 API 上,而漸漸不敵 VC++ 。

 

以前就是我對程序員技能的一些理解,歡迎拍磚。

我最近所寫的一些文章鏈接:

被神化的架構和被誇大的CTRL+C、CTRL+V

一位軟件作者的吐嘈——讀《Google Reader猝死啟示錄:互聯網無法永遠免費》有感


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM