此文來源於個人blog程序員
接上篇: 我如何把薪水從 50人民幣/天 提高到 100美圓/小時的 (1)學習
那次重構比我想象的快了很多,也就持續了兩個來月. 當時整個項目的代碼和流程都已經發生了翻天覆地的變化, 就給一些簡單的數據吧, model的代碼行數從以前的幾十行變成了6000多行, 如今想一想都疑惑以前這麼多代碼都堆積在哪裏的? 測試的代碼也從幾十行提高到了 10000多行, 測試覆蓋率也從以前的0提高到了80%多. 只看行數可不行, 咱們得說說比例. 代碼和測試的比例大概在 1:1, 從比例上來看, 還算是比較勻稱的.測試
勻稱? 怎麼感受是在說身材? 其實硬要這麼比喻, 也是恰當的.spa
你能夠把這個比例理解爲女孩子胸圍比臀圍, 大概 1:1 是很是勻稱的, 若是接近 1:2 那麼已經說明你有過分測試可能, 從另一個角度看, 說明臀部過大(或者說胸部太小). 若是已經達到了 1:3, 那麼請你儘快諮詢好最佳逃脫路線, 否則這一屁股坐下來後果不堪設想...翻譯
說來我當時就被這一屁股坐過, 死得很慘. 那時我追求所謂的測試覆蓋率100%, 嚴重拖延了開發進度, 致使新版本沒有如期發佈.
後來被客戶怪罪, 還牽連了 Tim. Tim 卻是沒有怪我, 但指出了我過分測試的地方, 讓我之後注意.設計
而且告訴我, 好的工程師不是隻會"追求極致", 而是懂得如何在 "質量" 和 "成本" 上 make a right trade-off.code
如今回憶起來, 這兩個來月我是幸福的, 第一次體會到這種百分之百專一在一件事情上的快樂. 從早上一睜眼就無時無刻不在思考項目上的問題, 個人修改是否是讓代碼變得更好了? 這個地方如何抽取? 爲何先寫測試會幫助我作出更好的設計? 爲何預計到變化這麼大, 依然堅持重構而不是重寫?....blog
無數大大小小深深淺淺的問題時刻盤旋在個人腦海裏. 刷牙, 吃飯, 坐車, 走路, 甚至連蹲大都不放過我. 天天除了回家陪老媽瞄幾分鐘韓劇, 其他就沒閒着過. 熬夜加班更是屢見不鮮, 雖然不少時候以爲本身很累, 可是看着事情一件一件作完, 本身一點一點成長, 那真是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 裏斷斷續續的傳過來...
我認可, 每當他說話我就開始打醬油了. 不過幸虧的是... 我還有他: 個人老闆是個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, 我當時有一種被調戲的感受, 並且感受無比的強烈. 不亞於我之前的女友(女的)給我寫的約法兩章:
我當時忍住心裏的些許不滿, 用英文說了一句: "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." 可是內心有點發毛, 深深知道這幾乎不怎麼可能. 我就是這麼一個喜歡"自虐"的人, 並且至今也是如此. 可是既然都答應了, 我仍是要作點什麼, 好讓本身的英語在這一段時間裏有個日新月異.
接下來的時光可謂"雪上加霜", 首先開發上不能有任何放緩, 還須要見縫插針的惡補個人英文. 因爲讀和寫對我來講問題不是太大, 並且即便有難度的地方也能夠查詞典. 因此我把精力主要是放在了聽和說上, 如今來講說我採起了什麼措施吧:
看見老外就上!
好吧, 雖然都是看見老外就上, 可是和有些女孩子仍是有所不一樣的. 個人目的是單純的, 我不要房子, 不要美圓, 不要生猛, 不要被帶走. 我只是想要練習一下英語. 況且我一般都找同性下手, 至於異性, 我仍是臉皮薄了點, 且我認爲容易引發誤會. 雖然同性有時候也會引發誤會, 可是隻要你保持一顆純潔的心裏, 這些都不是問題.
搭訕很須要技巧, 抓機會要上, 沒機會創造機會也要上. 聊天的內容必定要由淺入深. 由於若是你只停留在打招呼, 那麼你就算上了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. 聽了不少八卦, 很是開心, 同時真的感嘆, 這世界真小..
從身邊人下手!
當天答應了 Calvin 以後, 我又單獨找他聊了一次. 談話的內容是我但願之後全部我和他之間的交流都用英文, 特別是涉及工做和項目時. Calvin很是爽快的答應了, 並且他還說會以正常的語速和表達來和我交流. 若是我實在不懂的, 在以中文問他. 這樣一來, 基本上項目裏容易涉及到的英文和表達, 均可以和 Calvin 提早遇到. 用這個方法後還不到一週就效果明顯, scrum meeting 上能聽懂更多內容, 由於基本 scrum 上要談到的, 我和 Calvin 在前一天已經談過了. 這樣在 meeting 上還能再加深一次印象.
自我安慰!
所謂自我安慰, 顧名思義, 就是沒人陪你的時候, 你就本身解決, 不是用手, 而是用嘴.
其實很簡單, 記得我那時有個電毛驢, 天天騎車上下班, 一共須要大概1個來小時的時間, 這時候除了騎車, 沒別的事情可作, 因而我就開始本身和本身說英文.固然不是漫無目的的瞎說, 我內心會模擬一個開會的場景, 而後假設項目到達一個什麼樣的進度, 而後問本身一個問題, 接着本身再來回答. 並且回答要分各類不一樣的狀況, 好比進度順利的時候怎麼說, 遇到問題了怎麼說, 逐步推動直到到達目的地爲止.
這個方法有一個關鍵點就是千萬別默唸, 必定要說出來, 像你平時開會那樣. 這是一個神奇的方法, 我不肯定是否是我獨創的, 可是很是有效.然後每次會議感受都有那麼一些意料之中且從容不迫的感受, 回答也可從我先前的自我練習版裏借鑑很多表達.
這方法, 我至今都在沿用. 雖然不騎電摩托了, 可是我喜歡散步, 因此散步的時候我多半都會這樣來練習本身的口語, 把本身在思考的問題用英文說出來, 或者假設本身在某個英文的 conf 裏演講, 怎麼介紹本身, 怎麼回答別人的提問等等....
除了以上三個最重要的方法, 我也作了不少其餘的事情, 好比我主動要求代替老闆寫會議總結, 每次先由我來寫, 寫了之後發給老闆 review, 而後再發給客戶和Tim, 這樣本身就能肯定是否是真的聽懂了. 開始的時候不少地方沒理解對或者是漏掉了重要的內容. 可是隨着這麼練習, 精確度可謂愈來愈高. 還有一些小細節, 好比我把全部系統都改爲英文了(包括手機), 文章和書只看英文的, 天天聽一個英文的技術演講, 又學技術又學英文. 不少演講我要聽個 3-4次才能聽懂, 不要緊, 一天不懂次日又來, 直到懂爲止.
就這樣我堅持不懈的使用我這些偏方有一個來月, 終於迎來了老闆離開後的第一個 Scrum meeting. 其實那天根本沒那麼驚天動地, 回想起來順利得不行, 由於老闆離開的前一週就已經不在 meeting 說任何話了, 他只是旁聽, 全部的情況都要由我本身來解決. 雖然那天很是順利, 可是我依然開心, 吃飯睡覺都在傻笑, 多是由於得到了另外一種"自立"吧!
一個追求進步的工程師接觸到一些新概念後, 好比測試, 好比OO, 好比REST 等等. 就很容易走極端, 測試覆蓋率追求要100%, 要100%作 TDD, 追求極致的OO設計, 沒法容忍看起來不 REST 的設計... 其實, 不計時間成本的追求極致是很差的, 可是又是進步青年不免會遇到的. 作軟件越久就越明白一個道理, 其實作軟件就是不停的在"成本"和"質量"上 making trade-offs. 這世界上沒有完美的軟件, 在有限的資源裏, 能找到最佳的平衡點, 纔是真正優秀的工程師.
英語對於一個軟件工程師很是重要, 不管是你想學習最新的知識, 接觸最頂尖的同行, 找到最優質的客戶, 拿到你最想要的rate... 你真的離不開它(後面的文章你會更有體會). 若是你英文還不是那麼好, 如今就開始學習吧, 儘可能把學習英語和學習技術統一塊兒來, 這樣兩不誤是最好的.
不要抱怨環境, 學英語也好, 學技術也好. 他不但會影響你團隊成員對你的印象, 並且時間一長, 你就會產生如下兩個錯誤的認識:
你容易忽略掉本身的主觀緣由 (就像喜歡說 "豬同樣隊友" 的人, 不多總結本身是否是有問題, 是否是有失誤, 全部失敗的緣由就這樣一廂情願的歸結到隊友身上了.)
你容易忽略掉環境是能夠被你改變的(好比我能夠爲了學習英語 "見老外就上", "從身邊人下手", 甚至我能夠 "自我安慰", 這已經從某種程度上改變了我英語學習環境惡劣的現狀, 若是你什麼都不作, 你只會是停留在那個依然惡劣的環境裏.)
不要太在乎別人的眼光, 那樣會讓你作事畏首畏尾, 效率低下. 堅持你認爲對的事情. 我狂練英文的那段時間裏, 遭受了無數異樣的目光和議論, 有以爲你裝逼的, 有以爲你傻逼的, 有以爲你賣萌的(那個時候彷佛還不流行說賣萌, 懂那個意思就行). So what? So f*cking what? 我有什麼損失嗎? 只要本身明白本身不是在裝逼, 賣萌, 是爲了一個正確的目標努力, 堅持吧... 解釋太浪費時間, 直接原諒他們的誤解, 寬容一點. 至少, 我是這麼幹的.
多說 "Let me take a try!", 少說 "It's impossible!", 至少我所以受益不淺.
什麼? 這一篇看起來彷佛都在談英語學習? 並且盡然沒有談到薪水的增長? 是的, 這足以見得英文有多麼重要. 它對我下一次的重大轉折起到了舉足輕重的做用, 並且下一次的轉折能夠用飛躍來形容, rate提升接近10倍. 這裏先賣個關子, 咱們下一篇接着說.