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

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. 筆者現在身於『會修別人寫出來的屍體』的階段,努力向上攀升中

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

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

你可能會有興趣的文章

人工甘味與原味
寫這個題目是要替長年為我嚐美食的舌頭抱屈。 幾乎所有的愛吃鬼都有一副靈敏的舌頭與像貓一樣的好奇心。所以呢,只要是大腦味覺資料庫沒有的紀錄,…
為甚麼猶太人是「自由派」?
在美國,多數猶太人是Liberal(自由派),而和Conservative(保守派)相分野。在西方,所謂自由派,就是比較左傾(注:…
亞馬遜創辦人收購華郵 老歌新唱
最近全球媒體界的大事當屬亞馬遜(Amazon.com)創始人貝佐斯(Jeff Bezos)將以2.5億美元收購《華盛頓郵報》(…
換個角度看科技發展
2013年榮登台灣電影史最賣座紀錄片的《看見台灣》,讓許多民眾看見台灣的美麗與滄桑。從空拍的角度,高雄日月光半導體排放廢水,…
小童賀新年
又快過年了!阿丹特別挑了這張圖向讀者拜年。 畫面中這些可愛的小朋友穿著傳統小肚兜,手裡拿著手搖鼓,開心地手舞足蹈。中間的小妹妹,…
從文字領略影像之美 以暢銷小說Boy's Life《奇風歲月》為例(二)
上一篇文章除了簡介《奇風歲月》,也舉出它一些生動的敘述手法,希望讀者在欣賞之餘,對中英文的寫作能有一些新的想法。 妙喻 在這篇的一開始,…
郎朗白宮一曲,中美外交失敗!?
中國國家主席胡錦濤2011年1月18日至21日訪美,引起全球矚目。知名華裔青年鋼琴家郎朗1月21日在白宮舉辦的晚宴上,彈奏了一首鋼琴變奏曲…
用腦過度有礙佛性
 千尺絲綸直下垂,一波才動萬波隨;夜靜水寒魚不食,滿船空載月明歸。(唐.德誠禪師)中國唐代末年的南宗禪師──船子德誠禪師,…