硅谷工程師的4個(gè)等級(jí) - 全文

2014年12月24日 10:23 來(lái)源:CocoaChina 作者:佚名 我要評(píng)論(0)

標(biāo)簽:工程師(68469)程序員(29779)

  SnapChat CEO斯皮格爾(EvanSpiegel)前陣子說(shuō)的那句話到現(xiàn)在還到處被全球鄉(xiāng)民瘋轉(zhuǎn),如果你還沒有看過(guò),可以參考一下:“我是一個(gè)年輕、受過(guò)教育的白人。我非常非常的幸運(yùn)。而人生是不公平的。因此,如果人生是不公平的——努力工作根本不是重點(diǎn),重點(diǎn)是知道這個(gè)世界運(yùn)作的法則。”(And life isn’t fair.So if life isn’t fair–it’s not about working harder,it’s about working the system.)

  這個(gè)23歲以前就(算是)白手起家的大富豪說(shuō)的沒有錯(cuò),就像一篇塬出于中國(guó)網(wǎng)民的長(zhǎng)文《寒門再難出貴子》所說(shuō)的:

  “努力是需要有方向的,需要有指導(dǎo)的,如果在一個(gè)錯(cuò)誤的思維指導(dǎo)下,也許累死你的努力換來(lái)的就是一個(gè)只能餬口微薄收入?!?/p>

  是的!努力是需要有方向的(本篇重點(diǎn)真的不是叫你去找個(gè)富二代或是有錢人嫁了/娶了XD),摸清楚游戲規(guī)則與方向后的努力才能開外掛,才能事半功倍,讓我們先從軟件工程師開始討論吧!

  談到工程師,你可能以為只要是阿宅又會(huì)寫程序,就是程序設(shè)計(jì)師了,其實(shí),筆者在這裡工作了幾年后,發(fā)現(xiàn)在硅谷,軟件工程師以等級(jí)來(lái)說(shuō),可以分為以下幾種:

  會(huì)寫些code的

  會(huì)修別人寫出來(lái)的尸體的

  會(huì)搞些軟體架構(gòu),又會(huì)帶人的,以及最后的

  投入大型ApacheProject開發(fā)的。

  在硅谷,這幾個(gè)等級(jí)的工程師能力跟待遇相差很大,但是差距最大的部分,其實(shí)是機(jī)會(huì)。很多搞不清楚這幾個(gè)等級(jí)的程序猿們,會(huì)花上一輩子的時(shí)間在第一種與第二種工程師間徘徊,盡管工作非常努力,也很努力學(xué)習(xí)新的技術(shù),很多時(shí)候卻感到時(shí)不我予,等到年紀(jì)大一點(diǎn)了,拼不過(guò)年輕小伙子,自然慢慢就被淘汰掉了,給外人造成工程師做不老的錯(cuò)誤印象。

  所以一旦你踏進(jìn)軟件工程師的領(lǐng)域,你只能咬著牙,一關(guān)關(guān)打上去,這就是你必須面對(duì)的偉大航道。

  會(huì)寫些code的

  盡管很多人會(huì)說(shuō)念資工系沒有用,或是非資工系也會(huì)寫程序等等…,在硅谷這裡,念資工系還是比較吃香,不然你自己去Facebook找人的網(wǎng)頁(yè),SoftwareEngineering部分,看看有幾個(gè)職缺不需要BSorMSdegreeinComputerScience?

 ?。ê猛娴氖?,這裡99%的一流公司不會(huì)只想要征碩士,跟***那種很假的大公司感覺很不一樣)

  或者說(shuō)你之前也有聽過(guò)可以半路出家寫程序,比如說(shuō)去參加GeneralAssembly課程出來(lái)直接拿高薪等等的這種說(shuō)法。我自己沒有遇過(guò)半路出家拿高薪的那些人,但是就我所知,如果你不是資工背景出來(lái)的,之前也沒有寫程序的相關(guān)經(jīng)歷,通常需要幫公司作“無(wú)償實(shí)習(xí)”來(lái)累積你在市場(chǎng)的經(jīng)驗(yàn)與人家對(duì)你的信任,然后才能正式當(dāng)上全職的軟件工程師。

  硅谷公司雖然相對(duì)比較不重視學(xué)歷,但是你還沒有經(jīng)驗(yàn)或是作品集證明自己之前,他們也是很在意出身的。相反地,在你工作叁五年后,你沒有累積經(jīng)驗(yàn)而只提出身,就慢慢會(huì)讓大家看不起了。

  還有一個(gè)很直接的方法確認(rèn)你是不是真正的軟件工程師,你去找一個(gè)當(dāng)?shù)氐墨C頭,問他是不是愿意幫你推薦你的履歷,如果他肯的話,你就100%是了。

  不管你是怎麼做成軟件工程師的,總之,你工作是在寫些Code的,就算是了。

  會(huì)修別人寫出來(lái)的尸體的(Debug別人的Code)

  一般而言,能夠做到修改別人的尸體(寫壞的程序,但是不包含回家作業(yè)XD),大概就有資格叫做資深(Senoir)工程師了。

  寫code簡(jiǎn)單,改自己的code簡(jiǎn)單,但是修改/修正別人的code其實(shí)就不容易了,尤其是那種一點(diǎn)都不寫注解的XD。你不僅要熟稔他使用的語(yǔ)言與技術(shù),還要參透他思考邏輯與盲點(diǎn),比自己自干要困難很多。

  以現(xiàn)在軟體專案的規(guī)模,你一定要跟人合作,你當(dāng)然可以請(qǐng)寫那段code的人自己去維護(hù)自己寫出來(lái)的那段程序碼,但是萬(wàn)一這個(gè)人生病/請(qǐng)假/擺爛/離職了怎麼辦呢?產(chǎn)品與專案還是要繼續(xù)走,于是“會(huì)修別人寫出來(lái)的尸體的”能力就顯得非常重要了。

  基本上,到了這個(gè)等級(jí),你Linkedin的信箱漸漸的就會(huì)有很多獵人頭的留言,留職缺,希望找你去面試,只要你學(xué)校學(xué)的那些資料結(jié)構(gòu)與演算法還算熟稔,面試的氛圍也掌握得很好,年薪談到大于十萬(wàn)美金應(yīng)該不是問題。

  會(huì)搞些軟體架構(gòu),又會(huì)帶人的

  稍微有點(diǎn)sense的軟件工程師就知道“作Amazon”與“做出Amazon網(wǎng)站”的差別,而這差別,正是定義這等級(jí)軟件工程師的最大因素。

 ?。ㄟ@裡說(shuō)的Amazon,指的是Amazon購(gòu)物網(wǎng)站,不是AWS)

  “作Amazon”與“做出Amazon網(wǎng)站”最大的差別在于服務(wù)的規(guī)模(scale),200個(gè)用戶跟2,000萬(wàn)個(gè)用戶所需要的科技與演算法完全不一樣。

  拿商品推薦系統(tǒng)這個(gè)簡(jiǎn)單的功能來(lái)說(shuō)吧,我們假設(shè)你有專屬的推薦演算法,當(dāng)顧客登入網(wǎng)站的時(shí)候,你必須要用推薦演算法算過(guò)你所有的庫(kù)存商品,來(lái)推薦顧客可能會(huì)喜歡的產(chǎn)品,推高購(gòu)物網(wǎng)站的營(yíng)收。

  假設(shè)你目前有1萬(wàn)個(gè)商品,在你有200個(gè)用戶時(shí),你只要算200萬(wàn)次,一臺(tái)好一點(diǎn)的機(jī)器可能就可以處理了,但在你有2千萬(wàn)客戶時(shí),你至少需要算2千萬(wàn)x1萬(wàn)=200,000,000,000次,這還不包括接下來(lái)排序所需要的運(yùn)算,你要怎麼設(shè)計(jì)這個(gè)系統(tǒng)?

  假設(shè)你使用100臺(tái)機(jī)器來(lái)處理,其中有幾臺(tái)運(yùn)算時(shí)錯(cuò)賽了,你要怎麼辦?你的結(jié)果會(huì)不會(huì)受到影響?還有,你當(dāng)然不能在顧客登入時(shí)才當(dāng)場(chǎng)算,因?yàn)檫@樣絕對(duì)來(lái)不及,那麼你要怎麼儲(chǔ)存這些每晚重新運(yùn)算過(guò)的結(jié)果?如果Amazon想要把網(wǎng)頁(yè)的產(chǎn)生時(shí)間壓在幾毫秒下,你只能把這些結(jié)果存在記憶體,而不是硬碟中,那你要怎麼設(shè)計(jì)與設(shè)定這個(gè)大型的記憶體系統(tǒng)(假設(shè)我們用memcached)?


  到目前為至,都還只是“商品推薦系統(tǒng)”而已,更別說(shuō)其他功能,資料庫(kù)的設(shè)計(jì),分散式運(yùn)算的規(guī)劃…等,更何況Amazon的資料量與客戶量都遠(yuǎn)大于此呢!

  除了設(shè)計(jì)與實(shí)作這些軟體架構(gòu)以外,這類的軟件工程師還要能夠舌戰(zhàn)群雄,通過(guò)眾多工程師的質(zhì)疑與考驗(yàn)與建議后,帶領(lǐng)團(tuán)隊(duì)做出最終版本的產(chǎn)品,并進(jìn)行維護(hù)與改良。

  這類工程師常見的抬頭有軟體架構(gòu)師(SoftwareArchitect)工程總監(jiān)(DirectorofEngineering),技術(shù)副總(V.P.ofEngineering),與CTO這幾個(gè)。

  其實(shí)成為這種工程師最大的難處不在于技術(shù)而已,而是在第一手設(shè)計(jì)與執(zhí)行這些大型系統(tǒng)的實(shí)戰(zhàn)經(jīng)驗(yàn),有了一次架構(gòu)這種等級(jí)服務(wù)的經(jīng)驗(yàn)以后,未來(lái)的業(yè)主或是團(tuán)隊(duì)才會(huì)相信你有這樣的能力,把更多,更大型的專案交在你手上,你也才能以戰(zhàn)養(yǎng)戰(zhàn),在業(yè)界建立起自己的品牌。

  就我目前接觸到這樣的工程師中,有兩種升級(jí)過(guò)來(lái)的方式:

  在大型服務(wù)的公司,待過(guò)類似部門。比如說(shuō)你就在Amazon作過(guò)類似的東西,拿這種業(yè)界龍頭的相關(guān)履歷,當(dāng)然很容易在競(jìng)爭(zhēng)者或是startup種找到掌舵的角色。

  在快速成長(zhǎng)的startup中待過(guò),期間協(xié)助建立或是維護(hù)過(guò)這種等級(jí)的服務(wù)與產(chǎn)品。

  投入大型ApacheProject開發(fā)的

  我知道你很嚮往設(shè)計(jì)出python的GuidovanRossum,或是哪天閒閒沒事也能像LinusTorvalds一樣在家裡孵出Linux,但是我并不想討論他們這種神級(jí)的語(yǔ)言創(chuàng)造者,因?yàn)樗麄兊慕?jīng)歷與能力有點(diǎn)難復(fù)製。我想討論的反而是他們的追隨者,那群數(shù)目龐大,但是卻默默把像是Linux與python推向未來(lái)的OpenSource社群工程師。

  不知道你有沒有聽過(guò)硅谷的秘密工會(huì)?作者寫的沒錯(cuò),我這個(gè)類別就是在聊他們。

  很多對(duì)技術(shù)熱愛的工程師,會(huì)把這些技術(shù)的塬始碼下載下來(lái)研究,也會(huì)跟貢獻(xiàn)該科技的OpenSource工程師互動(dòng),切磋技術(shù),久了,不管是手癢了,還是想要哪些功能遲遲等不到,就會(huì)把袖子卷起來(lái),自己跳下去寫了起來(lái)。

  盡管理論上OpenSource的專案大家都可以做,但是要讓大家都同意把你的程序碼正式地放進(jìn)專案中,卻需要好大的一番功夫。

  首先,我們假設(shè)你幫該專案加了某些功能,你會(huì)上Github去建立一個(gè)PullRequest,接下來(lái),這些元老級(jí)的工程師們就會(huì)開始對(duì)你的程序碼品頭論足的。

  “這裡為什麼要這樣寫?你這樣跟我們塬來(lái)程序碼的架構(gòu)不搭”

 ?。ɡ洗螅倚聛?lái)的耶XD我哪知道你塬來(lái)的架構(gòu)?。浚?/p>

  “為什麼不用這個(gè)元件,要自干?”

 ?。ㄒ?yàn)橹皼]有人跟我說(shuō)啊XD)

  “你的測(cè)試單元這樣寫跑太慢了,你換個(gè)方式作吧!”

 ?。堑扔谑且也痖_來(lái)重新作是嗎?XD)

  …雖然你會(huì)覺得很機(jī)車,但是轉(zhuǎn)念想想,你到哪裡去找這麼多軟體工程的長(zhǎng)老花時(shí)間幫你review你的code啊?這種千金難買的灌頂機(jī)會(huì),現(xiàn)在讓你完全免費(fèi)得到,你老早就該請(qǐng)吃飯了XD

  經(jīng)過(guò)上面的寒徹骨,你的程序碼終于被接受,成為OpenSource專案的一部分,你也升級(jí)成為OpenSource的貢獻(xiàn)者(Contributor/Developer)。

  如果要作OpenSource,建議一開始從Apache熱門專案下手,比如說(shuō)Spark或Hadoop那種,有兩個(gè)主要塬因:

  因?yàn)閷0笩衢T,塬來(lái)貢獻(xiàn)的長(zhǎng)老工程師就眾多,幫你Review作品的質(zhì)跟量會(huì)比其他OpenSource專案好很多,灌頂機(jī)會(huì)大增,練功比較快。

  一旦你成為這些熱門專案的固定貢獻(xiàn)者,甚至被專案中長(zhǎng)老們遴選為Commiter(有關(guān)分級(jí)請(qǐng)看這裡),你在業(yè)界的名聲自然水漲船高。根據(jù)強(qiáng)者我朋友的不責(zé)任報(bào)導(dǎo),很多超級(jí)公司找人的時(shí)候,都是把相關(guān)Apache專案Developer/Commiter的名單調(diào)出來(lái),從第一個(gè)打到最后一個(gè)。而一般而言,一個(gè)熱門Apache專案的Commiter年薪至少20萬(wàn)美金。

  當(dāng)然,如果這整個(gè)Apache專案根本就是由你發(fā)起的,你的價(jià)值會(huì)跟這篇同工不同酬的文章所說(shuō)的一樣,沒有辦法以常理來(lái)衡量。

  最可怕的是如果這群絕地武士同時(shí)又兼有創(chuàng)業(yè)家精神,他們創(chuàng)造出來(lái)的公司會(huì)讓你有種天空才是你的極限(Skyisthelimit.)的那種fu,如果你覺得Cloudera(Hadoop)太老了,雖然市值規(guī)模真的很驚人,你可以看看Databricks(spark),這個(gè)才成立1年的8人公司,讓硅谷最有名的創(chuàng)投爭(zhēng)先恐后,馬上注資4千7百萬(wàn)美金(來(lái)算算每個(gè)員工可以分到多少XD),這兩間公司都是由這類工程師所創(chuàng)立的。

  對(duì)了,這類工程師很多都喜歡饅頭(mentor)后進(jìn),只要你不浪費(fèi)他們的時(shí)間,他們都很愿意拉你一把,如果你遇到了,好好把握機(jī)會(huì)吧。

  目前為止所討論到的這條航道,是我這幾年在硅谷當(dāng)工程師所見所聞的體驗(yàn),歡迎大家跟我討論。如果你認(rèn)識(shí)其他產(chǎn)業(yè)或是職業(yè)的佼佼者,可以提供更多的偉大航道,也請(qǐng)來(lái)信跟我說(shuō),我非常愿意跟他聊聊,看能不能把他的經(jīng)驗(yàn)與洞見(insight)寫出來(lái)跟大家分享。

上一頁(yè)12全文

本文導(dǎo)航