修煉一名程序員的職業(yè)水準(zhǔn)[2]
總結(jié)一下,其實你在這時需要的是對自己掌握新開發(fā)環(huán)境的能力的自信,而不是一遍遍地重復(fù)來證明自己。第二個大挑戰(zhàn)就是你明白了只掌握VC是不夠的,你發(fā)現(xiàn)自己有點淺薄,有很多東東你會用但你不太懂,很多方面支持VC編程的知識你都沒掌握,比如操作系統(tǒng)的源碼、網(wǎng)絡(luò)協(xié)議知識、Windows 的注冊表、進(jìn)程和線程的基礎(chǔ)知識、硬件驅(qū)動方面的知識、ActiveX、Windows 龐大的 API,又是一個等等等等,這些基礎(chǔ)知識的學(xué)習(xí)和掌握可是要花費大量時間的,你再一次深切地感到時間太不夠用了,因為這時的你大概有許多俗務(wù)纏身了,所以有點沮喪,還不用提IT業(yè)每天不知有多少新東西在發(fā)布,KAO,永遠(yuǎn)都跟不上,越拉越遠(yuǎn)了。哎!別氣餒,振作一點,你還是忘記了自己是個職業(yè)人,既然好多東東在工作中你永遠(yuǎn)都沒機(jī)會用,那么干嘛要學(xué)呢?用什么才學(xué)什么,最多預(yù)測到馬上要用什么,先一步學(xué)什么好了,要知道沒有人是真正的、無所不精的全科大夫,除非你是神,但如果你還在耐著性子看這篇文章,你肯定是個人嘛。 OK,一般工作后三五年,你經(jīng)歷了上述過程,經(jīng)受了誘惑和考驗,終于明白了一個道理:你要的是強(qiáng)勁的學(xué)習(xí)知識的能力,是對某種軟件知識/技能的有深度的精通,一種摸到它的根的深度,而不是已掌握的技能的種類和數(shù)量。這時無論誰用他掌握了多少種你不會的技能來嚇唬你都沒用,你對他的層次只有蔑視。通過幾年的學(xué)習(xí)和工作,要記住最重要的一點,永遠(yuǎn)最重要:對自己學(xué)習(xí)IT知識能力的自信,一個程序員一生都要不停地進(jìn)行高強(qiáng)度的學(xué)習(xí),用心問問自己,有沒有這個自信?別用虛榮心來騙自己哦,如果沒有的話,那就不必花費你寶貴的時間向下看了,作者在此感謝你有耐心看到這里,現(xiàn)在建議你關(guān)閉這篇文章,趁著年輕,當(dāng)機(jī)立斷轉(zhuǎn)行吧!
三、注重邏輯:成為一名職業(yè)程序員 好,再前進(jìn)一點點,你就要成為一名職業(yè)程序員了,讓我們繼續(xù)來完成這個任務(wù)吧!我們在前一節(jié)提到過,"你發(fā)現(xiàn)一些個別的demo是極品,它所展現(xiàn)的程序邏輯結(jié)構(gòu)是你設(shè)計不出來的,你現(xiàn)在有點更關(guān)心它的程序設(shè)計構(gòu)架,甚于對你原始目的(某種相關(guān)的技術(shù)/技巧)的關(guān)注",其實你是在關(guān)注這個demo程序作者的`思維邏輯,所有程序的本質(zhì)就是邏輯。技術(shù)你已經(jīng)較好地掌握了,但只有完成邏輯能力的提高,你才能成為一名職業(yè)程序員。打一個比方吧,你會十八般武藝,刀槍棍棒都很精通,但就是力氣不夠,所以永遠(yuǎn)都上不了戰(zhàn)場,這個力氣對程序員而言就是邏輯能力(其本質(zhì)是一個人的數(shù)學(xué)修養(yǎng),注意,不是數(shù)學(xué)知識).邏輯能力也是逐步提高的,開始時你一定是用直觀的邏輯能力來編程的,怎么想就怎么編,不對就再改,在改進(jìn)中提高自己的邏輯能力,從直觀邏輯能力提高到抽象邏輯能力,這是很正常的。提前說一句吧,到達(dá)邏輯能力的至高境界,其表現(xiàn)是用數(shù)學(xué)語言來描述問題和問題的解決辦法,高度抽象!好,說回來吧,你要提高邏輯能力,最快的辦法就是讀別人寫的結(jié)構(gòu)優(yōu)秀的程序。優(yōu)秀的代碼是百讀不厭的(這句話是我抄來的),暫時放放對其中某種技術(shù)和技巧的關(guān)注吧,你要推導(dǎo)和學(xué)習(xí)的是這些好程序的邏輯結(jié)構(gòu),它們是被精心設(shè)計出來的。你可以先捂住這個demo程序,自己設(shè)計一個功能相同的程序結(jié)構(gòu),然后比較一下demo的程序結(jié)構(gòu),如果差距較大,那你就不應(yīng)簡單地改進(jìn)一下,而是要把demo作者設(shè)計的過程在心里復(fù)原一遍,做到這一點也許有點困難,但這種事干的多了,你就會越干越快,越來越得心應(yīng)手,你的邏輯能力飛速提升,你能看得上的邏輯結(jié)構(gòu)優(yōu)秀的程序開始不多了,下一步就是練習(xí)。從工作中開始吧,如果你有空閑,你需要做至少兩類練習(xí),一類是算法練習(xí),所有的經(jīng)典算法都是經(jīng)典的邏輯,題目有的是,像個好學(xué)生一樣吧,每年的國內(nèi)國際編程競賽都有邏輯要求非常高的題,你可以只選一兩道難題來做做。當(dāng)你可以把復(fù)雜的單遞歸程序(只有A調(diào)A)變成非遞歸程序時,已經(jīng)不錯了,如果你能看得懂雙遞歸程序(A調(diào)A、A調(diào)B、B調(diào)A、B調(diào)B都有),我為你鼓掌!你不必往下看了,我有點不好意思啦――班門弄斧,你快滾蛋吧!另一類是把以前和當(dāng)前你工作中你不滿意的程序推倒重新設(shè)計一遍,這非常重要,省時省力,因為你熟悉需求,技術(shù)上也沒問題,目的就是改進(jìn)程序的邏輯結(jié)構(gòu),很劃算哦,唯一要克服的就是:你對推翻以前工作中那點小小成就的心理障礙,如果你真想優(yōu)秀,說句粗話:這點心理障礙算個屁,一遍遍反復(fù)地推倒已有的成果只能使自己快速進(jìn)步,放手干吧,沒什么好可惜的,馬恩早就在《共。產(chǎn)。黨宣言》里說過了:在這個過程中,你失去的只有鎖鏈(禁錮你思想的鎖鏈). 讓我們來總結(jié)一下,經(jīng)過自我否定后,再生的你盡管對過去的"業(yè)績"還有一些眷戀,但已是一個初步具備職業(yè)水準(zhǔn)的程序員了,掌握了相應(yīng)的技術(shù)和技巧,具備了較高的抽象邏輯思維能力,最主要的特征是:能自覺地自我否定,不斷地追求更高水平的邏輯能力。 在這個過程中,如果你能注意以下一些小的方面,你前進(jìn)的步伐也許會快一些。 從編譯原理的角度來理解你工作中使用的高級語言,如果你做到這一點,至少有兩個好處,第一個好處是避免一大堆低水平重復(fù)出現(xiàn)的編譯錯誤。一名優(yōu)秀的Coder平均在一個工作日中應(yīng)該完成200行以上的源碼,其編譯錯誤應(yīng)該控制在5個以下,要知道這200行源碼不是一次完成的,所以大多數(shù)情況下你都要追求一次編譯通過,而一名職業(yè)水準(zhǔn)的程序員,應(yīng)該進(jìn)一步做到即使用purify這類的工具來檢查源碼,也不會存在嚴(yán)重的內(nèi)存泄露。第二個好處是可以提高源碼的可讀性和效率。規(guī)范地編寫你的代碼使你自己的邏輯清晰,因為你明白多加幾個括號和空行、多換行對齊、多注釋,編譯器是會自動識別的,不影響程序執(zhí)行的效率,反過來,控制好遞歸調(diào)用和循環(huán)內(nèi)的if語句才是提高程序效率的關(guān)鍵,要全力避免遞歸,但要深刻理解遞歸,能通過自己建立堆棧來把遞歸程序轉(zhuǎn)換成非遞歸程序,要求還是較高的哦! 避免思維陷阱,只要你是人就一定有自己的思維慣性,這一定又會表現(xiàn)在你的程序邏輯中,有時你就是從這個慣性中跳不出來(誰都有這個時候),但要心里有數(shù)才行,所以你需要幫助,如果你有幾個水平相若或更高的職業(yè)伙伴,太好了,當(dāng)遇到花30分鐘還打不下的bug時,就別浪費時間了,找他們吧,最要緊的是能思路清晰明確地表述你的問題,通常你自己在這個過程中或者伙伴中就有人把問題解決了,又快又好。另外,有幾個可以良性競爭的職業(yè)伙伴是人生的一件幸事,1+1>2,大家各有所長,你最好做到及時公開你的成果,技不壓身嘛,IT發(fā)展的這么快,你再優(yōu)秀,那點東東也沒有什么值得隱藏的,所以你可以技術(shù)或水平不夠高,但千萬不可以讓真正具有職業(yè)水準(zhǔn)的選手鄙視你的職業(yè)品質(zhì)和行為。
【修煉一名程序員的職業(yè)水準(zhǔn)[2]】相關(guān)文章:
職業(yè)道德修煉08-21
職業(yè)心態(tài)的修煉與提升10-06
職業(yè)人的植物修煉法則11-21