程序員進(jìn)階的建議 多看、多寫(xiě)、多交流
很多程序員初學(xué)者都說(shuō)入門(mén)之后不知道該如何提高,我都是告訴他們多實(shí)踐。最近在我們的團(tuán)隊(duì)中建立了一個(gè)學(xué)生的實(shí)習(xí)小組,我在和他們講授程序設(shè)計(jì)分析的時(shí)候,我也給他們了個(gè)小建議寫(xiě)代碼就是多看、多寫(xiě),后來(lái)又補(bǔ)上一點(diǎn):多交流。
我認(rèn)為不管是做什么行業(yè)或工作,只要專(zhuān)注都可以有自己不同的成就。因此我覺(jué)得做任何事必需要有熱情,而且是持續(xù)的熱情,有一句話說(shuō)“好的開(kāi)始是成功的一半,持之以恒是成功的另一半”我很認(rèn)同,所以自己的認(rèn)定的事情就應(yīng)該堅(jiān)持的去做。我提出了三多:多看、多寫(xiě)、多交流,來(lái)將熱情付出行動(dòng)。
這里談到的是當(dāng)你入門(mén)后怎么使自己不段的提高的一些方法,可能只是一些片面之詞,但我相信只要你去做了都會(huì)有一些收獲。
在我們開(kāi)始學(xué)習(xí)程序,都必須對(duì)一些基礎(chǔ)知識(shí)進(jìn)行學(xué)習(xí),例如語(yǔ)法、常用的內(nèi)置函數(shù),就PHP來(lái)說(shuō)內(nèi)置函數(shù)有成百上千個(gè)(沒(méi)有統(tǒng)計(jì)過(guò)),就常用的也有上百個(gè)。怎么才可以對(duì)這些逐個(gè)掌握?死記硬背?這是一個(gè)常人都無(wú)法做到的,即使是記住了,通常能否靈活的應(yīng)用還要打個(gè)問(wèn)號(hào)。那該怎么做呢?
首先是多看,看技術(shù)文章,看開(kāi)源代碼。
技術(shù)文章應(yīng)該不必多說(shuō),這是學(xué)習(xí)新技術(shù)和積累技術(shù)的必備渠道。這里我談?wù)勗撛趺纯?,很多人包括我自已有時(shí)候,只是看一遍就算了,這樣的結(jié)果一般都是知其然不知所以然。我認(rèn)為要把別人的東西變成自己的必須實(shí)踐。把文章所說(shuō)的技術(shù)通過(guò)自己理解的寫(xiě)出來(lái)并改進(jìn),并在合適的時(shí)候盡快應(yīng)用的你的實(shí)際工作中。
再說(shuō)看代碼,一是一些網(wǎng)友的代碼,這里就要有一個(gè)觀念,就是不能迷信別人的代碼,應(yīng)該客觀的去看,學(xué)習(xí)別人的方法的時(shí)候,應(yīng)該去考慮它是否有問(wèn)題,應(yīng)該是辯證的態(tài)度對(duì)對(duì)待,如果有問(wèn)題自己試著去解決,并和他們交流。
二是看開(kāi)源項(xiàng)目中的代碼,這類(lèi)就不僅僅是看代碼了還有框架、設(shè)計(jì)思想等。我建議每個(gè)人至少看到1到2套開(kāi)源代碼,因?yàn)槲艺J(rèn)為開(kāi)源代碼對(duì)自己的提高比一般的技術(shù)文章要快的很多。
首先它們都是一些較為成功的項(xiàng)目,在成功項(xiàng)目中其實(shí)包含了原作者的經(jīng)驗(yàn)和其項(xiàng)目不斷改進(jìn)中產(chǎn)生的非富經(jīng)驗(yàn)。對(duì)于開(kāi)源項(xiàng)目,我的方法是先從它的入口文件看起一般是index.php看它的整體文件結(jié)構(gòu),再看它的公共文件里的內(nèi)容,具體的一些常用的工具類(lèi),這樣會(huì)對(duì)整個(gè)項(xiàng)目的結(jié)構(gòu)有一個(gè)了解,然后就是你所興趣的功能的具體實(shí)現(xiàn)代碼,并詳細(xì)搞懂他的實(shí)現(xiàn)方式和原理。在看的過(guò)程中你肯定可以學(xué)到很多有價(jià)值的東西。
我個(gè)人的經(jīng)驗(yàn)是:看的最多的是DZ的代碼,其它項(xiàng)目也很多,但比較全面的還是dz的代碼。個(gè)人認(rèn)為看代碼還是比較速成的一種方式,因?yàn)閯e人的走過(guò)的路你就不需要再走了,站在巨人的肩膀上總是可以走的更快更遠(yuǎn)。
關(guān)于多寫(xiě)其實(shí)上面也提到了,學(xué)習(xí)后的東西應(yīng)該要馬上實(shí)踐,并盡快在合適的時(shí)候應(yīng)用到自己的工作中,這樣才能收獲的更多更快。另一方面是自己嘗試著去寫(xiě)一些小項(xiàng)目,只有去做一完整性的項(xiàng)目才是最有價(jià)值的實(shí)踐,但在做這些實(shí)踐中我認(rèn)為應(yīng)該嚴(yán)格的要求自己,既然是為了學(xué)習(xí),就不是應(yīng)該敷衍了事,盡可能把所有細(xì)節(jié)都處理的***。
還有就是時(shí)間一定要要求自己,不能拖,一方面是要給自己壓力,二是如果時(shí)間拖的太久思路和激情沒(méi)法持續(xù)的話,那你的計(jì)劃很可能最終會(huì)失敗并不了了之。
開(kāi)篇我提到很多初學(xué)者都說(shuō)入門(mén)之后不知道該如何提高,我都告訴他們要多寫(xiě),為什么會(huì)無(wú)法提高,我認(rèn)為是沒(méi)有目標(biāo),只要你給自己定一個(gè)目標(biāo),然后去實(shí)現(xiàn),完成后其實(shí)也達(dá)到自己提高的目的了。
例如你去寫(xiě)一個(gè)簡(jiǎn)單的博客程序,在實(shí)現(xiàn)的過(guò)程中會(huì)遇到很多問(wèn)題,再逐一去解決,這樣你就有了學(xué)習(xí)的方向了,解決問(wèn)題就是積累經(jīng)驗(yàn)和學(xué)習(xí)的過(guò)程??偟膩?lái)說(shuō)要給自己設(shè)置一個(gè)需要完成的目標(biāo),這個(gè)目標(biāo)是什么有什么內(nèi)容,什么時(shí)候完成都很清楚。
其實(shí)說(shuō)到這里就可以回答上面該如何去掌握那么多的函數(shù)呢,當(dāng)你看過(guò)和寫(xiě)過(guò)很多代碼后你會(huì)發(fā)現(xiàn)你所掌握的函數(shù)和方法已經(jīng)很多了,這就是在實(shí)踐的過(guò)程中無(wú)形產(chǎn)生的結(jié)果。所以什么語(yǔ)法之類(lèi)的基礎(chǔ)的東西是不需要去死亡硬背的,在運(yùn)用的時(shí)候自然就可以對(duì)它駕輕就熟。
***我認(rèn)為做技術(shù)的交流很重要,因?yàn)樽黾夹g(shù)是個(gè)永無(wú)止境的學(xué)習(xí)過(guò)程,而交流是一種更有效的學(xué)習(xí)方式。因?yàn)槊總€(gè)人的知識(shí)系統(tǒng)都是不同的,每個(gè)人掌握的東西不同,思維方式各異。
所以交流就是一個(gè)互相學(xué)習(xí)和促進(jìn)的過(guò)程,當(dāng)你把自己的想法與別人交流你就會(huì)收獲更多新的想法。交流是一咱倍速增長(zhǎng)的過(guò)程,前一段我寫(xiě)了一篇《當(dāng)你開(kāi)啟一扇門(mén)的時(shí)候,很多扇門(mén)將為你開(kāi)啟》給我們的團(tuán)隊(duì)就是想表達(dá)這個(gè)想法。
交流有很多的,有線上的有線下的,大家都有上論壇的習(xí)慣,這是一種交流方式,但我認(rèn)為線下交流更有效,語(yǔ)言的交流比文字的交流方式更直接和全面。因?yàn)槲沂荘EA福州的常委之一,很多線下活動(dòng)是由我組織的,從參加人數(shù)來(lái)看并不是很理想,所以我認(rèn)為做技術(shù)的應(yīng)該更開(kāi)放一些,多參加類(lèi)似PEA的這種交流。
交流一定要是開(kāi)放的,所以在交流中應(yīng)該是一種包容的心態(tài)去面對(duì)。也就是說(shuō)我們是持有自己想法的時(shí)候也應(yīng)該耐心傾聽(tīng)他人的意見(jiàn),不能認(rèn)死理。只有站在客觀的角度去看問(wèn)題才能把問(wèn)題看的更透徹,只有不抵觸才能讓自己學(xué)到更多的東西。
在我們的技術(shù)團(tuán)隊(duì)中有定期的技術(shù)分享會(huì),目的就是為了建立交流的平臺(tái),讓大家都嘗試表達(dá)自己的意見(jiàn),鍛煉自己的能力,并可以和更多的人去交流。
***總結(jié)一下,多看,吸收別人的經(jīng)驗(yàn)轉(zhuǎn)化為自己所用,多寫(xiě),全面性的鍛煉自己的能力,多交流,利用眾人的智慧。三多更多的就是去做。
【編輯推薦】