如何成為一個(gè)上流的程序員
231 2017-04-19
除去極少數(shù)天賦異稟的神級(jí)程序員,我們大部分人都是凡人。凡人要從一個(gè)小菜鳥(niǎo)成長(zhǎng)為全棧工程師大神,只能從少到多,慢慢積累知識(shí)。這里我推薦采用“先精后廣,一專(zhuān)多長(zhǎng)”的流程來(lái)學(xué)習(xí)。
先精后廣,一轉(zhuǎn)多長(zhǎng)
畢業(yè)生遇到的第一個(gè)問(wèn)題就是如何在一個(gè)城市,甚至是北上廣深這樣的大城市生存下來(lái)。生存下來(lái)需要一個(gè)穩(wěn)定的工作,所以需要投一些簡(jiǎn)歷給大公司或者小公司。
平心而論,程序員在市場(chǎng)上的供求關(guān)系比絕大部分職業(yè)都更有利于求職者,對(duì)優(yōu)秀程序員的需求從來(lái)就沒(méi)有減少過(guò)。優(yōu)秀的程序員總是能找到工作并且工資不低。但是為什么很多畢業(yè)生投出的簡(jiǎn)歷都石沉大海呢?
大部分情況都是由于求職者在所需專(zhuān)業(yè)上的深度不夠。讓我們做一個(gè)情景假設(shè),你看到騰訊有一個(gè)職位空缺:
招聘前端開(kāi)發(fā):
本科以上學(xué)歷;
兩年以下工作經(jīng)驗(yàn);
精通HTML、CSS、JavaScript等前臺(tái)相關(guān)技術(shù),熟悉W3C網(wǎng)頁(yè)標(biāo)準(zhǔn);
熟悉至少一種后臺(tái)語(yǔ)言的開(kāi)發(fā)機(jī)制(如Java,c++等);
有一定架構(gòu)能力和算法能力,有良好編碼規(guī)范;
良好的學(xué)習(xí)能力、溝通能力,追求完美,有工作激情,能在較大強(qiáng)度下工作。
熱愛(ài)互聯(lián)網(wǎng),喜歡研究各項(xiàng)互聯(lián)網(wǎng)者更好。
你想,自己完全滿(mǎn)足要求啊,于是一封簡(jiǎn)歷就投遞到面試官那里了,里面用大段文字表達(dá)自己的激情和興趣,并且表明自己完全符合這個(gè)要求。但是你從面試官的角度來(lái)想想,他收到了多少個(gè)簡(jiǎn)歷呢?可能100個(gè)。他要從100個(gè)符合要求的人中選擇10個(gè)來(lái)面試,你的簡(jiǎn)歷中的哪一點(diǎn)吸引到他了呢?有的競(jìng)爭(zhēng)者有移動(dòng)端的作品、有的競(jìng)爭(zhēng)者提到他很擅長(zhǎng)頁(yè)面性能優(yōu)化、響應(yīng)式、頁(yè)面渲染效率、有的寫(xiě)過(guò)JavaScript框架……而你只是一個(gè)普通的滿(mǎn)足要求的人。你可能會(huì)說(shuō),我愛(ài)好廣泛,我會(huì)一點(diǎn)PHP,做過(guò)wordpress主題,會(huì)一點(diǎn)java,畢業(yè)設(shè)計(jì)做過(guò)一個(gè)小客戶(hù)端應(yīng)用,什么都會(huì)一點(diǎn)……但最終你仍然會(huì)得到一個(gè)“無(wú)亮點(diǎn)”的評(píng)價(jià),被無(wú)情地pass掉。所以,作為一個(gè)求職者,無(wú)論是畢業(yè)生還是社會(huì)招聘,僅僅滿(mǎn)足招聘要求是不夠的??己四隳芰Φ氖菍?zhuān)業(yè)的面試官,面對(duì)他你要有足夠突出的專(zhuān)業(yè)加分項(xiàng)。有了一個(gè)職業(yè)的專(zhuān)長(zhǎng),你就能有自己的陣地,以此為生,然后再之后的時(shí)間逐步學(xué)習(xí)更加廣博的知識(shí)。如果你在一個(gè)中等規(guī)模以上的公司找到了工作,那就會(huì)有一個(gè)專(zhuān)門(mén)的職業(yè)。經(jīng)過(guò)幾年的工作和練習(xí),你會(huì)在專(zhuān)業(yè)知識(shí)上達(dá)到很專(zhuān)業(yè)的程度,日常需求都在你的舒適區(qū),現(xiàn)在你終于能重新提起精神,準(zhǔn)備做一個(gè)全棧工程師了,那么從哪些技術(shù)開(kāi)始入手呢?
關(guān)注商業(yè)目標(biāo)
我的第一條建議是,關(guān)注商業(yè)目標(biāo)。歸根結(jié)底,技術(shù)是服務(wù)于商業(yè)目標(biāo)的。在計(jì)算機(jī)科學(xué)誕生的短短幾十年中,熱門(mén)的技術(shù)和平臺(tái)都一直在發(fā)生巨大的變化。服務(wù)器端的平臺(tái)和語(yǔ)言從C到C++,Java,Python,Node……客戶(hù)端分瀏覽器和原生開(kāi)發(fā)兩個(gè)分支。瀏覽器方面,web標(biāo)準(zhǔn)和不同瀏覽器的比例每隔5年就發(fā)生天翻地覆的變化,原生設(shè)備的市場(chǎng)份額更是風(fēng)起云涌,曾經(jīng)的諾基亞和摩托羅拉被新起之秀收購(gòu),iOS和Android之爭(zhēng)還在繼續(xù)……但是商業(yè)目標(biāo)是相對(duì)穩(wěn)定的。把關(guān)注點(diǎn)放在商業(yè)目標(biāo)而不是技術(shù)上,就能在多個(gè)技術(shù)之間選擇更能完成商業(yè)目標(biāo)的技術(shù),這樣往往能做出更為客觀的決定。更重要的是,在這個(gè)過(guò)程中你學(xué)習(xí)到的不僅僅是技術(shù),更是一種潛意識(shí)的思維方式,這種思維方式可以幫助你提升你的綜合競(jìng)爭(zhēng)力,是一種“硬通貨”的能力。所謂“商業(yè)目標(biāo)”要廣義地去解讀。對(duì)于直接制作產(chǎn)品輸出給用戶(hù)的團(tuán)隊(duì),就對(duì)外關(guān)注如何提高產(chǎn)品質(zhì)量、降低產(chǎn)品成本,對(duì)內(nèi)關(guān)注如何優(yōu)化流程、減少錯(cuò)誤率。如果團(tuán)隊(duì)輸出的成果是公司內(nèi)其他部門(mén)需要的原材料,就關(guān)注下游的需求,看如何更好地輸出這個(gè)成果。記住,當(dāng)你只有一把錘子,你看啥都是釘子。
關(guān)注用戶(hù)體驗(yàn)
第二條建議是,從用戶(hù)體驗(yàn)方面來(lái)考慮問(wèn)題。即使一個(gè)技術(shù)達(dá)人能夠以一己之力搭建一個(gè)站點(diǎn),但他如果不知道如何關(guān)注用戶(hù)和客戶(hù)的體驗(yàn),那么他做的產(chǎn)品就會(huì)體驗(yàn)極差。這樣的產(chǎn)品除了“能用”之外什么優(yōu)點(diǎn)都沒(méi)有。所有優(yōu)秀的工程師所做的一切都是在優(yōu)化用戶(hù)體驗(yàn):一個(gè)優(yōu)化性能的開(kāi)發(fā)者是在積極的提升用戶(hù)體驗(yàn)和交互,一個(gè)設(shè)計(jì)師有意用顏色、空間、大小和表單的排列方式讓用戶(hù)體驗(yàn)更順暢好用,而一個(gè)內(nèi)容運(yùn)營(yíng)者認(rèn)為某些內(nèi)容重要,某些內(nèi)容不重要,也是在考慮如何提升用戶(hù)的體驗(yàn)。甚至工程師作為團(tuán)隊(duì)leader向領(lǐng)導(dǎo)匯報(bào)時(shí)、發(fā)送郵件時(shí)也需要認(rèn)真地關(guān)注客戶(hù)(在這里是老板)的體驗(yàn),以對(duì)方能理解,會(huì)關(guān)注的方式來(lái)表達(dá)自己做了什么、請(qǐng)求對(duì)方的支持。所以這里的“用戶(hù)”仍然是一個(gè)廣義的定義:所有為之服務(wù)的人。
我如果開(kāi)創(chuàng)一個(gè)公司需要招聘“軟件工程師”,我要求的三個(gè)能力就是一專(zhuān)多長(zhǎng)、關(guān)注商業(yè)目標(biāo)、關(guān)注用戶(hù)體驗(yàn)。
如果是有志往IT方向發(fā)展的學(xué)生,我推薦從入門(mén)簡(jiǎn)單的前端開(kāi)發(fā)開(kāi)始學(xué),漸漸地接觸整個(gè)web開(kāi)發(fā)的世界。因?yàn)榍岸碎_(kāi)發(fā)直接面對(duì)最終用戶(hù),在上下游發(fā)展上有更自由的空間。其他職位也可以從一個(gè)專(zhuān)一的職業(yè)開(kāi)始,專(zhuān)注地學(xué)習(xí)這個(gè)職業(yè)需要的技術(shù),到達(dá)一定的深度之后,擴(kuò)展自己的知識(shí)面,往一專(zhuān)多長(zhǎng)方向去發(fā)展。
掃一掃
獲取更多福利
獵學(xué)網(wǎng)企業(yè)微信
獵學(xué)網(wǎng)訂閱號(hào)
獵學(xué)網(wǎng)服務(wù)號(hào)