硅谷工程師的4個等級

2014年12月24日 10:23 來源:CocoaChina 作者:佚名 我要評論(0)

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

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

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

  “努力是需要有方向的,需要有指導(dǎo)的,如果在一個錯誤的思維指導(dǎo)下,也許累死你的努力換來的就是一個只能餬口微薄收入。”

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

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

  會寫些code的

  會修別人寫出來的尸體的

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

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

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

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

  會寫些code的

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

  (好玩的是,這裡99%的一流公司不會只想要征碩士,跟***那種很假的大公司感覺很不一樣)

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

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

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

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

  會修別人寫出來的尸體的(Debug別人的Code)

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

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

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

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

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

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

  (這裡說的Amazon,指的是Amazon購物網(wǎng)站,不是AWS)

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

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

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

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

12下一頁全文

本文導(dǎo)航