挨踢部落故事匯(23):一路前行,興趣所至
原創(chuàng)【51CTO.com原創(chuàng)稿件】with_prototype主要從事Java開(kāi)發(fā)、曾做過(guò)配置管理、系統(tǒng)運(yùn)維、框架研發(fā)組件,現(xiàn)在就職于一家保險(xiǎn)經(jīng)紀(jì)公司的架構(gòu)組,擔(dān)任架構(gòu)組工程師。閑暇之余,喜歡看技術(shù)書(shū)籍,偶爾聽(tīng)聽(tīng)音樂(lè),騎騎車,跑跑步,跟朋友玩玩游戲。
with_prototype·Java開(kāi)發(fā)
興趣入行賺了***桶金
with_prototype和很多人一樣,不是計(jì)算機(jī)專業(yè)出身,出于興趣走進(jìn)了IT行業(yè)。追溯到十年前,那時(shí)候他上大二,偶然的機(jī)會(huì)他在校園報(bào)刊亭中看見(jiàn)一本月刊雜志“黑客x檔案”,他一時(shí)間癡迷于雜志中介紹的各種系統(tǒng)漏洞、安全工具、網(wǎng)站提權(quán)的知識(shí)。于是他買了***臺(tái)筆記本,開(kāi)始實(shí)踐各種黑客工具。就此與計(jì)算機(jī)結(jié)緣了。
興趣會(huì)使人自發(fā)地解決問(wèn)題。初為小白,新機(jī)器很快受病毒困擾,with_prototype無(wú)奈去中關(guān)村請(qǐng)人重裝系統(tǒng),順帶買殺毒軟件。了解到Ghost這一利器,他變身成裝機(jī)人員。宿舍中,一天三遍刷系統(tǒng),做鏡像,拿同學(xué)機(jī)器做恢復(fù)實(shí)驗(yàn)。同宿舍的同學(xué)會(huì)說(shuō)他瘋了,簡(jiǎn)直就是褒獎(jiǎng)(呵呵)。
就在這學(xué)期有C++課程,他看到學(xué)院機(jī)房里一水兒的IBM工作站,于是找到機(jī)房主任,坦白的說(shuō)自己喜歡黑客技術(shù),申請(qǐng)當(dāng)機(jī)房網(wǎng)管。機(jī)緣巧合,遇到一個(gè)病毒分析高手,小一年的學(xué)弟,一同管理機(jī)房。就這樣,with_prototype在機(jī)房實(shí)踐了3年,討論過(guò)如何鑒別病毒,參與過(guò)機(jī)房布線,做過(guò)講師助手,開(kāi)發(fā)過(guò)PHP程序,那是他對(duì)程序還不感冒,但程序員的種子已經(jīng)種下。機(jī)房的生活有時(shí)候很累,一天都不出屋,遇到機(jī)房重做系統(tǒng),要到凌晨才能完成,但with_prototype覺(jué)得很有意思。一年下來(lái)他也掙了500塊錢,雖然不多,但對(duì)于當(dāng)時(shí)的他來(lái)說(shuō)特別興奮,這筆錢后來(lái)全拿去買技術(shù)方面的書(shū)了。
畢業(yè)季現(xiàn)學(xué)現(xiàn)賣,培訓(xùn)Java,轉(zhuǎn)型程序員
轉(zhuǎn)眼到了畢業(yè)季,那段時(shí)間with_prototype很郁悶,學(xué)數(shù)學(xué)專業(yè),但專業(yè)受限,路子窄,他又不喜歡。他曾面試過(guò)一些硬件公司,最終因?qū)I(yè)不對(duì)口沒(méi)去成。也參加過(guò)軟件公司的校招筆試,寫程序拼不過(guò)軟件學(xué)院的同學(xué),一時(shí)間不知所措。
身為一個(gè)程序開(kāi)發(fā)的菜鳥(niǎo),with_prototype無(wú)法解釋市面上各種軟件的實(shí)現(xiàn)原理,但他認(rèn)定軟件技術(shù)和黑客技術(shù)同屬信息技術(shù)的不同分支,相比安全領(lǐng)域寂寞乏味,程序開(kāi)發(fā)無(wú)所不能。因此他毅然決然選擇Java培訓(xùn),轉(zhuǎn)型程序員。
那個(gè)年頭培訓(xùn)機(jī)構(gòu)還不多,沒(méi)有在線培訓(xùn)課程,他選擇了達(dá)內(nèi)。抱著學(xué)精的態(tài)度,每天朝九晚九,幾個(gè)月后就出道了,找了份金融行業(yè)的軟件外包工作。
說(shuō)道如何快速入門Java,with_prototype覺(jué)得主要有兩方面:
1、 理解Java核心體系。Java的體系對(duì)于初學(xué)者過(guò)于龐大,通過(guò)培訓(xùn)串講知識(shí)點(diǎn),清晰學(xué)習(xí)思路,了解編程的套路;
2、 理解編程思想。
舉個(gè)例子:
with_prototype剛剛學(xué)會(huì)向上轉(zhuǎn)型時(shí),就是搞不明白為什么要使用內(nèi)部類。當(dāng)時(shí)這個(gè)階段,花了不少時(shí)間,因?yàn)檎Z(yǔ)法上都能看懂,但就是不明白含義。其實(shí)內(nèi)部類就是為了完善Java多繼承體系而存在的。通常結(jié)合代理、接口、內(nèi)部類的多態(tài)機(jī)制,實(shí)現(xiàn)上層對(duì)象對(duì)實(shí)現(xiàn)細(xì)節(jié)的忽略,達(dá)到面向?qū)ο缶幊痰哪繕?biāo)。
最快入門Java的方法應(yīng)該是,自學(xué)Java的語(yǔ)法基礎(chǔ),拿上《Java核心技術(shù)》,找個(gè)內(nèi)行人劃重點(diǎn)、串流程,通過(guò)Java核心技術(shù)學(xué)習(xí)面向?qū)ο笏枷耄鄬懚嗖槎嗌暇W(wǎng)看資料。隨后學(xué)Java-web,一定要自己做一個(gè)項(xiàng)目,把問(wèn)題都解決了就通了。
在入門Web程序開(kāi)發(fā)后,他的程序員生活開(kāi)始了。
工作中堅(jiān)持學(xué)習(xí),興趣使人成長(zhǎng)
現(xiàn)今SOA大行其道,而在with_prototype剛起步的時(shí)代,Java提倡的是一種面向配置、面向接口編程。典型的技術(shù)框架就是Spring和IBatis。他剛接觸配置開(kāi)發(fā)不久,公司大項(xiàng)目就提上了日程。他越想快速搞清楚如何實(shí)現(xiàn)配置,并同時(shí)完成開(kāi)發(fā)任務(wù),工作的壓力就越大。由于對(duì)新知識(shí)掌握不夠牢,他時(shí)常感到恐懼。有時(shí)候數(shù)據(jù)庫(kù)設(shè)計(jì)不合理,導(dǎo)致工作重復(fù)做,也很受挫。
正是在這種情況下,為了緩解壓力,with_prototype養(yǎng)成了一些學(xué)習(xí)習(xí)慣。完成日常工作之后,額外花一些時(shí)間學(xué)習(xí),學(xué)習(xí)一些與工作無(wú)關(guān)的開(kāi)發(fā)。多一份了解,就多一份自信。
他做了很多小程序,比如:
1. 用JavaScript操作dom,結(jié)合HTML表格,那時(shí)候with_prototype不懂樣式,他就用table、button標(biāo)簽,實(shí)現(xiàn)動(dòng)態(tài)表格,提交修改到數(shù)據(jù)庫(kù);
2. 實(shí)現(xiàn)交易撮合算法,模擬股票買賣交易,用Java實(shí)現(xiàn);
3. 用commons-compress寫一個(gè)文件壓縮器,自動(dòng)備份每月的工作資料、學(xué)習(xí)設(shè)計(jì)模式等等;
系統(tǒng)發(fā)布那天,他準(zhǔn)備好數(shù)據(jù)庫(kù)腳本,提交了程序,保障系統(tǒng)順利上線了。總之,學(xué)的多,心不虛。會(huì)的多,膽就大。
興趣導(dǎo)向,在堅(jiān)守中求變
后來(lái)with_prototype換了工作,在保險(xiǎn)行業(yè)的做運(yùn)維開(kāi)發(fā),既兼顧配置管理,又帶實(shí)習(xí)生,在這兒度過(guò)這幾年,他覺(jué)得最寶貴的經(jīng)歷,就是跳出Java日常開(kāi)發(fā)的圈子,掌握了一部分解決問(wèn)題的能力。運(yùn)維工作特別鍛煉人的思維,分析問(wèn)題的過(guò)程,都是對(duì)邏輯思維的鍛煉。修改程序邏輯只是一方面,對(duì)問(wèn)題數(shù)據(jù)的維護(hù),要經(jīng)過(guò)仔細(xì)的思考推斷,還要能夠從多個(gè)角度看待問(wèn)題。
1、學(xué)會(huì)多角度思考問(wèn)題
有一次with_prototype拿到一個(gè)性能問(wèn)題,一段程序使用嵌套遞歸的方式,計(jì)算一組繼承類的樹(shù)形結(jié)構(gòu)上各個(gè)節(jié)點(diǎn)的屬性值,從根節(jié)點(diǎn)開(kāi)始,通過(guò)配置控制節(jié)點(diǎn)計(jì)算順序,先計(jì)算根節(jié)點(diǎn),完成一層繼承結(jié)構(gòu)的對(duì)象計(jì)算后,再進(jìn)行下一層計(jì)算,耗時(shí)很久。分析程序邏輯是正確的,而問(wèn)題***的解決,是推測(cè)獲取數(shù)據(jù)庫(kù)鏈接過(guò)于頻繁,加之?dāng)?shù)據(jù)量大,導(dǎo)致數(shù)據(jù)庫(kù)連接頻繁創(chuàng)建,造成性能問(wèn)題。他考慮到只是個(gè)小模塊,采用創(chuàng)建集合緩存數(shù)據(jù)庫(kù)連接的方式,解決了計(jì)算過(guò)慢的問(wèn)題。后來(lái)系統(tǒng)改進(jìn),重寫了流程控制部分,并且使用了連接池。可見(jiàn),過(guò)度設(shè)計(jì)有時(shí)候會(huì)適得其反。
2、自學(xué)工具解決自動(dòng)化問(wèn)題
在公司W(wǎng)indows服務(wù)器上,有很多備份工作需要手工完成。當(dāng)時(shí)的方案是用cmd腳本完成自動(dòng)化。
學(xué)習(xí)cmd,是個(gè)體力活。這方面相關(guān)資料少,除了命令說(shuō)明,就只能從網(wǎng)上東拼西湊一些資料,自己摸索。但學(xué)習(xí)的過(guò)程是很有成就感的。
with_prototype實(shí)現(xiàn)了系統(tǒng)目錄的增量備份,結(jié)合WinRAR實(shí)現(xiàn)自動(dòng)歸檔,清理歷史包。后來(lái)用的熟練了,有很多圖形界面工具的命令操作行業(yè)可以加入進(jìn)來(lái)。比如VSS管理(定期分析重建索引)、SVN增量備份(每次需要記錄上次備份的版本號(hào),就寫在一個(gè)空文件里,下次繼續(xù)更新,直接讀取文件獲取版本號(hào))。
with_prototype這份工作堅(jiān)持了5年多,周圍的伙伴換了一茬又一茬,后來(lái)還做了核心系統(tǒng)遷移,通信平臺(tái)的設(shè)計(jì)開(kāi)發(fā)。不過(guò), 一旦工作變得機(jī)械化,樂(lè)趣就少了,做來(lái)做去,還是跳不出公司部門規(guī)劃這個(gè)圈子。
走進(jìn)互聯(lián)網(wǎng),用開(kāi)放的技術(shù)方式,解決新問(wèn)題
再后來(lái),with_prototype來(lái)到一家互聯(lián)網(wǎng)公司做研發(fā)。在開(kāi)放自由的環(huán)境中,開(kāi)發(fā)人員最快樂(lè)的,莫過(guò)用更多的方法,解決遇到的問(wèn)題。可以根據(jù)需要,更多的去用開(kāi)源技術(shù),自己去封裝工具。with_prototype前段時(shí)間做過(guò)一個(gè)社交平臺(tái),他考慮檢索的內(nèi)容頻度、數(shù)量大,結(jié)構(gòu)相近,在設(shè)計(jì)之初,就考慮將搜索引擎與數(shù)據(jù)庫(kù)分離存儲(chǔ)業(yè)務(wù)數(shù)據(jù)。最終,在lucene上,封裝常規(guī)索引操作的API,能夠更方便的添加索引,查詢、按權(quán)重排序。完成了主要部分開(kāi)發(fā)。與此同時(shí),他頭一次接觸到微信、支付寶、其他第三方支付平臺(tái),通過(guò)抽象不同接口,添加獨(dú)立配置的方式,實(shí)現(xiàn)了支付的核心。之后使用模板引擎,完成了通信內(nèi)容的轉(zhuǎn)換,一個(gè)簡(jiǎn)單的支付平臺(tái)也成型了。
健康觀念的改變
“臉皮厚,身體好”是with_prototype以前一個(gè)部門經(jīng)理說(shuō)的,現(xiàn)在他也做到了。工作之余,with_prototype也注重加強(qiáng)鍛煉身體。最有效的鍛煉,還是跑步,從一開(kāi)始跑不動(dòng),到能慢跑一小時(shí),堅(jiān)持下來(lái)就好了。他偶爾也學(xué)學(xué)烹飪、烘焙。想減肥,就得少吃油。總有人調(diào)侃他為什么不著急找女朋友,其實(shí),黑程序員的人太多了。如果看到喜歡的女孩,多了解,有意識(shí)的讓自己變得更好,多用心傳達(dá)……水到渠成是早晚的事兒。
【寫在***】
生活還得繼續(xù)、工作也不能停,接觸更多新事物。現(xiàn)在很難說(shuō)一個(gè)IT人員,能夠從業(yè)多少年,因人而異,興趣使然。用心堅(jiān)守,總會(huì)發(fā)現(xiàn)新鮮事物,這是一個(gè)發(fā)展的行業(yè),讓每一天都過(guò)得有意義,只要興趣濃厚,即使悲傷、難過(guò),也都是暫時(shí)的。希望自己的認(rèn)識(shí)能夠?qū)筝呌兴鶐椭偨Y(jié)以下三點(diǎn):
首先,要相信自己的選擇:從開(kāi)發(fā)到運(yùn)維,從產(chǎn)品到測(cè)試,從安全到大數(shù)據(jù),從金融到互聯(lián)網(wǎng),從醫(yī)療到電商。各行各業(yè),各類技術(shù),心有多大,世界就有多大。
其次,跟上時(shí)代的腳步,不斷學(xué)習(xí),積累沉淀:沒(méi)有IT基因,沒(méi)關(guān)系,因?yàn)樵倌贻p的專家也需要經(jīng)驗(yàn)的積累,而40歲同樣可以學(xué)習(xí)編程。
最重要的一點(diǎn),工作再苦再累,都要熱愛(ài)生活:因?yàn)橛幸环N溫暖,叫關(guān)懷;有一種勇氣,叫責(zé)任,有一種純粹,叫愛(ài)。
如果你也愿意分享你的故事,請(qǐng)加51CTO開(kāi)發(fā)者QQ交流群 312724475聯(lián)系群主小官,期待你精彩的故事!
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】




















