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

转载 2013年12月04日 18:31:35

zz : http://terrytai.com/salary-from-50rmb-to-100usd/

这个标题看起来有点像标题党? 好吧, 我必须在全文开始之前就澄清一下这一点, 这是千真万确的事实. 我本可以只把一些结论贴在这里供大家参考, 但是那样显得太生硬且没有说服力. 所以我决定把整个故事告诉你, 并在每一篇的最后总结出结论, 这样会更轻松愉快一些. 我不敢说这个经历是否可复制, 但是我相信如果你的目标是做一个优秀的软件工程师, 软件咨询师, 或者是 freelancer的话. 它应该会对你有一些启发, 或者说借鉴的意义. 好了, 就让我们开始吧.

zealot.jpg

故事开始是在差不多六年前, 那时我还在大学, 和大多的学生一样, 每天玩玩星际, 打打篮球, 看看妹纸, 当然也帮系里写写程序(Java). 同样和大多数无知的学生一样, 都会犯一些认识上的错误, 比如, 我当时真的认为 Java 很酷。

直到有一天,不经意的看到一个视频 是 DHH 用 Ruby on Rails 15分钟建立Blog的视频(不能访问youtube的朋友可以看 youku 上的版本 ), 我被这个视频深深的震撼了, 实在是太cool了, 连续播放了5, 6次, 注意观察着每一个细节, 从操作系统, 到编辑器, 到每一行代码和命令, 一切都是那么陌生而又新奇...(如果我没记错,我第一次看爱情动作片的时候都没有这么仔细和认真)。

接着立马下载了Rails(on Windows,当时还是1点几的版本),并在当当订购了上面唯二的两本关于 Ruby 和 Rails 的书 "Programming Ruby中文版" 和 "应用Rails进行敏捷Web开发"

接下来的好几个月, 非常单纯, 看书, 敲代码(书里的代码我来回敲了至少有5遍,我几乎可以把那个“书店”的程序背着敲下来), 除了看书, 我还订阅了几个不多的Ruby/Rails Blog, 学习一些关于 Ruby/Rails 好的实践. 这个过程是痛并快乐的,那时我几乎没法请教任何人(我严重怀疑我是学校第一个学Rails的), 除了问人, 那时连搜索的资料都没多少. 现在回想一下,其实我走了很多的弯路,如果换作现在,我相信这个学习的时间可以再大大的缩短的.

hardworking.gif

差不多自学了有5-6个月, 并自己敲了个论坛和博客程序后, 我决定出门去找个实习的机会. 看看真正世界的工程师是怎么玩的. 这种感觉很强烈, 就像我初中玩星际时, 除了和同学玩局域网, 总是想上战网上看看别的高手是怎么玩的. 如果记得没错, 那时我才刚刚上大三, 决定这么早出去实习实际上和家庭也有一定关系, 我迫切的想要自立. (具体的原因 is a secret)

我所在的城市只有两家用 Rails 的公司, 我投了其中一家。没想到直接就中了, 原因也很简单. 他们从来没有期待过能找到一个懂 Rails 的人, 他们都只是想的招进来再培养. 既然有个现成的, 那肯定得要了. (至今这种情况在很多地方都很普遍)

50.jpg

那个美女HR给我说得很清楚,我还没毕业, 所以只能按照实习生的标准给我发工资, 算下来也就是50人民币一天. 07年成都的物价还是蛮低的, 50一天基本可以吃饱喝足了. 记得当时还签了不少文件, 我也没太注意细节, 只是不断的确认工作内容是写代码,不是援交什么的就好。现在想起来,我当时确实想多了, 50人名币一天做援交, TM会有人会做吗? 至少应该60嘛.

办好入职, 来到办公桌, 下载我要做的第一个项目, 这个项目是一个社交应用,一个同事, 让我看看代码, 不懂的地方问他. 下载代码的时候内心非常紧张和激动, 希望看看运行在真实世界的代码到底长什么样.

jy.jpg

结果当我仔细翻看代码后, 大失所望, 这个代码基本违反了所有我在先前学习到的最佳实践. 我觉得这个是有难度的, 不亚于用枪兵甩地刺, 不亚于甩狙爆3个头, 不亚于蓝胖子连续10次出四倍.... 我沉默了很久, 在思考是保持沉没,还是去找同事问个明白,最终,我还是鼓起勇气,决定去和同事表白 ... oh, 不是,是说出我真实的想法。

轻声的走到同事旁边, 低声的说道: "你好, 有几个问题不太明白想请教一下. 请问为什么model不申明 hasmany 和 belongsto 的关系呢, 这样就可以用 user.posts 而不用自己写SQL来找了啊? "

同事: "哦, hasmany 和 belongsto 这种东西没什么用, 影响性能, 你不知道吗? 你没用过 Hibernate 吗? ”

两个反问句直接塞住了我的喉咙, 我保持沉默无言以对, 少时缓和后又接着问下一个问题...

我: "那我想再请问一下, 为什么这个地方所有的逻辑都放在 controller 里呢? 而 model 完全是空的, 这个地方的逻辑是不是可以移动到model里去会更好一些?” 其实我略微有夸张, 严格来讲, model还是有两行代码, 并不完全是空的:

 class User < ActiveRecord::Base
 end

同事变的很不耐烦道: "这个你不懂,等你工作几年有经验就懂了." ...

这回答让我愣在那里久久回不过神来, 第一次感受到, 原来真实的社会这么恐怖. 当我意识到我的问题不受欢迎时, 我比较自觉的回到了自己的座位. 心想以后和他当不了朋友了, 至少基友是肯定当不了了.

boss.jpg

接着, 我把项目的几乎所有功能都跑了一遍, 惊奇的发现, 它尽然能跑, 而且基本的功能也都实现了. 内心突然开始纠结一个问题, 到底是能跑就够了? 还是只能跑还远远不够呢? 还没等我想清楚, 公司的老板(男)突然叫去旁边的小房间:

问道: "代码都看了吧? 你觉得代码写得如何?"

我心里犯着嘀咕, 我是应该吸取刚刚说实话的教训呢, 还是应该继续不撞南墙不回头呢? 我猜如果得罪了他, 可能明天就不用来上班了, 短暂的纠结后, 我还是决定说实话, 如果在一个不能说实话的地方呆着工作, 还不如早早回家洗洗睡了.

我硬着头皮说: "我觉得这个代码写得不是太好, 还有很多地方可以改进的空间, 比如 ... 比如..." 我不停的在屏幕上比划着。“我在想, 如果我是客户可能不太能接受目前的这个代码." (我承认, 我当时说话很委婉, 其实我当时是想说 "The code is shit!" . 但, 即使是说真话, 也要用正确的方式. 不然我估计我真可以卷铺盖回家了.)

老板听了以后非常吃惊的看着我. 眉头略微锁紧, 还直视着我的双眼. 你没猜错, 就和青春基友偶像片里演得差不多. 我当时非常紧张, 随时准备"落荒而逃"...

突然, 他大声道: "你说的太对了,客户目前就是对代码的质量非常不满意. 在这个代码的基础上改 bug 和加功能已经显得非常的吃力和缓慢. 虽然它现在能跑, 但是维护性已经极差了."

听了这番话, 心中大石落地, 原来他不是要和我搞基, 我自作多情了... 但同时刚刚心里的疑问也得到了答案. "代码只是能跑是远远不够的, 它必须要容易维护 (结构清晰,易读,易改)."

他接着说: "正好客户现在刚刚 hire 了一个在美国的独立咨询师叫 Tim, 远程参与到这个项目来对项目做大规模的重构. 这个工程师非常有经验, 他现在已经50多岁了, 你愿意和他一起参与到这个项目的重构中吗?"

我一听非常惊讶, 能和这样优秀的且有经验的人一起工作是我梦寐以求的. 而且 50 多岁应该不会有被潜规则的风险吧, 何况他还在美国. 其实当时内心还是很有一些不安,觉得自己经验还不足,不知能不能和这样的牛人一起工作,但最终还是硬着头皮答应了。

接下来的时光 ....

working.png

可能是我这辈子学习效率最高的时光, 接触了一大堆以前都没怎么听过的概念, TDD, Continuous integration, Pair, Scrum, Refactor, Deployment... 这里面任何一个单独的概念都足以写好几本书, 并够我研究上好一整子. 但可惜的是没有这么多时间让我先看完所有相关的书, 再开始干活, 于是边干边学成了我唯一选择. 先知道一些粗浅的概念, 然后开始干, 通过 Tim 的反馈再结合自己遇到的问题, 然后针对性的看书和 google 资料.

100.jpg

如此反复, 慢慢我已经可以基本跟上 Tim 的节奏了, 他也越来越喜欢我(不是那种喜欢). 并给了我非常不错的评价, 客户也因此非常开心. 这让老板对我刮目相看. 几乎快丢掉的一个项目尽然被挽回了. 于是我很快得到了加薪. 如果我没记错, 是增长了一倍, 达到了100人民币一天. 据说这已经是公司给我破例了, 因为实习生是拿不到这个数字的. 我当时真的非常开心, 我可以不需要老妈给我一分生活费了, 这意味着我某种程度上自立了, 最重要的是我觉得我真的学到好多东西, 我做出的贡献得到了认同.

这里让我简单的总结一下第一次加薪的原因吧:

  1. 代码仅仅能工作是远远不够的, 它必须优雅易读且易维护. 能让代码工作的人这个世界上太多了, 你放心吧. 绝对不缺少你一个, 就连 model 里只有两行代码的项目, 它不也可以工作吗? 你要想变得更有价值, 那么你必须要做到, 不仅让代码工作, 而且要写出优雅易读且易维护的代码.

  2. 在工作中和同事一定要说实话, 但是说实话一定要注意方式 很多人以自己不撒谎为"借口", 就常常赤裸裸的说出一些很让人难以接受的话, 伤人无数, 还自以为这是正义的. 其实你错了, 说实话也需要正确的方式, 特别是在你和其他人合作完成项目的时候.

  3. 不要期望看完了书再开始做事, 边学边干才是高效的学习方式 我越来越觉得这是唯一的学习方式了. :p

  4. 工作方式和流程非常重要, 特别是当你和其他人合作的时候 很多程序员一提到流程二字就不削一顾, 认为自己是 geek 是hacker 怎么需要谈论这种东西. 再加之众多咨询公司近几年狂炒这个话题, 确实让人听着就有点反感. 抛开这些让人不愉快的表面, 本质上, 一个团队要想做好事情,好的流程就是必须的. 除非你永远都一个人工作.

  5. 掌握一门相对小众而又不那么太小众的技术, 对薪资是有一定的帮助的 虽然追求小众不是我当时学习Ruby/Rails的原因, 但是不得不承认, 它是一个结果. 我的确也因此收益, 这是一个客观事实. 如果以我当时的水平, 我是写php或者java, 那么我根本不一定能拿到这个实习的机会.

好了, 第一次提薪就讲到这里, 100人民币/天 不算多, 但是对于07年的成都,和一个实习生来讲已经是很让人满足了. 什么? 还不够? 别急, 我们下回接着讲. 看看我们怎么到 100美元/小时的.


相关文章推荐

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

这个标题看起来有点像标题党? 好吧, 我必须在全文开始之前就澄清一下这一点, 这是千真万确的事实. 我本可以只把一些结论贴在这里供大家参考, 但是那样显得太生硬且没有说服力. 所以我决定把整个故事告诉...

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

接上篇: 我如何把薪水从 50人民币/天 提升到 100美元/小时的 (1) 那次重构比我想象的快了不少,也就持续了两个来月. 当时整个项目的代码和流程都已经发生了翻天覆地的变化, 就给一些简单...

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

接上篇: 我如何把薪水从 50人民币/天 提升到 100美元/小时的 (2) 那之后的实习时间过得很充实,每天基本都会有新的挑战,然后再绞尽脑汁解决它们。每天都像在打boss,有大有小,理所当然...

普通用户通过udev漏洞提升到root权限

#!/bin/sh # Linux 2.6 # bug found by Sebastian Krahmer # # lame sploit using LD technique # by kcop...

思科ASR1000从ipbase提升到enterprise方法

在思科路由器IOS15.5极其以上版本

李彦宏两会提议建立“中国大脑”计划,希望国家将人工智能提升到国家高度

今年全国两会时间已经到来。3月2日,澎湃新闻(www.thepaper.cn)获得全国政协委员、百度公司董事长兼CEO李彦宏准备的两份提案:一份是建议全面开放医院挂号号源,让病人找到最合适的医生;一份...

[JavaScript] Script 中 function, variable 的定义会提升到函数执行前面;但是,function 中定义的 global variable 则不会被提升

1、Script 中 function, variable 的定义 会提升到函数执行前面 2、但是,function 中定义的 global variable 则不会被提升 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)