美文网首页程序员征服世界工作程序生意
我如何把薪水从 50人民币/天 提升到 100美元/小时的 (2

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

作者: poshboytl | 来源:发表于2013-12-03 14:14 被阅读3117次

    此文来源于我的blog

    Monroe.jpgMonroe.jpg
    接上篇: 我如何把薪水从 50人民币/天 提升到 100美元/小时的 (1)

    那次重构比我想象的快了不少,也就持续了两个来月. 当时整个项目的代码和流程都已经发生了翻天覆地的变化, 就给一些简单的数据吧, model的代码行数从之前的几十行变成了6000多行, 现在想想都疑惑之前这么多代码都堆积在哪里的? 测试的代码也从几十行提升到了 10000多行, 测试覆盖率也从之前的0提升到了80%多. 只看行数可不行, 我们得说说比例. 代码和测试的比例大概在 1:1, 从比例上来看, 还算是比较匀称的.

    匀称? 怎么感觉是在说身材? 其实硬要这么比喻, 也是恰当的.

    你可以把这个比例理解为女孩子胸围比臀围, 大概 1:1 是非常匀称的, 如果接近 1:2 那么已经说明你有过度测试可能, 从另外一个角度看, 说明臀部过大(或者说胸部过小). 如果已经达到了 1:3, 那么请你尽快咨询好最佳逃脱路线, 不然这一屁股坐下来后果不堪设想...

    说来我当时就被这一屁股坐过, 死得很惨. 那时我追求所谓的测试覆盖率100%, 严重拖延了开发进度, 导致新版本没有如期发布.
    后来被客户怪罪, 还牵连了 Tim. Tim 倒是没有怪我, 但指出了我过度测试的地方, 让我以后注意.

    并且告诉我, 好的工程师不是只会"追求极致", 而是懂得如何在 "质量" 和 "成本" 上 make a right trade-off.

    focus.jpgfocus.jpg

    现在回忆起来, 这两个来月我是幸福的, 第一次体会到这种百分之百专注在一件事情上的快乐. 从早上一睁眼就无时无刻不在思考项目上的问题, 我的修改是不是让代码变得更好了? 这个地方如何抽取? 为什么先写测试会帮助我做出更好的设计? 为什么预计到变化这么大, 依然坚持重构而不是重写?....

    无数大大小小深深浅浅的问题时刻盘旋在我的脑海里. 刷牙, 吃饭, 坐车, 走路, 甚至连蹲大都不放过我. 每天除了回家陪老妈瞄几分钟韩剧, 其余就没闲着过. 熬夜加班更是家常便饭, 虽然很多时候觉得自己很累, 但是看着事情一件一件做完, 自己一点一点成长, 那真是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 里断断续续的传过来...

    love_letter.jpglove_letter.jpg

    我承认, 每当他说话我就开始打酱油了. 不过幸好的是... 我还有他: 我的老板是个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. 听了很多八卦, 非常开心, 同时真的感叹, 这世界真小..
    
    1. 从身边人下手!

    当天答应了 Calvin 之后, 我又单独找他聊了一次. 谈话的内容是我希望以后所有我和他之间的交流都用英文, 特别是涉及工作和项目时. Calvin非常爽快的答应了, 而且他还说会以正常的语速和表达来和我交流. 如果我实在不懂的, 在以中文问他. 这样一来, 基本上项目里容易涉及到的英文和表达, 都可以和 Calvin 提前遇到. 用这个方法后还不到一周就效果明显, scrum meeting 上能听懂更多内容, 因为基本 scrum 上要谈到的, 我和 Calvin 在前一天已经谈过了. 这样在 meeting 上还能再加深一次印象.

    1. 自我安慰!
    所谓自我安慰, 顾名思义, 就是没人陪你的时候, 你就自己解决, 不是用手, 而是用嘴.
    
    其实很简单, 记得我那时有个电毛驴, 每天骑车上下班, 一共需要大概1个来小时的时间, 这时候除了骑车, 没别的事情可做, 于是我就开始自己和自己说英文.当然不是漫无目的的瞎说, 我心里会模拟一个开会的场景, 然后假设项目到达一个什么样的进度, 然后问自己一个问题, 接着自己再来回答. 而且回答要分各种不同的情况, 比如进度顺利的时候怎么说, 遇到问题了怎么说, 逐步推进直到到达目的地为止.
    
    这个方法有一个关键点就是千万别默念, 一定要说出来, 像你平时开会那样. 这是一个神奇的方法, 我不确定是不是我首创的, 但是非常有效.而后每次会议感觉都有那么一些意料之中且从容不迫的感觉, 回答也可从我先前的自我练习版里借鉴不少表达.
    
    这方法, 我至今都在沿用. 虽然不骑电摩托了, 但是我喜欢散步, 所以散步的时候我多半都会这样来练习自己的口语, 把自己在思考的问题用英文说出来, 或者假设自己在某个英文的 conf 里演讲, 怎么介绍自己, 怎么回答别人的提问等等....
    

    除了以上三个最重要的方法, 我也做了很多其他的事情, 比如我主动要求代替老板写会议总结, 每次先由我来写, 写了以后发给老板 review, 然后再发给客户和Tim, 这样自己就能确定是不是真的听懂了. 开始的时候很多地方没理解对或者是漏掉了重要的内容. 但是随着这么练习, 精确度可谓越来越高. 还有一些小细节, 比如我把所有系统都改成英文了(包括手机), 文章和书只看英文的, 每天听一个英文的技术演讲, 又学技术又学英文. 很多演讲我要听个 3-4次才能听懂, 没关系, 一天不懂第二天又来, 直到懂为止.

    就这样我坚持不懈的使用我这些偏方有一个来月, 终于迎来了老板离开后的第一个 Scrum meeting. 其实那天根本没那么惊天动地, 回想起来顺利得不行, 因为老板离开的前一周就已经不在 meeting 说任何话了, 他只是旁听, 所有的状况都要由我自己来解决. 虽然那天非常顺利, 但是我依然开心, 吃饭睡觉都在傻笑, 可能是因为获得了另一种"自立"吧!

    总结:

    1. 一个追求进步的工程师接触到一些新概念后, 比如测试, 比如OO, 比如REST 等等. 就很容易走极端, 测试覆盖率追求要100%, 要100%做 TDD, 追求极致的OO设计, 无法容忍看起来不 REST 的设计... 其实, 不计时间成本的追求极致是不好的, 但是又是进步青年难免会遇到的. 做软件越久就越明白一个道理, 其实做软件就是不停的在"成本"和"质量"上 making trade-offs. 这世界上没有完美的软件, 在有限的资源里, 能找到最佳的平衡点, 才是真正优秀的工程师.

    2. 英语对于一个软件工程师非常重要, 无论是你想学习最新的知识, 接触最顶尖的同行, 找到最优质的客户, 拿到你最想要的rate... 你真的离不开它(后面的文章你会更有体会). 如果你英文还不是那么好, 现在就开始学习吧, 尽量把学习英语和学习技术统一起来, 这样两不误是最好的.

    3. 不要抱怨环境, 学英语也好, 学技术也好. 他不但会影响你团队成员对你的印象, 而且时间一长, 你就会产生以下两个错误的认识:

    4. 你容易忽略掉自己的主观原因 (就像喜欢说 "猪一样队友" 的人, 很少总结自己是不是有问题, 是不是有失误, 所有失败的原因就这样一厢情愿的归结到队友身上了.)

    5. 你容易忽略掉环境是可以被你改变的(比如我可以为了学习英语 "见老外就上", "从身边人下手", 甚至我可以 "自我安慰", 这已经从某种程度上改变了我英语学习环境恶劣的现状, 如果你什么都不做, 你只会是停留在那个依然恶劣的环境里.)

    6. 不要太在意别人的眼光, 那样会让你做事畏首畏尾, 效率低下. 坚持你认为对的事情. 我狂练英文的那段时间里, 遭受了无数异样的目光和议论, 有觉得你装逼的, 有觉得你傻逼的, 有觉得你卖萌的(那个时候似乎还不流行说卖萌, 懂那个意思就行). So what? So f*cking what? 我有什么损失吗? 只要自己明白自己不是在装逼, 卖萌, 是为了一个正确的目标努力, 坚持吧... 解释太浪费时间, 直接原谅他们的误解, 宽容一点. 至少, 我是这么干的.

    7. 多说 "Let me take a try!", 少说 "It's impossible!", 至少我因此受益匪浅.

    什么? 这一篇看起来似乎都在谈英语学习? 而且尽然没有谈到薪水的增加? 是的, 这足以见得英文有多么重要. 它对我下一次的重大转折起到了举足轻重的作用, 而且下一次的转折可以用飞跃来形容, rate提高接近10倍. 这里先卖个关子, 我们下一篇接着说.

    相关文章

      网友评论

      • 绿萝吖:但是博主的奋斗经历真的很励志,大拇指竖起来 :+1: :+1: :+1:
      • 绿萝吖:Let me take a try!"……这个表达真的对吗。。不是let me try吗。。。

      本文标题:我如何把薪水从 50人民币/天 提升到 100美元/小时的 (2

      本文链接:https://www.haomeiwen.com/subject/vzgqtttx.html