挨踢部落故事匯(3):入行IT自學(xué)成才
原創(chuàng)【51CTO.com原創(chuàng)稿件】研究生期間參與的企業(yè)項(xiàng)目堅(jiān)定了益達(dá)進(jìn)入IT行業(yè)的決心。那份執(zhí)著與看待問(wèn)題的思維,使他在開發(fā)路上愈戰(zhàn)愈勇。在益達(dá)看來(lái),處理問(wèn)題的思維就相當(dāng)于一個(gè)軟技能,是學(xué)會(huì)了就不會(huì)跑掉的東西。問(wèn)題的本質(zhì)、觸類旁通、借鑒思想,嚴(yán)謹(jǐn)性這些都是他的思維要素。遇到問(wèn)題多思考,多問(wèn)what,why,有耐心,不急躁,多溝通,層層排查最終找解決辦法。
益達(dá)·大數(shù)據(jù)開發(fā)
學(xué)生時(shí)代脫穎而出
益達(dá)高考選擇的是電子信息科學(xué)與技術(shù)專業(yè),計(jì)算機(jī)學(xué)習(xí)占比居多。他從幾乎沒(méi)接觸過(guò)電腦的完全小白正式走進(jìn)了0和1的世界,慢慢學(xué)習(xí)了C,JAVA,HTML,Android等計(jì)算機(jī)開發(fā)語(yǔ)言。益達(dá)本科畢業(yè)后又通過(guò)保研進(jìn)入研究生進(jìn)修階段,研究無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)聚類算法,SVM算法,神經(jīng)網(wǎng)絡(luò)等,通過(guò)MATLAB去實(shí)現(xiàn),比較優(yōu)劣進(jìn)行改進(jìn)。研究生期間益達(dá)參與了部分企業(yè)項(xiàng)目,根據(jù)項(xiàng)目需求自學(xué)了Delphi和MFC相關(guān)知識(shí),項(xiàng)目實(shí)戰(zhàn)過(guò)程使他獲益匪淺。2015年6月益達(dá)研究生畢業(yè),以Android開發(fā)攻城獅的角色進(jìn)入到工作崗位,從此他離開校園,變身成一個(gè)職場(chǎng)菜鳥,開啟另一種人生狀態(tài)。
既然要做一件事,就盡自己更大的努力做好
初入崗位,自然是適應(yīng)與學(xué)習(xí),而這些主要是通過(guò)溝通和自學(xué)成長(zhǎng)的??蠢铣绦蛟硨懙臉I(yè)務(wù)代碼,成了益達(dá)第一步要跨過(guò)去的門檻,由于業(yè)務(wù)較大,代碼量不小,需要花很多時(shí)間去學(xué)習(xí)。那個(gè)時(shí)候他接手的第一個(gè)任務(wù)是開發(fā)支付SDK,完全是益達(dá)獨(dú)自一人完成的,當(dāng)時(shí)他與其他程序猿各種溝通協(xié)作,詢問(wèn)查資料。Git、51CTO、掘金、StackOverflow還有各種技術(shù)相關(guān)的論壇網(wǎng)站都少不了他拜訪的身影。談及到這個(gè)SDK任務(wù),他印象最深的是微信支付問(wèn)題,其他銀聯(lián)和支付寶的接口都比較好接入,容易測(cè)試聯(lián)調(diào),但微信支付接入就比較有坑了,不過(guò)在他查閱資料調(diào)整測(cè)試的不斷努力下終于實(shí)現(xiàn)了。完成之后他并沒(méi)有繼續(xù)做SDK開發(fā),而是應(yīng)部門需要被轉(zhuǎn)到JAVA服務(wù)器去做實(shí)時(shí)數(shù)據(jù)計(jì)算開發(fā)。
后臺(tái)開發(fā)需要做數(shù)據(jù)統(tǒng)計(jì)相關(guān)工作,益達(dá)從接觸Kafka、Storm等開源工具做起,更多的接觸了Linux系統(tǒng),在實(shí)踐中不斷學(xué)習(xí)到常用的各種命令,實(shí)現(xiàn)shell腳本的編寫。服務(wù)器管理中使用nginx、haproxy等代理工具,自學(xué)netty與jetty的開發(fā)流程。由于唯一一位老司機(jī)離職了,導(dǎo)致storm集群、mongo集群、elasticsearch集群、Docker集群等維護(hù)工作也是益達(dá)一人接管。開發(fā)中益達(dá)覺得遺留下的elasticsearch統(tǒng)計(jì)對(duì)他們業(yè)務(wù)的針對(duì)性不強(qiáng),所以他又在探索學(xué)習(xí)Apache Kylin和druid工具,不斷提升IT技能來(lái)適配當(dāng)前業(yè)務(wù)需求。
益達(dá)在如此強(qiáng)壓環(huán)境下,并沒(méi)有抱怨,在他看來(lái),盡自己最大的努力做好一件事是對(duì)他個(gè)人價(jià)值的體現(xiàn)。
自學(xué)與反思,是開發(fā)的必備要素
益達(dá)在開發(fā)中碰到的問(wèn)題不計(jì)其數(shù),身經(jīng)百戰(zhàn)的他回顧走過(guò)的路,填過(guò)的坑,整理了以下6個(gè)方面,希望能幫助初入職場(chǎng)的程序猿們少走彎路。
1.代碼方面,結(jié)構(gòu)清晰,邏輯嚴(yán)謹(jǐn),注釋得當(dāng),方便自己理解以及測(cè)試定位問(wèn)題,同時(shí)也方便別人理解看懂代碼。
2.業(yè)務(wù)方面,一定要協(xié)調(diào)溝通并且理解到位,否則很容易和需求方產(chǎn)生各種問(wèn)題,進(jìn)而可能會(huì)有各種扯皮和更改。比如后臺(tái)服務(wù)接口開發(fā)中,業(yè)務(wù)代碼遇到問(wèn)題也要及時(shí)和接口調(diào)用方進(jìn)行確認(rèn),及時(shí)做調(diào)整。
3.基礎(chǔ)能力方面,自學(xué)技能是一個(gè)很好的技能。如果對(duì)設(shè)計(jì)模式、數(shù)據(jù)結(jié)構(gòu)等基礎(chǔ)還不是特別明白,一定要去理解學(xué)習(xí)??梢越Y(jié)合開源框架學(xué)習(xí),開源框架中一般都會(huì)包含多種設(shè)計(jì)模式和常用的數(shù)據(jù)結(jié)構(gòu),比如Android中的RxJAVA響應(yīng)式編程,學(xué)習(xí)其中的思想。
4.資源方面,開發(fā)中要養(yǎng)成資源及時(shí)釋放的習(xí)慣,尤其是JAVA開發(fā),畢竟“Stop The World”并不是什么好事情。不用的對(duì)象等要及時(shí)清理掉。CPU、內(nèi)存、負(fù)載等硬件資源也要做好監(jiān)控工作。
5.性能方面,其實(shí)在寫代碼的時(shí)候就要有這方面的意識(shí)了,如提到的資源釋放問(wèn)題。同時(shí)在開發(fā)中要注意一些細(xì)節(jié),例如:在處理數(shù)據(jù)的過(guò)程中采用List數(shù)據(jù)結(jié)構(gòu),一般采用ArrayList比較多,但如果你的數(shù)據(jù)添加、順序訪問(wèn)、刪除比較頻繁,那它就不合適了,相比下鏈表結(jié)構(gòu)的LinkedList就會(huì)好很多。還有就是學(xué)會(huì)性能調(diào)優(yōu),在JAVA中就需要理解JVM,學(xué)會(huì)調(diào)優(yōu)工具的使用,然后定位問(wèn)題,做出相應(yīng)的優(yōu)化。
6.分布式服務(wù)器開發(fā)管理方面,主要是各類框架集群的搭建、服務(wù)代理的使用(外網(wǎng)代理轉(zhuǎn)發(fā)到內(nèi)網(wǎng)等,負(fù)載均衡處理)。如果集群搭建有問(wèn)題,會(huì)影響很大,比如老司機(jī)留下來(lái)的ES集群,在集群節(jié)點(diǎn)內(nèi)存分配、節(jié)點(diǎn)角色分配上都不合理,導(dǎo)致集群性能不穩(wěn)定,所以又重新做參數(shù)調(diào)整和部署,數(shù)據(jù)索引方面比如index的mapping設(shè)置,routing設(shè)置以及冷熱數(shù)據(jù)分離,數(shù)據(jù)壓縮等處理??傊_發(fā)過(guò)程中遇到的坑還是很多的,不論是業(yè)務(wù)層面還是非業(yè)務(wù)層面,都要開發(fā)者們有耐心去解決。
一入行業(yè)深似海,想要如魚得水,就得學(xué)會(huì)掌握更多技能,不斷豐富自身,廣度深度都進(jìn)行探索,也許有些東西開發(fā)中不一定用得到,但是學(xué)會(huì)了,總不會(huì)錯(cuò)。無(wú)論是各類開源框架、還是開發(fā)語(yǔ)言,其實(shí)都只是使用工具,畢竟框架總是層出不窮的,掌握核心思想就能更好的遨游各處。
如果你也愿意分享你的故事,請(qǐng)加51CTO開發(fā)者QQ交流群 370892523聯(lián)系群主小官,期待你的精彩故事!
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】