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