看職業》偉大航道的遊戲規則 - 軟體工程師篇

Winston Chen

SnapChat CEO 斯皮格爾(Evan Spiegel)前陣子說的那句話到現在還到處被全球鄉民瘋轉,如果你還沒有看過,可以參考一下:

我是一個年輕、受過教育的白人。我非常非常的幸運。而人生是不公平的。因此,如果人生是不公平的——努力工作根本不是重點,重點是知道這個世界運作的法則。

(And life isn’t fair. So if life isn’t fair –it’s not about working harder, it’s about working the system.)

這個23 歲以前就(算是)白手起家的大富豪說的沒有錯,就像這篇原出於中國網民的長文(文長,但是真的很好看,大力推薦)寒門再難出貴子所說的

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

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

談到工程師,你可能以為只要是阿宅又會寫程式,就是程式設計師了,其實,筆者在這裡工作了幾年後,發現在矽谷,軟體工程師以等級來說,可以分為以下幾種:

  • 會寫些code 的
  • 會修別人寫出來的屍體的
  • 會搞些軟體架構,又會帶人的,以及最後的
  • 投入大型Apache Project 開發的。

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

所以一旦你踏進軟體工程師的領域,你只能咬著牙,一關關打上去,這就是你必須面對的偉大航道。

會寫些code 的

儘管很多人會說念資工系沒有用,或是非資工系也會寫程式等等… ,在矽谷這裡,念資工系還是比較吃香,不然你自己去Facebook 找人的網頁,Software Engineering 部分,看看有幾個職缺不需要BS or MS degree in Computer Science?

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

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

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

還有一個很直接的方法確認你是不是真正的軟體工程師,你去找一個當地的獵人頭,問他是不是願意幫你推薦你的履歷,如果他肯的話,你就100% 是了。

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

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

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

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

以現在軟體專案的規模,你一定要跟人合作,你當然可以請寫那段code 的人自己去維護自己寫出來的那段程式碼,但是萬一這個人生病/請假/擺爛/離職了怎麼辦呢?產品與專案還是要繼續走,於是『會修別人寫出來的屍體的』能力就顯得非常重要了。

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

會搞些軟體架構,又會帶人的

稍微有點sense 的軟體工程師就知道『作Amazon』與『做出Amazon 網站』的差別,而這差別,正是定義這等級軟體工程師的最大因素。

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

『作Amazon』與『做出Amazon 網站』最大的差別在於服務的規模(scale),200 個用戶跟2,000 萬個用戶所需要的科技與演算法完全不一樣。

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

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

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

到目前為至,都還只是『商品推薦系統』而已,更別說其他功能,資料庫的設計,分散式運算的規劃 … 等,更何況Amazon 的資料量與客戶量都遠大於此呢!

除了設計與實做這些軟體架構以外,這類的軟體工程師還要能夠舌戰群雄,通過眾多工程師的質疑與考驗與建議後,帶領團隊做出最終版本的產品,並進行維護與改良。

這類工程師常見的抬頭有軟體架構師(Software Architect),工程總監(Director of Engineering),技術副總(V.P. of Engineering),與CTO 這幾個。

其實成為這種工程師最大的難處不在於技術而已,而是在第一手設計與執行這些大型系統的實戰經驗,有了一次架構這種等級服務的經驗以後,未來的業主或是團隊才會相信你有這樣的能力,把更多、更大型的專案交在你手上,你也才能以戰養戰,在業界建立起自己的品牌。

就我目前接觸到這樣的工程師中,有兩種升級過來的方式:

在大型服務的公司,待過類似部門。比如說你就在Amazon 作過類似的東西,拿這種業界龍頭的相關履歷,當然很容易在競爭者或是startup 種找到掌舵的角色。

在快速成長的startup 中待過,期間協助建立或是維護過這種等級的服務與產品。

投入大型Apache Project 開發的

我知道你很嚮往設計出python 的Guido van Rossum ,或是哪天閒閒沒事也能像Linus Torvalds 一樣在家裡孵出Linux,但是我並不想討論他們這種神級的語言創造者,因為他們的經歷與能力有點難複製。我想討論的反而是他們的追隨者,那群數目龐大,但是卻默默把像是Linux 與python 推向未來的Open Source 社群工程師。

不知道你有沒有聽過矽谷的秘密工會?作者寫的沒錯,我這個類別就是在聊他們。

(沒看過文章先去看看)

很多對技術熱愛的工程師,會把這些技術的原始碼下載下來研究,也會跟貢獻該科技的Open Source 工程師互動,切磋技術,久了,不管是手癢了,還是想要哪些功能遲遲等不到,就會把袖子捲起來,自己跳下去寫了起來。

儘管理論上Open Source 的專案大家都可以做,但是要讓大家都同意把你的程式碼正式地放進專案中,卻需要好大的一番功夫。

首先,我們假設你幫該專案加了某些功能,你會上Github 去建立一個Pull Request ,接下來,這些元老級的工程師們就會開始對你的程式碼品頭論足的。

『這裡為什麼要這樣寫?你這樣跟我們原來程式碼的架構不搭』
(老大,我新來的耶XD 我哪知道你原來的架構啊?)

『為什麼不用這個元件,要自幹?』
(因為之前沒有人跟我說啊XD)

『你的測試單元這樣寫跑太慢了,你換個方式做吧!』
(那等於是要我拆開來重新做是嗎?XD)

… 雖然你會覺得很機車,但是轉念想想,你到哪裡去找這麼多軟體工程的長老花時間幫你review 你的code 啊?這種千金難買的灌頂機會,現在讓你完全免費得到,你老早就該請吃飯了XD

經過上面的寒徹骨,你的程式碼終於被接受,成為Open Source 專案的一部分,你也升級成為Open Source 的貢獻者(Contributor/Developer)。

如果要作Open Source ,建議一開始從Apache 熱門專案下手,比如說Spark 或Hadoop 那種,有兩個主要原因:

因為專案熱門,原來貢獻的長老工程師就眾多,幫你Review 作品的質跟量會比其他Open Source 專案好很多,灌頂機會大增,練功比較快。

一旦你成為這些熱門專案的固定貢獻者,甚至被專案中長老們遴選為Commiter (有關分級請看這裡),你在業界的名聲自然水漲船高。根據強者我朋友的不責任報導,很多超級公司找人的時候,都是把相關Apache 專案Developer/Commiter 的名單調出來,從第一個打到最後一個。而一般而言,一個熱門Apache 專案的Commiter 年薪至少20 萬美金。

當然,如果這整個Apache 專案根本就是由你發起的,你的價值會跟這篇同工不同酬的文章所說的一樣,沒有辦法以常理來衡量。

最可怕的是如果這群絕地武士同時又兼有創業家精神,他們創造出來的公司會讓你有種天空才是你的極限(Sky is the limit.)的那種fu,如果你覺得Cloudera(Hadoop) 太老了,雖然市值規模真的很驚人,你可以看看Databricks(spark) ,這個才成立1 年(2013) 的8 人公司,讓矽谷最有名的創投爭先恐後,馬上注資4千7百萬美金(來算算每個員工可以分到多少XD),這兩間公司都是由這類工程師所創立的。

對了,這類工程師很多都喜歡饅頭(mentor)後進,只要你不浪費他們的時間,他們都很願意拉你一把,如果你遇到了,好好把握機會吧。

目前為止所討論到的這條航道,是我這幾年在矽谷當工程師所見所聞的體驗,歡迎大家跟我討論。如果你認識其他產業或是職業的佼佼者,可以提供更多的偉大航道,也請來信跟我說,我非常願意跟他聊聊,看能不能把他的經驗與洞見(insight)寫出來跟大家分享。

ps. 筆者現在身於『會修別人寫出來的屍體』的階段,努力向上攀升中

(本文僅代表作者之意見與立場,經作者授權)

出處:台灣工程師的矽谷故事

你可能會有興趣的文章

最嚴肅的承諾 誓言遲早會兌現
國外流傳著這樣一個真實的故事:哈里斯與山盟海誓的女友凱倫在婚前體檢時被醫生告知患上了晚期癌症,凱倫經過撕心裂肺的痛哭後,還是離開了哈里斯…
楊嘉祥翻玩拉花 打造台客風「窺視珈琲」
▲從鐵窗的縫隙裡窺探紅色霓虹燈管拼出的「窺視珈琲」四個字。   穿過宛如異世界的華江整建住宅,望著環河快速道路上逐漸西沉的夕陽,…
挽救就業 美延長減稅與失業救濟
12月上旬,美國總統歐巴馬與共和黨針對多個已經或即將到期的法案達成協議,同意將布希總統任內通過的減稅法案延長2年,…
蒙恬科技蔡義泰五大致勝心法
「在軟體產業上,台灣長期以來還沒有屬於自己的頂級品牌。但是台灣有人才,所以我們要做,…
不景氣,換個方式過生活
金融海嘯使許多人的財富縮水,經濟不景氣更使各行各業陷入蕭條。企業裁員、無薪假的消息頻傳,有人開玩笑說,現在最不能喝的飲料是「仙草蜜」(…
M.A.C 2015早春彩妝 輕舞光彩
 M.A.C 2015早春彩妝,目前已陸續在全台各M.A.C百貨專櫃曝光銷售。M.A.C彩妝創立的緣起,…
87歲資訊「老將」 神通電腦董事長果芸的經營哲學
「老將」一詞通常是用來比喻某領域裡經驗豐富老道的好手,但台灣資訊業界有個「老將」可是名符其實。「老將」,既是形容他在資訊領域的資深經歷,…
人工甘味與原味
寫這個題目是要替長年為我嚐美食的舌頭抱屈。 幾乎所有的愛吃鬼都有一副靈敏的舌頭與像貓一樣的好奇心。所以呢,只要是大腦味覺資料庫沒有的紀錄,…