發(fa)布時間:2018-08-03 10:43??發(fa)布人:南(nan)(nan)京北大(da)(da)青鳥(niao)??發(fa)布來源:南(nan)(nan)京北大(da)(da)青鳥(niao)??瀏覽人數:115
在程序員群(qun)體(ti)的(de)“鄙視鏈”中,非科(ke)班出身(shen)的(de)半(ban)路轉行者往(wang)往(wang)成(cheng)為其中比較敏感的(de)一部分(fen)。
伴隨著互聯網行業的(de)發展(zhan),市場對(dui)Java工(gong)程(cheng)師的(de)需求一直居(ju)高不(bu)下(xia),程(cheng)序員(yuan)也不(bu)再囿于計算機科學或軟件工(gong)程(cheng)等個別專業的(de)畢業生(sheng)。「非科班」程(cheng)序員(yuan)的(de)背景五(wu)花(hua)八門,近一些的(de)是通信、物理、數學、自動化等理工(gong)科,遠一些的(de)則有設計、英語、藝術(shu)甚至歷史。
客觀上來說,在(zai)編程(cheng)(cheng)領域(yu)里(li)的(de)確存在(zai)「童子功」的(de)說法,接觸編程(cheng)(cheng)時間過晚,不僅技術上處于劣勢,在(zai)思(si)維方(fang)式、解(jie)題經驗方(fang)面也(ye)很可能落后。這也(ye)是為何科班出身(shen)的(de)程(cheng)(cheng)序員往往具備壓(ya)倒性優勢。
不(bu)(bu)過,英(ying)雄(xiong)不(bu)(bu)問出(chu)處,非科班出(chu)身的(de)(de)(de)Java程序員(yuan),也千(qian)萬不(bu)(bu)要先入為主(zhu)地(di)陷入「技不(bu)(bu)如(ru)人」的(de)(de)(de)自我認知里。你學(xue)習技術是(shi)為了找到(dao)一(yi)份(fen)滿(man)意的(de)(de)(de)工作(zuo),實現個人價值(zhi),而互聯網公司更關注的(de)(de)(de)是(shi)你的(de)(de)(de)理論知識(shi)到(dao)底有多(duo)少能落到(dao)實際商(shang)業應(ying)用中。
大學(xue)基礎教(jiao)育可以讓(rang)科班(ban)出身(shen)的人有更廣(guang)博、健(jian)碩的知識體系(xi)和計算機領域的學(xue)習(xi)能力(li),但對非(fei)科班(ban)出身(shen)的童鞋而(er)言,用業余時間(jian)補好大學(xue)4年的差(cha)距其(qi)實非(fei)常難,也(ye)并非(fei)完全必要,因為大學(xue)教(jiao)育和產業應用之間(jian)也(ye)存在明顯的脫節。
歸(gui)根結底,非科班的Java程序(xu)員們在(zai)開始自(zi)學計劃前,要先(xian)理解當下(xia)的產業界(jie)通(tong)常對(dui)Java開發人才到底有(you)怎樣(yang)的要求,以終為(wei)始,有(you)針對(dui)性地彌補差距(ju)。
互聯網公司需要怎樣的Java工程師?
程序員(yuan)招(zhao)聘(pin)網站100 Offer從(cong)近千(qian)份 Java 招(zhao)聘(pin) JD中梳(shu)理出相關(guan)信(xin)息,并整理出近半年來,企業對 Java 工程師(shi)的主(zhu)要(yao)(yao)要(yao)(yao)求,供參(can)考。
有 3-5 年經驗的 Java 工程師(shi),要(yao)求算法(fa)基(ji)礎和編(bian)程能(neng)力扎實,有分布式、高并(bing)發(fa)經驗優先,可(ke)獨立負責一(yi)個(ge)模塊的開(kai)發(fa)。在技(ji)術上一(yi)專多能(neng),不(bu)僅限(xian)于寫(xie)好 Java,還要(yao)觸類旁通,對公司業(ye)務所需(xu)的新(xin)技(ji)術能(neng)快速(su)學習運用(yong)。
在技(ji)術專(zhuan)家階段,擁有成熟大廠的高(gao)并發(fa)、分布式經驗很重要。各個(ge)公司(si)對架構和專(zhuan)家型人才(cai)的要求與業務(wu)(wu)需求結合(he)得更緊密,因此,除了吃透技(ji)術深度、高(gao)效解決技(ji)術團隊(dui)的技(ji)術難題、做好團隊(dui)分工之外,候選人以往的業務(wu)(wu)場景也要和公司(si)相契(qi)合(he)。
除了以(yi)上常規要求之外(wai),如今進入下半(ban)場的(de)互(hu)聯網行業對 Java 程(cheng)序(xu)員的(de)招聘門檻的(de)確比以(yi)往更高(gao)。
首先是對學歷(li)等硬性背(bei)景(jing)要(yao)求更嚴。有些一(yi)線知名企(qi)業(ye)甚至要(yao)求一(yi)本、重點院校 CS 相關專(zhuan)業(ye)的(de)簡歷(li)優先。對非科(ke)班(ban)的(de)同(tong)學而(er)言,這也很無奈。
其(qi)次,更注重(zhong)對算法(fa)基礎和核(he)心開(kai)發(fa)(fa)經驗(yan)(yan)的考(kao)察(cha)。國內的一線大廠(chang)近年逐步向國外互聯網(wang)公(gong)司看齊,開(kai)始(shi)重(zhong)視對Java 程序員(yuan)的算法(fa)和計算機原(yuan)理(li)的考(kao)察(cha)。此外是考(kao)核(he)過往(wang)的核(he)心開(kai)發(fa)(fa)經驗(yan)(yan)。
后,有(you)轉(zhuan)型能力和意(yi)愿的 Java 人,機會更(geng)多。互聯網公司在拓(tuo)展(zhan)新業務時,也需(xu)要轉(zhuan)型 Golang、Python 等更(geng)新更(geng)輕巧的技術棧,擁(yong)有(you) Java 和后端基礎的程序(xu)員轉(zhuan)型起來更(geng)有(you)優(you)勢(shi)。
比如,騰訊的(de)(de)主(zhu)流后端(duan)語言(yan)是 C++,阿里、TMD 是 Java,百度則是 C++、Java 和(he) PHP;但幾家新興獨(du)角獸(英語流利(li)說、嗶(bi)哩嗶(bi)哩、今(jin)日頭條(tiao)和(he)趣(qu)頭條(tiao)等公(gong)司)對(dui) Go 和(he) Python 的(de)(de)應用(yong)更(geng)(geng)普遍(bian),尤其(qi)是今(jin)年(nian) Go 的(de)(de)勁(jing)頭很猛。因此,基礎(chu)扎實、學習能(neng)力強的(de)(de) Java 工程師,可適用(yong)更(geng)(geng)多業務場景和(he)開發需(xu)求,在市場上(shang)更(geng)(geng)吃香。
非科班出身該如何彌補技(ji)術差(cha)距?
100 offer還采訪了一些非科(ke)班出身的(de) Java 候(hou)選人(ren),他們(men)如今都(dou)成為了各自企業的(de)技術骨(gu)干。這些「半路出家」的(de)經歷或許(xu)也(ye)能給你(ni)一些啟(qi)發。
剛(gang)畢業于(yu)中國(guo)好的(de)大學數學系的(de)那一(yi)(yi)年,小羽還(huan)壓根沒(mei)想過(guo)自己(ji)未來(lai)會和代碼發(fa)生化(hua)學反(fan)應。她一(yi)(yi)心還(huan)想著(zhu)未來(lai)出國(guo)深(shen)造,進入了一(yi)(yi)家(jia)互聯網金融公司(si),職位是產品經理。
“當時也不知道自己(ji)適合做什么,想著這份工(gong)作經歷就(jiu)算 Gap Year 吧,就(jiu)被派去負責(ze)產品了。”小羽此前并未接觸過任(ren)何產品相關的知識,一切都只能(neng)靠(kao)現學。
九個月后,一(yi)個機會降臨到小(xiao)羽面前,某(mou)金(jin)融(rong)類央(yang)企的認證部(bu)門需要一(yi)名產品經理,小(xiao)羽投遞的簡歷被對(dui)方 HR 看中,很順(shun)利(li)便錄用了她(ta)。
在(zai)與(yu)新領(ling)導的溝通(tong)中,對方得知小(xiao)(xiao)羽是數學系畢業的。“要不你來試試寫(xie)代(dai)碼?”面對建議(yi),小(xiao)(xiao)羽稍(shao)一考慮就答(da)應了下來。
早在大學一年級時(shi),小羽就在公共課程上學習(xi)到了關(guan)于 C++ 的(de)基(ji)礎知(zhi)識(shi)。但那時(shi)她對編程還(huan)沒有特別的(de)興(xing)趣,答應轉崗,更多是因為(wei)她覺(jue)得寫(xie)代碼更符(fu)合她理工科的(de)偏好。
“一(yi)開始,人(ren)家是給(gei)我一(yi)個別的(de)項目(mu),讓我照著寫照著抄。”留給(gei)小(xiao)羽(yu)的(de)速(su)成期不(bu)算(suan)太長,而她成長的(de)方式也比較直接粗暴:看(kan)源(yuan)碼(ma)(ma)。不(bu)停(ting)地看(kan),有不(bu)懂(dong)的(de)地方就去搜(sou),去查,一(yi)點(dian)點(dian)拼湊出(chu)來。好在接受過(guo)多(duo)年的(de)數學(xue)訓練,小(xiao)羽(yu)對于(yu)強調邏輯的(de)代(dai)碼(ma)(ma)工作逐(zhu)漸(jian)得心(xin)應(ying)手。一(yi)個月后,小(xiao)羽(yu)上手了 Java。
工作的(de)第二年(nian),小(xiao)羽開(kai)(kai)始(shi)接觸(chu) Python、Pascal 以(yi)及 C++,對于(yu)編程語言和數(shu)據庫(ku)的(de)嘗(chang)試也(ye)越(yue)來越(yue)多。Spring、MySQL、Redis 等框(kuang)架或(huo)數(shu)據庫(ku)逐(zhu)漸(jian)開(kai)(kai)始(shi)被(bei)納入知識體(ti)系,由(you)于(yu)工作內容(rong)涉(she)及前端開(kai)(kai)發,小(xiao)羽又學習了(le) Angular、React 等框(kuang)架。甚至對于(yu)數(shu)據挖掘、svm、神(shen)經網(wang)絡也(ye)有了(le)一(yi)定涉(she)獵(lie)。
回(hui)憶自己從入門(men)到上手的(de)(de)(de)(de)經驗,小(xiao)羽(yu)認(ren)為有(you)意義(yi)的(de)(de)(de)(de)就是閱(yue)讀源碼(ma)。源碼(ma)能夠直觀、系統(tong)地為學習(xi)者(zhe)描繪(hui)這(zhe)門(men)編程語言(yan)是如何工作的(de)(de)(de)(de)。我技術提升快(kuai)的(de)(de)(de)(de)那(nei)段(duan)(duan)時間就在閱(yue)讀大(da)量源碼(ma),包括 JDK 的(de)(de)(de)(de)源碼(ma)。那(nei)個階段(duan)(duan)后就真的(de)(de)(de)(de)邁過了(le)剛入門(men)的(de)(de)(de)(de)狀(zhuang)態了(le)。
如今(jin),小(xiao)羽(yu)在一家(jia)知名(ming)軟件企業擔任(ren)架(jia)構師,盡(jin)管(guan)進入職(zhi)場(chang)僅三年,小(xiao)羽(yu)早已完成了從編程(cheng)新人到(dao)技術骨干的(de)轉型。
曹(cao)巍 2009 年本科(ke)畢業(ye)于材料成型機(ji)控制(zhi)工程專業(ye)。畢業(ye)后他(ta)就來到了北京,被這里的(de)互聯網氣氛所打動。他(ta)感到,用(yong)余(yu)生繼續和數控機(ji)床打交道(dao),太乏味了。
機(ji)緣巧合的是,曹巍大一(yi)的室(shi)(shi)友是一(yi)位迷戀(lian)計算機(ji)文(wen)化(hua)的工科男,在室(shi)(shi)友的帶動下,曹巍也早(zao)早(zao)自學了 Java。
Java 的特色是面向對象,這對不接觸編(bian)程的普通人很(hen)難理解,所(suo)以我花費在思維轉換上的時間(jian)很(hen)多(duo),剛開始花了一個多(duo)星期的時間(jian)才弄明(ming)白(bai)它究竟是怎樣一回事。
2010年1月,曹(cao)巍(wei)進(jin)入一(yi)(yi)家軟件(jian)企業,擔任元數(shu)據產品開(kai)發。從新人開(kai)始(shi),曹(cao)巍(wei)一(yi)(yi)邊工作(zuo)一(yi)(yi)邊積累自己的技(ji)術經驗(yan),3 年后,曹(cao)巍(wei)進(jin)入某數(shu)碼(ma)集團負責技(ji)術架構,從 Java 到 Spring MVC、MyBatis/Hibernate、Dubbo 等(deng)服務(wu)端(duan)框架技(ji)術, 再到 HTML、JSP、Servlet、JavaScript 等(deng)應(ying)用(yong)技(ji)術,他(ta)都逐一(yi)(yi)涉獵。
在(zai)代碼中(zhong)摸(mo)爬滾打 8 年后,曹巍如今在(zai)一(yi)家(jia)互聯網企業擔任技術總(zong)監。回顧自己(ji)從非科班出(chu)身走到(dao)今天,曹巍認為雖然過程有(you)些(xie)艱辛,但好(hao)在(zai)自己(ji)是一(yi)個耐得住寂(ji)寞的人(ren),當技藝打磨到(dao)足(zu)夠優秀時(shi),旁人(ren)的閑(xian)言碎語自然會(hui)終止。
對于從(cong) 0 學習一套編程語(yu)言(yan),他(ta)認為(wei),在(zai)有關編程技術的深(shen)(shen)度(du)和準(zhun)確性(xing)上,書本(ben)很重要。“任(ren)何東西(xi)都是(shi)碎片化的,一個技術點可以發散到其他(ta)碎片點,終就弄明白了整(zheng)個脈(mo)絡。我的學習路(lu)徑是(shi)從(cong)每個技術點開始,摸(mo)清楚技術脈(mo)絡,后需要深(shen)(shen)入了解技術原(yuan)理(li)就去看書。”
從別人(ren)的故(gu)事中,我們提煉(lian)出了以下6條建議,送給非科班的 Java 程序(xu)員們:
1、要有清(qing)晰的自(zi)我(wo)規劃和(he)定位,及時了解 Java 市(shi)場的需求(qiu)變化(hua),做到知己(ji)知彼。
2、尋找合(he)適的途徑實現技術入門,比如報(bao)名參(can)加一個口(kou)碑良好的短(duan)期培訓(xun)課程;
3、大量閱讀源碼(ma);
4、積極發問,關鍵在于(yu)用少的時間獲取多的收益;
5、盡管技術(shu)博客(ke)和社區(qu)論壇上的大神很多,但閱(yue)讀書本仍(reng)是系統習得(de)知識的好(hao)途徑;
6、轉(zhuan)型要趁早,越晚代價越大。
版權聲明:本文半路轉行的Java程序員是如何成為大神的: //qjdyoipt.cn/kczx/168.html 禁止一切方式轉載、抄襲!
相關內容:
更多人關注: