2006年3月27日
高手成長的六個階段
程序員怎樣才能達到編程的最高境界?最高境界絕對不是你去編兩行代碼,或者是幾分鐘能寫幾行代碼,或者是用什么所謂的可視化工具產生最少的代碼這些工作,這都不是真正的高手境界。即使是這樣的高手,那也都是無知者的自封。
我認為,一個程序員的成長可分為如下六個階段。
?
????????
第一階段
此階段主要是能熟練地使用某種語言。這就相當于練武中的套路和架式這些表面的東西。
?
????????
第二階段
此階段能精通基于某種平臺的接口(例如我們現在常用的
Win 32
的
API
函數)以及所對應語言的自身的庫函數。到達這個階段后,也就相當于可以進行真實散打對練了,可以真正地在實踐中做些應用。
?
????????
第三階段
此階段能深入地了解某個平臺系統的底層,已經具有了初級的內功的能力,也就是“手中有劍,心中無劍”。
?
????????
第四階級
此階段能直接在平臺上進行比較深層次的開發。基本上,能達到這個層次就可以說是進入了高層次。這時進入了高級內功的修煉。比如能進行
VxD
或操作系統的內核的修改。
這時已經不再有語言的束縛,語言只是一種工具,即使要用自己不會的語言進行開發,也只是簡單地熟悉一下,就手到擒來,完全不像是第一階段的時候學習語言的那種情況。一般來說,從第三階段過渡到第四階段是比較困難的。為什么會難呢?這就是因為很多人的思想轉變不過來。
?
????????
第五階級
此階段就已經不再局限于簡單的技術上的問題了,而是能從全局上把握和設計一個比較大的系統體系結構,從內核到外層界面。可以說是“手中無劍,心中有劍”。到了這個階段以后,能對市面上的任何軟件進行剖析,并能按自己的要求進行設計,就算是
MS Word
這樣的大型軟件,只要有充足的時間,也一定會設計出來。
?
????????
第六階級
此階段也是最高的境界,達到“無招勝有招”。這時候,任何問題就純粹變成了一個思路的問題,不是用什么代碼就能表示的。也就是“手中無劍,心中也無劍”。
此時,對于練功的人來說,他已不用再去學什么少林拳,只是在旁看一下少林拳的對戰,就能把此拳拿來就用。這就是真正的大師級的人物。這時,
Win 32
或
Linux
在你眼里是沒有什么差別的
。
每一個階段再向上發展時都要按一定的方法。第一、第二個階段通過自學就可以完成,只要多用心去研究,耐心地去學習。
要想從第二個階段過渡到第三個階段,就要有一個好的學習環境。例如有一個高手帶領或公司里有一個好的練手環境。經過二、三年的積累就能達到第三個階段。但是,有些人到達第三個階段后,常常就很難有境界上的突破了。他們這時會產生一種觀念,認為軟件無非如此,認為自己已無所不能。其實,這時如果遇到大的或難些的軟件,他們往往還是無從下手。
現在我們國家大部分程序員都是在第二、三級之間。他們大多都是通過自學成才的,不過這樣的程序員一般在軟件公司也能獨當一面,完成一些軟件的模塊。
但是,也還有一大堆處在第一階段的程序員,他們一般就能玩玩
VB
,做程序時,去找一堆控件集成一個軟件。
現在一種流行的說法是,中國軟件人才現在是一個橄欖型的人才結構,有大量的中等水平的程序員,而初級和高級程序員比較少。而我認為,現在中國絕大多數都是初級的程序員,中級程序員很少,高級的就更少了。所以,現在的人才結構是“方塔”形,這是一種斷層的不良結構。而真正成熟的軟件人才結構應該是平滑的三角形結構。這樣,初級、中級、高級程序員才能充分地各施所長。
2006年3月23日
通過一段時間的學習感覺感覺對C++的了解不斷加深了.但是還必須不斷努力.感覺水平提高完全是編程練習出來的和學歷無關.其實編程并不需要太高的學歷.想想C#之父的安德爾森是學工學出生不是計算機科班出身有沒有高學歷照樣練成了絕世高手.成了Delphi和C#之父.大家只要努力一定會成功的!要相信自己!不斷鼓勵自己向高目標挑戰!
2006年3月22日
很多朋友都曾經問過我初學者應該選擇什么編譯器學習C/C++語言.所以我把我的
一點想法發表在這里希望對大家有一定的幫助.這僅僅是我個人的一些建議,供大
家參考.
我個人覺得C/C++語言十分龐大就語法本身已經非常復雜了更何況應用領域甚廣需
要學習了解的東西非常多.所以一定要首先把語言基礎打好,把語言用熟.
基于上面的考慮我比較推薦DEV-C++ 4.0.(可以到我的個人主頁上下載)
主要原因有:
1.軟件很小壓縮包只有7M,解壓安裝之后20多M占用硬盤空間很小,占用的資源也?
很小.
2.符合ANSI C++標準.該軟件內核是著名的GCC編譯系統質量高,穩定性好.
? 編譯效率相當高.比如完全相同的C++控制臺程序在DEV-C++下編譯只有
? 70K左右.但是在VC下編譯就達到了500-600K.當然VC編譯結果這么大可能是
? 從安全等多方面考慮后的結果.
3.查錯能力很強.這里要強調的是DEV-C++ 4.0版本.能夠比較精確的定位出錯的
? 位置和原因.不知道怎么搞的現在的DEV-C++ 5.0在這方面做的比較差?所以我
? 現在還是在用4.0版本的.
4.使用簡單.這是選用的一個重要原因.使用VC建立工程之后在那個文件夾下面有
? 大量的編譯中生成的目標文件,感覺比較雜亂.DEV-C++沒有這么多文件,一個源程序
? 對應一個可執行文件,簡單清晰.便于整理
??? 我們在開始階段主要是想學習C/C++語言本身,功能過于強大的開發工具往往提供了
很多暫時我們還不需要的功能,把時間精力都花在這些工具的學習上不利于我們迅速
掌握C/C++語言本身.但是必須強調的是VC是非常強大的工具,熟練使用它可以快速
開發出很多功能強大的軟件,很值得我們學習了解!公司里一般要求熟悉VC開發.
如果對C++了解很深入基礎十分扎實學習VC速度應該是很快的.因此我到現在還
沒有開始學習VC.我已經用DEV-C++編寫了1500多個程序,共9萬多行,仍然感覺C++
十分龐大需要下功夫仔細學習.還有像數據結構,編譯原理等等知識都是很好的練習內容.
后面準備把以前寫的程序整理成CHM格式文件發到網上大家一起討論.
僅僅是自己一點看法.大家可以根據自己的情況選擇學習.
2006年3月21日
很多初學者喜歡說如果讓我參加一個實際的開發項目我就會學的很快.
我覺得這種觀點很幼稚.如果你沒有真本事有哪家公司會要你呢?即使你免費給別人作,別人也會擔心你的工作效率低影響別人的進度.所以你必須自己先把本事練好有了能力才能進入公司然后才有機會進一步提升水平和積累工作經驗.所以必須做到自強!
2006年3月5日
李開復給計算機系大學生的建議
原作者:李開復 |
|
(1)練內功。不要只花功夫學習各種流行的編程語言和工具,以及一些公司招聘廣告上要求的科目。要把數據結構、算法、數據庫、操作系統原理、計算機體系結構、計算機網絡,離散數學等基礎課程學好。不妨試試Donald Knuth的Art of Computer Programming里的題目,如果你能夠解決其中的大部分題目,就說明你在算法方面的功力不錯了。
(2)多實戰。通過編程的實戰積累經驗、內化知識。建議大家爭取在大學四年中積累編寫十萬行代碼的經驗。
(3)求實干。不要輕視任何的實際工作,比如一些看似簡單的編碼或測試。要不懈追求對細節一絲不茍的實干作風與職業精神。
(4)不放棄數學。數學是思維的體操,數學無處不在。尤其當你對一些“數學密集型”的領域有興趣,例如視頻、圖像處理等等,你需要使它成為你的利器。
(5)培養團隊精神,學會與人合作。
(6)激勵創新意識,不為書本和權威意見所束縛。
(7)有策略地“打工”。在不影響學業的前提下,尋找真正有意義的暑期工作或兼職。去找一個重視技術的公司,在一個好的“老板”指導下完成真正會被用戶使用的程序。不要急于去一個要你做“頭”而獨擋一面的地方,因為向別人學習,是你的目的。打工和找工作一樣,“不要只看待遇和職銜,要挑一個你能夠學習的環境,一個愿意培養員工的企業,一個重視你的專業的公司,最后,要挑一個好老板。”
李開復的建議真是非常有道理!我也好好努力,堅持每天寫C++程序! |