天天看點

我如何把薪水從 50人民币/天 提升到 100美元/小時的 (2)

我如何把薪水從 50人民币/天 提升到 100美元/小時的 (2)

接上篇: 我如何把薪水從 50人民币/天 提升到 100美元/小時的 (1)

那次重構比我想象的快了不少,也就持續了兩個來月. 當時整個項目的代碼和流程都已經發生了翻天覆地的變化, 就給一些簡單的資料吧, model的代碼行數從之前的幾十行變成了6000多行, 現在想想都疑惑之前這麼多代碼都堆積在哪裡的? 測試的代碼也從幾十行提升到了 10000多行, 測試覆寫率也從之前的0提升到了80%多. 隻看行數可不行, 我們得說說比例. 代碼和測試的比例大概在 1:1, 從比例上來看, 還算是比較勻稱的.

勻稱? 怎麼感覺是在說身材? 其實硬要這麼比喻, 也是恰當的.

你可以把這個比例了解為女孩子胸圍比臀圍, 大概 1:1 是非常勻稱的, 如果接近 1:2 那麼已經說明你有過度測試可能, 從另外一個角度看, 說明臀部過大(或者說胸部過小). 如果已經達到了 1:3, 那麼請你盡快咨詢好最佳逃脫路線, 不然這一屁股坐下來後果不堪設想...

說來我當時就被這一屁股坐過, 死得很慘. 那時我追求所謂的測試覆寫率100%, 嚴重拖延了開發進度, 導緻新版本沒有如期釋出. 後來被客戶怪罪, 還牽連了 Tim. Tim 倒是沒有怪我, 但指出了我過度測試的地方, 讓我以後注意.

并且告訴我, 好的工程師不是隻會"追求極緻", 而是懂得如何在 "品質" 和 "成本" 上 make a right trade-off.

我如何把薪水從 50人民币/天 提升到 100美元/小時的 (2)

現在回憶起來, 這兩個來月我是幸福的, 第一次體會到這種百分之百專注在一件事情上的快樂. 從早上一睜眼就無時無刻不在思考項目上的問題, 我的修改是不是讓代碼變得更好了? 這個地方如何抽取? 為什麼先寫測試會幫助我做出更好的設計? 為什麼預計到變化這麼大, 依然堅持重構而不是重寫?....

無數大大小小深深淺淺的問題時刻盤旋在我的腦海裡. 刷牙, 吃飯, 坐車, 走路, 甚至連蹲大都不放過我. 每天除了回家陪老媽瞄幾分鐘韓劇, 其餘就沒閑着過. 熬夜加班更是家常便飯, 雖然很多時候覺得自己很累, 但是看着事情一件一件做完, 自己一點一點成長, 那真是high炸天...

本以為事情最多也就如此了, 但是沒想到我的命運總如那韓劇裡男主角一般"禍不單行"...

記得那天也沒什麼不同, 早早的來到辦公室準備和美國的客戶以及Tim開Scrum meeting. 我們 Scrum meeting 的内容也不是很麻煩. 聊聊一些任務的狀态, 不會談太多細節. 每個人要回答三個問題:

1. What have you done yesterday?
2. What will you work on today?
3. Is there anything block you?
           

我的英文當時可不算好, 用一些很庸俗的形容就是我以剛剛超過6分的水準穩穩的獲得了英語四級榮譽證書(而且是第一次參考取得的成績, 後來一次比一次差). 和大多數程式員一樣, 讀和寫還湊合, 說隻能算還行, 聽那簡直就是災難, 再加之是通過Skype且在這種網路速度極其不靠譜國家, 我對資訊的識别率最多也就是在 50% 不到. 本來如果隻是回答這幾個問題也還算好, 畢竟都比較簡短, 即使别人說, 我也大概能猜到每個人在說些什麼. 但是這客戶總是不按規矩出牌, 他特别喜歡利用這個 Scrum meeting 的時間和大家聊聊家常, 還說很多功能上的細節, 對市場以及産品的看法(這些可都是大忌). 并且我嚴重懷疑他每次開會之前都嚼了顆炫邁口香糖... 那簡直就是停不下來, 語速還相當驚人, 伴随着牙齒摩擦出的火花聲音, 噼裡啪啦的從 Skype 裡斷斷續續的傳過來...

我如何把薪水從 50人民币/天 提升到 100美元/小時的 (2)

我承認, 每當他說話我就開始打醬油了. 不過幸好的是... 我還有他: 我的老闆是個ABC(American Born Chinese), 他英文遠遠比中文好得多. 是以他經常會充當翻譯的角色, 而且他有個極其良好的習慣, 他每次會把會議的主要内容記錄下來, 并以郵件的形式發給所有的參會人員. 每次我收到這封郵件就猶如收到情書一般的興奮, 内心中不停的浮現出四個字: "有你真好."

但有時也依賴不了這封郵件, 因為客戶會在會議上直接問我問題, 讓我立即回答. 比如那天:

客戶: "..... Terry, XXX YYY ZZZ XXYY XXZZ .....?"

其實從那句話裡, 我基本就隻聽懂了開頭的 "Terry", 進而斷定他在對我說, 然後從他最後的語氣上揚斷定他在提問題, 從句子裡沒有包含 "F*ck", "Shit"... 之類的詞斷定他沒有對我有太大不滿, 至于其它的, 我幾乎一無所知...

我當時 "e..." 了半天, 不知如何是好, 于是向我的老闆 Calvin 投去了純真且暧昧的目光, 以尋求幫助. 基友之間就是這樣, 不需要太多的言語, 往往一個眼神就夠了. 這招通常都非常管用, 他一般都會立即幫我做翻譯. 可是那天他沒有, 他把右手擡起示意我自己回答. 此時, 一股熱流湧上我的眼眶, 心裡默念 "你變了".

正當我手足無措之際, 客戶突然又說話了, 而且還是中文: "Terry, 你明白我說什麼?" 我一聽心裡就踏實了不少, 心想 "我擦, 這哥們兒懂中文? 不早說啊. 怪不得他頭像看起來是個亞洲人, 估計和老闆一樣是ABC."

我感覺自己看到了希望, 果斷的用中文回答了一句: "不好意思, 我沒太了解您的問題."

客戶少時停頓後說: "Terry, 聽不懂, 聽不懂. I don't understand Chinese. Please speak English."

WTF, 我當時有一種被調戲的感覺, 而且感覺無比的強烈. 不亞于我以前的女朋友(女的)給我寫的約法兩章:

  1. 女朋友永遠是對的.
  2. 如果出現例外情況, 請參見第1條.

我當時忍住内心的些許不滿, 用英文說了一句: "Sorry, would you please say it again?" 于是客戶用英文緩慢的重複了一下他的問題. 我才大概猜到他問的什麼, 才最終做了簡要的回答. 這短短20分鐘的會議, 那一天顯得無比的漫長...

收拾好東西準備起身離開會議室, 這時老闆 Calvin 拍了拍我的肩膀, 深情的望着我, 還叫了我的名字. 我心想, 這是要幹嘛? 剛剛那麼冷淡都不幫我, 這一下又這麼深情, 難道是在玩欲擒故縱?

老闆繼續道:"你可能留意到了, 今天整個會議我都沒有怎麼幫助你. 原因是我一個多月後要去美國, 在那裡至少要呆上兩個月, 那邊我沒辦法每天參加Scrum meeting. 我覺得你可以獨自 handle 好這個事情, right?"

我聽了後一下就傻了. 開個會我也就能聽懂 50% 不到, 而且這是我自國中開始, 學習了近10年英語的結果. 這接下來就隻有一個來月, 我怎麼可能獨自 handle 得下來. 再加之這是做軟體不是搞相親, 聽個大概湊合湊合就行了. 好吧, 即使是相親, 隻聽個大概很多時候都不夠. 特别建議那些隻喜歡白人或黑人的女性朋友: (喜歡黃種人的請忽略下一段.)

把國際友人時要注意, "house"和"apartment" 要厘清, "bought" 和 "rent" 要厘清, "guy" 和 "gay" 要厘清, 特别的特别 "America" 和 "Africa" 要厘清. 不然真如願以償被帶走, 結果落地看到的不是自由女神, 而是自由的大象, 那多尴尬?

但話說回來, 當時心裡忍住了想說一百個 "impossible" 的沖動, 我竟然點了點頭, 然後說: "Let me take a try." 但是心裡有點發毛, 深深知道這幾乎不怎麼可能. 我就是這麼一個喜歡"自虐"的人, 而且至今也是如此. 但是既然都答應了, 我還是要做點什麼, 好讓自己的英語在這一段時間裡有個突飛猛進.

接下來的時光可謂"雪上加霜", 首先開發上不能有任何放緩, 還需要見縫插針的惡補我的英文. 由于讀和寫對我來說問題不是太大, 而且即使有難度的地方也可以查詞典. 是以我把精力主要是放在了聽和說上, 現在來說說我采取了什麼措施吧:

  1. 看見老外就上!

    好吧, 雖然都是看見老外就上, 但是和有些女孩子還是有所不同的. 我的目的是單純的, 我不要房子, 不要美元, 不要生猛, 不要被帶走. 我隻是想要練習一下英語. 何況我通常都找同性下手, 至于異性, 我還是臉皮薄了點, 且我認為容易引起誤會. 雖然同性有時候也會引起誤會, 但是隻要你保持一顆純潔的内心, 這些都不是問題.

    搭讪很需要技巧, 抓機會要上, 沒機會創造機會也要上. 聊天的内容一定要由淺入深. 因為如果你隻停留在打招呼, 那麼你就算上了20個老外, 你依然隻會和他們打招呼. 一定要聊到愛好, 工作, 行業. 問問他們是怎麼工作的, 怎麼解決問題的.

    但是态度一定要好一些, 盡量把談話的氛圍搞得有趣一些, 這樣更容易得到他的喜歡, 這樣你才能多聊一會兒. 千萬不要因為謙虛, 說類似 "My English is not good.", "Please slow down, cause my poor English." 等這樣的話. 原因很簡單, 你如果說了, 他們會差別對待你, 不把你當英語好的人對待, 他們會降低自己的語速, 或者用更簡單的表達方式. 這樣就達不到更高強度練習的需求了, 而且你始終不是真正在和 native speaker交流.

    聽不懂是常會發生的, 盡量根據他前後語境去猜測, 進而推斷出某些不懂的發音或者單詞的意思. 或者試探性的重複或總結他的意思, 然後通過他的肯定和否定來斷定自己是否猜對了. 事後一定要做一次回顧, 回顧他怎麼表達的, 如果你遇到類似的情況可不可以借鑒, 如果有必要甚至可以寫下來. 經常溫習.

    你還别說, 最有意思的一次. 我搭讪上一個美國的設計師, 他當時在一個筆記本上畫網頁設計草圖. 我就說: "It looks nice, are you a designer?" (這其實基本是一句廢話) 以廢話開始, 但過程很贊, 一聊就不可收拾, 後來還得知他是來自芝加哥的設計師, 而且他會寫一些 Rails, 最巧的是他以前的辦公室就在 37signals 旁邊, 他還認識 Jason Fried. 聽了很多八卦, 非常開心, 同時真的感歎, 這世界真小..

  2. 從身邊人下手!

    當天答應了 Calvin 之後, 我又單獨找他聊了一次. 談話的内容是我希望以後所有我和他之間的交流都用英文, 特别是涉及工作和項目時. Calvin非常爽快的答應了, 而且他還說會以正常的語速和表達來和我交流. 如果我實在不懂的, 在以中文問他. 這樣一來, 基本上項目裡容易涉及到的英文和表達, 都可以和 Calvin 提前遇到. 用這個方法後還不到一周就效果明顯, scrum meeting 上能聽懂更多内容, 因為基本 scrum 上要談到的, 我和 Calvin 在前一天已經談過了. 這樣在 meeting 上還能再加深一次印象.

  3. 自我安慰!

    所謂自我安慰, 顧名思義, 就是沒人陪你的時候, 你就自己解決, 不是用手, 而是用嘴.

    其實很簡單, 記得我那時有個電毛驢, 每天騎車上下班, 一共需要大概1個來小時的時間, 這時候除了騎車, 沒别的事情可做, 于是我就開始自己和自己說英文.當然不是漫無目的的瞎說, 我心裡會模拟一個開會的場景, 然後假設項目到達一個什麼樣的進度, 然後問自己一個問題, 接着自己再來回答. 而且回答要分各種不同的情況, 比如進度順利的時候怎麼說, 遇到問題了怎麼說, 逐漸推進直到到達目的地為止.

    這個方法有一個關鍵點就是千萬别默念, 一定要說出來, 像你平時開會那樣. 這是一個神奇的方法, 我不确定是不是我首創的, 但是非常有效.而後每次會議感覺都有那麼一些意料之中且從容不迫的感覺, 回答也可從我先前的自我練習版裡借鑒不少表達.

    這方法, 我至今都在沿用. 雖然不騎電摩托了, 但是我喜歡散步, 是以散步的時候我多半都會這樣來練習自己的口語, 把自己在思考的問題用英文說出來, 或者假設自己在某個英文的 conf 裡演講, 怎麼介紹自己, 怎麼回答别人的提問等等....

除了以上三個最重要的方法, 我也做了很多其他的事情, 比如我主動要求代替老闆寫會議總結, 每次先由我來寫, 寫了以後發給老闆 review, 然後再發給客戶和Tim, 這樣自己就能确定是不是真的聽懂了. 開始的時候很多地方沒了解對或者是漏掉了重要的内容. 但是随着這麼練習, 精确度可謂越來越高. 還有一些小細節, 比如我把所有系統都改成英文了(包括手機), 文章和書隻看英文的, 每天聽一個英文的技術演講, 又學技術又學英文. 很多演講我要聽個 3-4次才能聽懂, 沒關系, 一天不懂第二天又來, 直到懂為止.

就這樣我堅持不懈的使用我這些偏方有一個來月, 終于迎來了老闆離開後的第一個 Scrum meeting. 其實那天根本沒那麼驚天動地, 回想起來順利得不行, 因為老闆離開的前一周就已經不在 meeting 說任何話了, 他隻是旁聽, 所有的狀況都要由我自己來解決. 雖然那天非常順利, 但是我依然開心, 吃飯睡覺都在傻笑, 可能是因為獲得了另一種"自立"吧!

總結:

  1. 一個追求進步的工程師接觸到一些新概念後, 比如測試, 比如OO, 比如REST 等等. 就很容易走極端, 測試覆寫率追求要100%, 要100%做 TDD, 追求極緻的OO設計, 無法容忍看起來不 REST 的設計... 其實, 不計時間成本的追求極緻是不好的, 但是又是進步青年難免會遇到的. 做軟體越久就越明白一個道理, 其實做軟體就是不停的在"成本"和"品質"上 making trade-offs. 這世界上沒有完美的軟體, 在有限的資源裡, 能找到最佳的平衡點, 才是真正優秀的工程師.
  2. 英語對于一個軟體工程師非常重要, 無論是你想學習最新的知識, 接觸最頂尖的同行, 找到最優質的客戶, 拿到你最想要的rate... 你真的離不開它(後面的文章你會更有體會). 如果你英文還不是那麼好, 現在就開始學習吧, 盡量把學習英語和學習技術統一起來, 這樣兩不誤是最好的.
  3. 不要抱怨環境, 學英語也好, 學技術也好. 他不但會影響你團隊成員對你的印象, 而且時間一長, 你就會産生以下兩個錯誤的認識:
    1. 你容易忽略掉自己的主觀原因 (就像喜歡說 "豬一樣隊友" 的人, 很少總結自己是不是有問題, 是不是有失誤, 所有失敗的原因就這樣一廂情願的歸結到隊友身上了.)
    2. 你容易忽略掉環境是可以被你改變的(比如我可以為了學習英語 "見老外就上", "從身邊人下手", 甚至我可以 "自我安慰", 這已經從某種程度上改變了我英語學習環境惡劣的現狀, 如果你什麼都不做, 你隻會是停留在那個依然惡劣的環境裡.)
  4. 不要太在意别人的眼光, 那樣會讓你做事畏首畏尾, 效率低下. 堅持你認為對的事情. 我狂練英文的那段時間裡, 遭受了無數異樣的目光和議論, 有覺得你裝逼的, 有覺得你傻逼的, 有覺得你賣萌的(那個時候似乎還不流行說賣萌, 懂那個意思就行). So what? So f*cking what? 我有什麼損失嗎? 隻要自己明白自己不是在裝逼, 賣萌, 是為了一個正确的目标努力, 堅持吧... 解釋太浪費時間, 直接原諒他們的誤解, 寬容一點. 至少, 我是這麼幹的.
  5. 多說 "Let me take a try!", 少說 "It's impossible!", 至少我是以受益匪淺.

什麼? 這一篇看起來似乎都在談英語學習? 而且竟然沒有談到薪水的增加? 是的, 這足以見得英文有多麼重要. 它對我下一次的重大轉折起到了舉足輕重的作用, 而且下一次的轉折可以用飛躍來形容, rate提高接近10倍. 這裡先賣個關子, 我們下一篇接着說.

最後推薦一下我好基友的新文章: 不要讓辦公室成為你的效率殺手

繼續閱讀