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