修煉一名程序員的職業水準[1]
假設你是一名軟件專業畢業的本科學子,如何在工作中修煉成為一名有較高職業水準的程序員呢,本文試圖總結作者從事15年軟件開發工作的感想,希望對有志成為職業程序員的人有所幫助,并借此機會感謝原昆明工學院計算機系的和智玲老師和張懷寧老師,特別感謝我的碩士導師,南京大學計算機系的博導鄭國梁教授。
注:本文辭尖刻,乃作者脾氣秉性使然,如果你看著有氣,就請多多見諒,放下別看了。
程序就是一系列按步驟進行的操作序列,它有好多種級別,比如最低級的微程序、次低級的匯編程序、高級的各種編程語言程序、最高級的腳本語言程序,也許我列的不對,但沒關系,我要說的是不管是那個級別的程序,其本質都是操作的邏輯序列。大多數系統和應用程序都是建立在高級編程語言上的,比如C、C++、C#、FORTRAN、BISIC、JAVA等等,就讓我們只關注這一級的編程能力吧。因此如果一個程序員的邏輯能力不高,他永遠都不能成為一名具有合格職業水準的程序員,我們在下面的討論有關編程能力的方方面面,最終都是為了最大程度地提高和實現一名程序員的邏輯能力。
一、掌握基礎知識:十六年寒窗的持續積累 從7歲讀小學起,經過16年的學習,你從軟件專業本科畢業后,必須完成以下幾門專業課程的學習:計算機組成、操作系統原理、匯編語言、數據結構、編譯原理、數據庫原理、軟件工程、結構性設計語言(PASCAL、C)、面向對象設計語言(C++、C#)、計算機網絡等,你最好還懂一些算法分析、分布式系統、計算機圖形學、形式邏輯、人工智能原理、軟件設計模式、軟件構架/框架等研究生的課程,16年來,你積累的除了知識,更重要的是形成最適合自己的學習方法和工作方法。這些是你具備程序員職業水準的基礎能力,不要受什么計算機軟件怪杰之類傳奇的影響,那不過是小概率事件,而且這些怪杰們就算沒有讀過軟件本科和研究生,也往往自學了大多數專業課程,很可能比在校學習的學生對這些課程的精髓部分理解的更好,還有他們的工作方法和思維方式是特別而高效的,但普遍性差,可以借鑒,不宜模仿。好,所以現在你只需要問問自己,那些課程和知識都學會并掌握了嗎?如果是,那就準備好進行實踐了。
二、在實踐中提高:成為一名高水平的Coder好了,你畢業了,在校功課都不錯,也找了一個專業對口的工作,你想大展鴻圖了,可是別急,你的翅膀還不夠硬,不信我們說來看看。 通常,你在工作中都會用到某一種單位/公司固定的操作系統和編程語言開發環境,比如Windows、UNIX、LINUX等操作系統,又比如用VC、VB、PB、Delph、JAVA、Motif/XWindow、QT、OpenGL、OpenInventor等編程語言和開發環境,我們在后面把它們合稱為開發環境。就在校學習的有關開發環境的知識而言,大概你距工作需要的差距是不小的,當某個操作系統和編程語言環境成為你的飯碗時,就不應也不能用通過課程/認證考試之類的眼光和要求來評價你的能力,即使你能考100分。你需要深入地學習該操作系統和編程語言環境的各類開發手冊的所有內容,你會說大多數你都用不上,其實你既對又不對,對的是單從使用的角度而言,你確實用不上開發手冊的大多數內容,比如龐大的VC開發類庫和復雜的開發環境,你在實際工作中能用到的不到總數的1/10或1/5,不對的地方在于,你用到的部分不是孤立存在的,它們是整個體系中的一部分,只有對整個體系有了一個較完整的了解,才能得心應手、隨心所欲地用好你用到的部分,你才算初步具備在這種開發環境下進行Coding的職業水準(還遠不夠程序員的職業水準呢),而這只是剛開始。如何才能真正掌握一種開發環境的全面的知識呢,最原始的辦法就是讀開發指南/教程、參考手冊,一般來講,學習開發指南/教程時,你如果是一個認真的人,都會完成5/10~7/10左右內容的學習和練習,如果你想成為職業選手,就應該完成9/10以上內容的學習和練習。參考手冊不同,大多數所謂的"程序員"們只是用到了才翻翻,這差的太遠了,你應該象讀開發指南/教程一樣,每個環節都要讀,比如VC,參考手冊中的每個類,類的每個函數,都要讀上幾遍,它們往往是一小伙一小伙地糾纏在一起使用的,開始時讀得你毫無頭緒、心煩意亂,不要緊,還有一手呢,如果你開發環境安裝的全面,它們往往都有開發商做的`demo例子可看,你就進入另一個境界了,開始時你關注demo中的具體技術,后來你發現這些demo的程序寫的都還算不錯,結構簡單但合理,如果你真的用心,就一定能發現一些個別的demo是極品,它所展現的程序邏輯結構是你設計不出來的,你現在有點更關心它的程序設計構架,甚于對你原始目的(某種相關的技術/技巧)的關注,這時的你,開始了從一名Coder向一名Programmer的轉變,你會忍不住要看看開發商提供的源程序,比如。h和。cpp,通常你會找到include路徑下所有的。h程序,你才知道,哇!好多好多東東在參考手冊中都沒提到,你要學的太多了,沒時間顧及其它的業余愛好了,現在知道為什么程序員是年輕人的職業了吧,你要有足夠多的時間才行,即使你的智商有160.如果你走到這一步,在你工作的團隊中,已經是經常有人向你請教技術問題,經常有人請求你幫忙debug,你已是公認的"高手"了,別得意,因為你仍然是個Coder,為什么這么說呢,你想想,你已深入了解了這個開發環境中的各種技能,知道一名Coder如何用好這些東西,可是你能設計的出提供給Coder們用的東西嗎?唔……,你想了想,可能還不太行。對了,就是這樣,你還是一名小我境界的程序員呢,本質是個Coder,當然已是一名高水平的Coder了,然而你需要進一步登堂入室才能成為一名真正的程序員。 讓我們繼續吧,通常你都是從精通一種編程環境開始的,假設你已經較為精通在Windows下用VC開發軟件了,這時在技術和技巧方面你將面臨一小一大兩個挑戰,第一個小挑戰是如果公司/單位改換了開發環境,比如用LINUX下的QT交互語言工具進行開發,你不過是把前面掌握VC的過程再來一遍,由于在主觀上經歷了VC工具的學習過程,在客觀上各種開發環境都有太多相似的方面,這回你掌握的應該較快。要小心,在這時第一次誘惑之門打開了,因為你感覺良好,看!這回這么快,我就這么好地掌握了新的開發環境,你開始關注其它暫時還用不到的同類環境,比如VB、Delph、JAVA,如饑似渴地掌握各種開發工具,證明自己的學習能力和價值,但你忘了一點,你仍然是個Coder,只不過是一個在好多開發環境下都能編程的Coder,就像你生活在中國,因而精通了漢語,工作需要你又掌握了英語,然后你就來了勁,把俄語、日語、阿拉伯語、拉丁語,等等等等,都學習個遍,我只能說,有點BT.你忘了自己是個職業人,同一類的東西工作中用得到才需學習,太多太多的Coder們喜歡在一起比較和炫耀自己會掌握了幾種開發工具,不信你看看招聘時的求職書就知道了,sigh!他們中絕大多數人永遠都只能停留在這個層次上,心浮氣躁,一生都再也當不成真正的程序員了。
【修煉一名程序員的職業水準[1]】相關文章:
職業道德修煉08-21
職業心態的修煉與提升10-06
職業人的植物修煉法則11-21
如何修煉與提升自己的職業心態?11-15
職業經理人的修煉職業化的心態09-08
職業經理人的十二項修煉11-11
失業程序員的職業規劃02-08
酒店職業經理人的5項修煉09-24
職業經理人如何修煉自身的能力09-17
《教師職業道德修煉》讀后感08-29