程序員應(yīng)知 循序漸進
作為程序員,我想每個人都對于提高和進步非??释?,也期望自己有朝一日能夠從菜鳥變成大師級的人物,能夠做出很棒的系統(tǒng),能夠得到他人的尊敬和贊賞,當然還可以得到不菲的收入。
然而,想要達到那個層次,不可能一蹴而就,必須要踏踏實實,一步一個腳印,逐步提高。這在每個行業(yè)或者說每個人的成長過程中都是一樣的,所以我們必須要把握每一個提高的機會,從一點一滴做起。古語云:不積跬步,無以至千里,道理也是一樣的。
前幾天一位醫(yī)學專業(yè)的朋友談到了醫(yī)學上的微創(chuàng)新,他說,如果看醫(yī)學上一兩年的發(fā)展,似乎沒有什么特別大的進步和創(chuàng)新,但是,這并不意味著醫(yī)學上沒有進步,當我們回頭看十年前,再與當前的情況作比較的話,就會發(fā)現(xiàn)已經(jīng)有了很大的創(chuàng)新,而這些創(chuàng)新并非是一下子就出來的,而是經(jīng)過十年來一點一點的微小的創(chuàng)新積累出來的,其實也就是一個量變引起質(zhì)變的過程。
再說一個程序員會非常熟悉的例子,大家一定都玩過游戲,比方說《暗黑破壞神》《魔獸世界》等等需要打怪升級的游戲,里面的設(shè)定并不會讓玩家一下子從菜鳥成為超級高手,那樣游戲的趣味性就大大下降了,玩家必須通過不斷的積累,累計經(jīng)驗值,然后在一定的時候升級,在到達一定的級別的時候才能夠?qū)W會某種技能。其實在這里面,每一次小的升級都可以對應(yīng)行業(yè)中的一次微創(chuàng)新,而學到指定級別下的技能,則可以對應(yīng)一次變革性的創(chuàng)新。
類似的例子舉不勝舉,只要稍微注意,就能夠發(fā)現(xiàn)。
然而,作為程序員,想要成為高級程序員,想要獲得架構(gòu)師、系統(tǒng)分析師、DBA等等誘人的稱號,有時候卻會比較急躁,在自己的能力還沒有達到的時候,就匆匆上馬,接受自己的能力范圍之外的工作,就為了那個“名”,結(jié)果卻往往會得不償失,一方面有拔苗助長的嫌疑,另一方面對于項目也是一種損害,做出了不好的架構(gòu),系統(tǒng)分析不到位而導致客戶不滿意,諸如此類的情況,在我們身邊相信大家都見過吧。
所以,想要真正做好項目,做好程序員,我們還是需要循序漸進,然而到底應(yīng)該怎么做呢?我的建議,僅供參考。
對于剛剛踏入軟件行業(yè)的同學來說,當然就是多多編寫代碼,在參與的各個項目中學習并且積累經(jīng)驗。在這個階段我們會感覺進步非常快,很快就感覺可以做很多具體的工作了,個人也會非常有成就感。但是,此時千萬不可被勝利沖昏了頭腦,不能覺得自己已經(jīng)再也無法從項目中、從團隊的成員那里學到東西了,覺得項目離開自己就做不下去了。相反,這個時候應(yīng)該繼續(xù)保持低調(diào),以空杯子的心態(tài)努力學習更多的知識。
做了三年左右的程序員之后,我想大家都會有一個飛躍,積累出來的經(jīng)驗得到總結(jié),也有了自己的思想,這個時候,很可能項目中所能夠?qū)W到的東西已經(jīng)無法滿足需要了,所以就要找尋其他積累經(jīng)驗的方式。當然跳槽、換項目是一種方式,而另一種方式就是多多從各種渠道——包括網(wǎng)站、書籍等——學習知識,了解行業(yè)的動態(tài),另外還要多多與其他人交流,那樣會產(chǎn)生很多想法,從而更好地引起個人的思考。
到了七八年或者十年左右,可能會迎來另一次飛躍,做過的項目很多,積累的經(jīng)驗很多,思考的成果也很多,真正形成了自己的風格和思想,這個時候仍然不能放棄學習和交流,而另一方面,思考會變得更加重要,并且也是要確定自己發(fā)展方向的時候了。到底是做項目經(jīng)理,還是架構(gòu)師,還是系統(tǒng)分析師,或者DBA等等,在對自己有了比較清醒的認識之后,就可以確定自己的目標了,然后就要為之做各個方面的積累,準備迎接下一次質(zhì)變。
上面的內(nèi)容僅僅是我的建議,時間的長短和具體的做法會因人而異,在以后的我也無法給出建議,畢竟我也還在等待下一次升級。我想大家所要了解到的就是不能放棄學習和提高,而要不斷進步,那樣經(jīng)過一段時間之后,一定會有變化的。
其實我們在工作的過程中,循序漸進不僅僅體現(xiàn)在個人的成長上,對于代碼的修改也一樣,特別是對于遺留代碼,想要完善的時候,也需要使用循序漸進的方式。
之前曾經(jīng)看過對于系統(tǒng)是要重構(gòu)還是重寫的討論,更多人傾向于重構(gòu),畢竟那是一種循序漸進的方式,不斷地對代碼進行修改,質(zhì)量一步一步提高,形成一定的積累之后,就會發(fā)現(xiàn)代碼的質(zhì)量會發(fā)生很大的改變。而重構(gòu)本身,也提倡小步前進,道理是相同的。
如果進行的是重寫,則進行的是一種革命式的修改,然而,一切重頭開始,不可避免會因為沒有積累,而導致所要耗費的人力物力財力都非常大。
總之,作為程序員,應(yīng)該了解到這個很重要的原則——循序漸進,也希望能夠聽到大家的想法。
【編輯推薦】