我们如何录制 Teahour.FM Podcast

最近一直有人问关于如何录制 Podcast 的问题,多年前写过一篇文章介绍我们如何录制 Podcast ,不过那是太久远的事情,那时用的大多软件只能叫『上古神器』了。

时至今日,很多工具已经有更佳的替代品,所以这里我打算重新写一篇博客,讲讲我是怎么录 Teahour.FM 的。

 

硬件方面

电脑我使用的是 MacBook Pro (Retina, 15-inch, Mid 2015),耳机我比较随便,经常会换不同的使用。

关键在于话筒,话筒我有两个,一个是 Blue Microphones Yeti Pro ,这个体积相对大一些,放在家里用。

另一个是 Shure MOTIV MV 51, 这个其实也不小,但是携带比 Yeti Pro 还是要方便不少。

如果你觉得一来买这么贵的麦克风不划算,其实苹果的自带耳机也是可以的,毕竟先做好内容才是王道。

但是你用苹果自带耳机时有一点要注意,麦克风的位置很容易磨擦到衣服,发出难以入耳的声音。

 

软件方面


因为 Teahour.FM 大部分情况是远程录制,所以我们主要是使用 Skype + Call Recorder for Skype 。

Call Recorder 本质上是一个 Skype 插件,非常好用,录制效果也是杠杠的,理论上还支持视频录制,不过我做 Podcast 并没有这方面的需求。

如果你的播客无需远程录制,那么 QuickTime 自带的录音功能就已经完全足够了。

后期方面,我是使用 GarageBand + Forecast

GarageBand 我就不用多做介绍了,虽然不是最专业的后期软件,但是对于绝大部分 Podcast 是完全足够了。

这里我重点说说 Forecast, 这真是个不错的软件。这个软件主要是给最终的音频文件加上封面和章节信息,非常简单和好用。虽然并不是所有的播客软件都支持章节,但是个人觉得还是蛮必要的。而且添加封面和版权信息对于一个相对专业的播客也是应该要的。

服务方面

就发布平台来讲,这里我只推荐通用平台,主要是两个平台,一个是 iTunes 一个是 Google Play. 推荐通用平台是因为大多的客户端都支持,也更加开放和自由。如果你把播客投放到 iTunes, 那么一个网站来 Host 你的 feed 和 音频文件是必须的。拿 Teahour.FM 来讲是用一个静态网站框架 Middleman 搭建的,当然代码也是开源,如果你想用 Middleman 自己写自己的播客网站,那么你可以参考 Teahour.FM 的代码

假如你不会写代码,那么我强烈推荐你使用 Fireside, 它是一个播客托管服务,可以方便你发布 Podcast 到各个播客平台。这个项目的创始人是 Dan Benjamin,同时也是  5by5 的创始人,所以他应该是世界上最懂怎么做 Podcast 的人之一。而且他也把自己经验通过 Podcast 的形式分享出来,这个 Podcast 叫 Podcast Method。除此之外他还是个非常优秀的开发者,想当年我还是看他的文章怎么在 Mac 上装 Rails 呢。

总结

Podcast 是我很喜欢的一种媒体形式,所以很早就做了 Teahour.FM, 但是这么多年过去了,整体来讲中文内容还是匮乏的。我个人是希望能有更多的优秀中文 Podcast 出现。希望这篇文章能给蠢蠢欲动的你点燃最后一把火…

最后祝你做出优秀的 Podcast.

 

 

 

 

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


 

这是一篇迟到了两年的更新, 这两年陆陆续续收到了很多人给我回复”太监”. 其实我当时还并不知道用“太监”来形容”无下”文的梗, 所以我还专门挑选了几个读者给他们回信, 并好奇的问道: “朋友, 你是怎么知道小学别人给我起的外号的?”. 读者当然是一头雾水, 并给我解释了”太监”只是说文章, 没有说我之意.

是的, 我姓 “太”, 小学时大家喜欢用姓来起外号, 我除了获得那种温暖的 “太阳”, “太太” 之类的外号之外, 也难免收获 “太监” 这种恶心的外号. 其实我还是看得很开的, 因为我知道, 等我未来找到了 “太太太”(别笑. 说不定太太太就会是你. 但, 你得是个女的), 生了儿子, 我会给他取名 “太子”, 把被占的便宜通通给朕占回来.

俗话说得好 “Better late than never”, 虽然是迟了, 但是我还没有自暴自弃. 因为我知道后续的故事那是更加精彩的, 所以我一定要分享给你.

那次上海之行回来后, 我正好面临毕业(09年), 和大多数应届毕业生一样, 我将面临对事业和爱情等现实问题的诸多抉择…

事业上, 当时公司的老板越来越是器重我, 转正应该是顺理成章的事. 而薪水也大概会落在 3.5 – 4k左右人民币/月. 这一切对09年的成都应届毕业生来说还是不错的. 但不知为何, 心里还是充满着一些犹豫…

两件重大事情, 让我做出了最终的决定…

事件一: 和李华顺的面基

李华顺(huacnlee)的作品挺多的, 是个非常优秀的 Ruby/Rails 工程师. 他的详细信息可以参看他的个人网站. 简单的介绍他是 RubyChina 的创始人加管理员之一, Ruby gems 在中国的镜像也是他搭建的 https://ruby.taobao.org (后来更新为 https://gems.ruby-china.org), 他为中国的 Ruby 社区做出了很多的贡献.

他和我差不多同龄, 当时也是在成都用 Ruby/Rails 做开发, 是他们 Ruby 组的 team leader. 当然, 我那时也是我们公司 Ruby 组的 team leader. 所不同的是, 他除了自己还有别的人可以 lead, 而我只有自己可以 lead. 我们的认识是通过网络. 常会在网上讨论讨论技术问题, 毕竟那时圈子太小, 没什么人可以讨论, 所以能抓住一个那真是非常开心. 虽然彼此都在成都, 却未曾蒙面. 一直到他透露出一点微弱的想换工作之意, 我才立马忽悠他来我们公司, 因为我一个人写 Rails 实在是太寂寞了. 这种感觉犹如冷宫里关了几年的嫔妃, 突然看到一个热爱 Rails 的精壮男儿, 那小心脏扑通扑通跳得厉害, 真叫一个野猪乱撞… 在我再三 “安利”, “玫琳凯”, “康宝莱” 之下, 他终于决定来面试了.

 

那天, 成都的天气格外的晴朗, 朵朵白云很不真实的挂在碧蓝的天空上, 这种晴朗在成都是极其少见的, 这是一个 95% 都是阴天的城市. 所以显然 God 导演为了这场戏做出了些特别的安排.

手机(魅族M8)响起, 短信内容: 李华顺: “我已经到楼下, 下来接下我吧.” 我欣喜万分, 立马起身, 合上电脑(MacBook 小黑, 现在已经绝版了。), 整理了一下自己的发型和衣领, 闻了闻左手手腕内侧已渐渐褪去的香水味. 是的, 我去和女朋友约会也最多就是如此了, 可见我已经为这次网友见面做好了精神上以及肉体上的双重准备. 我迅速乘电梯下楼, 冲出了大楼的大门. 迎面就看见了他.

华顺 -- 没有我想象的那么高大和精壮, 反倒有点偏瘦弱了, 他穿着一件白底黑细条纹的 JACKJONES 衬衣(别拿现在的眼光看哟, 这在当时的年轻程序员眼里, 已经算是时尚时尚最时尚了), 显得本来皮肤不白的他更加的黝黑, 正脸留了草草几根胡须, 比照片显得要成熟了不少, 兼具了漏气版李晨和拉长版王祖蓝的气质… 说一点都不失望是骗你的, 但是我是一个走心的人, 这一点点障碍是不能阻止我的…

领着华顺来到办公室, 带领他简单的参观了一下当时还未曾流行起来的”开放式”办公环境, 然后就立马把他领到了”小房间”, 开始了我们的”深入交流”. 虽然我们是第一次见面, 但其实我们早已是你知我长短, 我知你深浅了. 所以所谓的技术面试, 就完全是走一个形式罢了. 我们谈论更多的是技术发展以及个人发展的问题, 我也给他分享了一些去参加 Ruby Conf 的见闻, 得出了一个共同的结论, 当时成都的 Ruby/Rails 环境, 相比上海真的是差得太远. 成都这边应该也抱起团来, 至少应该开始组织社区活动, 把优秀的工程师给集中起来. 我也同时透露了想打造成都 No. 1 Ruby 团队的想法, 所以非常希望他能加入一起建设这个团队.

我们”深入交流”长达两个小时, 累得已是两脚发软,拖着疲惫的身躯, 还是把华顺送上了车. 累是累,但内心还暗喜, 以后有望打造成都最好的 Ruby 团队了. 之后我给我的老板和HR对华顺大加赞赏, 说是到目前为止公司面试过的技术最优秀的工程师了, 心想简直稳得不行. 犹如敌法, 幽鬼, 虚空, 幻刺, 火枪的近卫20分钟破了对方三路, 告诉我怎么输? 当然, 除了第一轮的技术面试, 后面还需要被 HR 和 CEO 面试, 一共是三轮. 所以我还需要在耐心的等待一段时间.

大概一周之后, 我收到了一个会议预约, 内容是商量华顺的面试情况. 心情大好, 那天下午基本没有做太多的事情, 一直是在期待这个会议. 早早就坐进了会议室,等待 HR 和 Calvin 的到来, 这感觉如同高考后等待成绩一般, 但即便如此, 还是稳得不行…

Calvin 一如既往的准时到达, 简短的问候之后就开始了正题. 首先是让每个人阐述自己面试后的印象. 当然, 我除了赞扬就只有赞扬了, 完全是一副被塞了红包的架势. 叙述完后就开始投票, 当时的公司采取的是一票否决制. 让我大惊失色的是, Calvin 尽然投了反对票. 理由是因为他觉得华顺英语不好? 我当时惊呆了. WTF? 我立马开始解释大多数程序员只是”说”可能有问题, 但是写和读是肯定没问题的, 何况和客户交涉的事情并不是需要每一个人做啊? …..

最终, 我的努力没有起到效果… 华顺就 TM 这样被我们公司给拒绝了. 我所有的努力也白费了。那一天回家的路上, 一直在思考今天发生的一切,想起 Calvin 还在会议上说, 以后以招 Java 和移动的程序员为主. 我一心想把公司打造成成都最强 Ruby 团队的梦想看来是破灭定了. 我们公司居然会因为这么一个我看起来可笑的理由把如此优秀的人才给拒掉. 那是我第一次深深的怀疑我是不是要继续呆在这里….

事件二: 原来还有这样的公司

那天心情大坏, 回家后立马在推特上发了句牢骚, 说自己想换工作了.. 结果没过几分钟收到了上次去 RubyConf China 认识的 Daniel 的回复. “这种事情可不好在推特上说,你前雇主看到可不好,你gtalk是什么?我和你私聊一下… ”.

这里得给 Daniel 童鞋一个特写,他中文名叫 吕国宁,是 Shanghai on Rails 和 后来的 RubyChina 的第一发起人。 中国 70% 以上的 RubyConf, meetup 都是他组织的。 这里的 70% 当然不精确, 这不是为了突显他的牛逼吗? 这里剧透一下,他就是后来和我一起主持 Teahour.FM 的 Daniel.

不知道说这是一次改变我一生的谈话是不是有点矫情… 但事实的确如此. Daniel 这个童鞋非常热心, 现在看来,说他是社区第一知心哥哥,我相信不会有人有意见。无论你是男的还是女的,他都不挑,你懂的。:p

他仔仔细细的问了我现在的工作情况和遇到的困境. 我告诉他自己遇到了天花板, 而且本来想打造一个当地的强大团队的计划也泡汤了, 有点想去上海或者北京闯荡一下, 也顺带想咨询一下他上海的环境和情况.

我们当时聊得很 happy, 很基情四射。 涉及技术,他在异地的生活, 我在公司的经历…. 无所不谈….

当我们已畅谈了有半个来小时后, 他突然问了我一个问题, 如果有一个机会可以让我不用离开家乡, 但是又能和一群世界范围内顶尖的 Ruby 工程师一起工作, 我有没有兴趣.

What? 不会是逗我玩儿吧?

Daniel: “你听说过 Intridea 这个公司吗?”

什么? 这可是我当时心目中 Ruby consultancy 三剑客之一 (thoughtbot, Intridea, Hashrocket), 我当时在公司的项目里有大量的 gem 和插件出自于这几家公司.

我: “当然知道, 太有名了, 你不会是要介绍我去这里吧?”

Daniel: “这家公司在华盛顿特区, 但是他们在全世界范围内招人, 最近正在从中国招人, 我已经加入了这家公司, 如果你有兴趣的话也将和我一起成为这里的第一批员工. 这家公司信奉 remote working. 员工只需要在家里就可以上班, 不要说在中国, 即使在美国的员工, 也都在自己家里上班… 这个和 freelancer 很像, 但区别是这是一份全职的工作…”

我 TM 惊呆了, 还有这种公司? 在那个年代, 作为一个学生, 我的确是纯真而孤陋寡闻的… 什么remote working? 什么 freelancer? 在家里就行? 那岂不是没有被潜规则的风险?

我: “天, 我不能有兴趣更多…”

Daniel: “那你先发一份简历给我. 要英文的.”

接下来一天, 我就在家憋大招了… 我知道我的经验在那些久经沙场的工程师看来是毫无优势的, 所以我唯一的出路就是展现我的基情吧. oh, no, 是“激情”. 因为我是真的热爱技术, 热爱互联网, 即使我还不足够优秀, 但是我有激情去学习和进步, 我只需要把我的真情实感写出来就好, 能成则成, 不成也没什么遗憾的. 毕竟自己刚刚毕业, 还有太多需要学习.

如下就是我的简历(有兴趣的看, 没兴趣的可以略过), 现在看起来 英文真是蹩脚的可怕, 内容也好是稚嫩. 但是重新读来, 我依然能感受到我当时对编程和互联网的激情, 这一点至今都毫无褪去….

Basic information: Name: 太檑 (Terry Tai) Gender: Male Date of birth: 1985-04-19 Education: BENG Employment Objective: Ruby/Ruby on Rails programmer Gtalk/Email: poshboytl@gmail.com

Self-Introduction:

When I saw the screencast which is a tutorial about how to create a super simple blog in 15 minutes 3 years ago. I was deeply attracted by the power of Ruby on Rails. I can’t stop making Web applications by using Rails these three years. Because I love the Internet, and also love using the best tools. In my mind, the Internet has changed our life a lot in the passed several years. But I think it’s still not enough, there is also more potential chances to go further. I really wanna be the person who can use my keyboard to create products to change people’s life with my team members.

Currently I’m the Ruby team leader at the Omniquest International in Chengdu. I think I have the capability of taking charge of a department alone, including architecture design, coding, communicating with customers. I’m familiar with Agile process and practice, I hold the scrum meeting every day, use the agile practices like TTD (Test Drive Development) and the CI (Continue Integration) in my team.

I’m enjoying using Textmate writing Ruby on my laptop in a comfortable environment. I believe work is a kind of fun. I have the passion to use and learn new things if they are nice and neat, like MongoDB, Couch DB, Git, Rails 3, Phusion Passenger, Rspec and so on.

Project Experience: ….

简历发出的第三天我就收到了面试通知, 面试是在线通过 Skype 进行的. 第一个面试我的是 Intridea 在中国的第一个员工 — Dingding, 他后来成为了我的创业合伙人. Dingding 是一个说话特别简短的人, 所以他问问题通常都极度简洁但又切中要害, 所以整个过程 90% 都是我在说话, 但是由于我还算健谈. 所以整个过程还是非常的 nice, 我觉得正是我们的互补, 为我们后来的基情埋下了深深的伏笔….

后来还经历了两轮美国工程师的面试, 这两次都是全说英文面试, 还好还好… 我在上一家公司打下了良好的基础, 用英文泡妹子不行, 聊技术那还是杠杠的… 现在你是不是理解为什么我会花一集的时间来聊英语学习了吧?

最最有意思的就是最后一轮面试了, 最后面试我的是 Intridea 的 CEO Dave Nafis. 距离第一次面试已经两周过去了, 等待的心真的好苦. 那天提前就沐浴更衣好, 在家里的办公桌等待着面试的到来. 正当此时, 母后尽然走进房间, 手拿一盘水果.

母后: “我在旁边看你面试? 怎么样?”

我: “什么? 这也要看?好啊. 不过这次是英文面试哦?“

母后: ”没关系, 我坐旁边给你加油.”

我:”好,别喊出来就行。” 怪笑….

和母后的打趣, 让我紧崩到极点的心,略微的放松了下来….

正当此时,Skype 铃声想起…. 我和 Dave 开聊了…

(大意)

Dave: “你好, Terry. 还好吗?”

Terry: “非常好, 你呢?”

Dave: “我也很好, 谢谢。 你住在中国的哪个城市啊?”

Terry: “成都, 是一个中国西部的城市, 算是西部最大的一个城市吧.”

Dave: “有意思, 我听说过这里. 喜欢吃辣的地方.”

Terry: “哈哈, 是的。这里以美食和美女闻名, 有机会来成都玩玩啊.”

Dave: “一定, 一定. 但是, 你说来玩是指美女还是美食啊? ” (我喜欢这种美式幽默….)

Terry: “哈哈哈哈, 我….. 当然说的是帅哥….” (本来是想学人家美式幽默, 但是一说就后悔了,这不是跪求被潜规则吗?)

Dave: “哈哈哈…. 对了, 你是不是在美国待过? 我听你英文发音很棒啊.”

Terry: “是吗? 谢谢. 其实没有, 我去过最远的地方就是中国的北京了.”

Dave: “那你是怎么学英文的?”

Terry: “和大多数中国人一样, 在学校里啊. 不过学校学了 10年 感觉当不到最近一年, 因为这一年我和一个美国工程师 Tim 合作做了一个项目. 为了和他好好的合作, 我拼命的在自学…” (很自然的导向了我当时引以为傲的项目)

Dave: “有意思, 能聊聊这个项目吗?”

…..

…..

Dave: “我看你简历里项目经验还是挺多的… 你工作几年了?”

这个问题我楞了一下, 因为我才刚刚毕业. 怎么回答呢?

Terry: “事实上, 我才毕业一两个月. 不过我大二下期就是在外面实习并做各种项目了. 如果这个也算工作的话. 我差不多有两年多工作经验吧?”

Dave: “Cool, 这当然算了. ”

…..

…..

Dave: “最后我们聊聊你对薪水的期望吧, 能告诉我一下吗?”

糟糕, 我尽然没考虑过这个问题. 我心想上一家公司都是接近4000了, 这里怎么也得高一些才行吧. 我 mute 了 skype, 看向旁边的母后.

我: “母后, 问我薪水要多少. 六千你觉得怎么样?”

母后思索了一小会儿, 摇了摇头, 手用力的比出了一个八. 我表示有点惊讶, 觉得八千可能有点高了, 于是摇了摇头. 母后接着更加用力的摇了摇头, 更加用力的比了几下八. 好吧, 我认怂. 听母后的.

我打开了 Skype 的话筒…

Terry: “八千”

Dave: “嗯…… 你说的是人民币还是美元? 周薪还是月薪?”

Terry: “哦, 抱歉, 我说的是人民币, 月薪.”

Dave 当时 “hmmm….” 了很久没说话, 然后突然感觉他也 mute 了一会儿…

Dave: “好, 我记下了. 今天我们就先聊到这里吧, 再见.”

Terry: “好, 拜拜.”

当时结束的很匆忙, 而且听起来 Dave 的态度也有点奇怪. 我估计我是报价报高了.

会议结束后,我用一种略带责怪和遗憾的眼神看向母后.

我: “我好像是价格报高了, 说了后, Dave 的态度好奇怪.”

母后摸了摸我的头道: “没事, 你值这么多…. 我还想让你说 1万呢。”

我:”一万?我又不是卖身。”

母后:”卖身?那还是报 3000 吧。”

说完拿着果盘扬长而去…..

…..

那天晚上没睡好, 心想每一步都做得这么好…. 结果最后薪水的问题上栽了跟头. 哎, 我就是这样一个人, 总是会忘记考虑钱的问题… 连谈恋爱也是在这上面栽的跟头…. 那天我犹如失了恋一般静静的躺在床上…. 失落的不行….

天还没万全亮,几乎没怎么睡着,索性就起来了, 还是习惯性的第一时间打开电脑. 一封邮件提醒跳了出来….

“CONSULTING AGREEMENT”…

急切的打开, 是来自 Dave 的信.

Dave 信里说,

“Terry, 昨天不好意思, 突然有个重要的事情结束的比较仓促. 你的薪水要求我换算了一下, 说实话…… 我不确定是不是我搞错了, 太低了. 经过我们工程师和我的评估, 我们可以给你提供 20 美刀/小时. 这是一个全职的工作, 所以你每天平均要工作八个小时. 我相信这样你会满意的.”

WTF? 20美元/小时…. 每天八个小时? 立马打开 Google 查了一下当时的汇率. 那个时候汇率还是 7 的年代呢…. 我去, 真的只是写代码吗?

20 × 7 × 40 × 4 = 22400 (人民币/月)

我不知道你有没有傻乎乎的对着电脑笑过…. 但是那天… 我对着电脑笑了一整天…..

是的, 这一段经历是以笑开始的… 但是… 过程可不是这么轻松….

未完待续…(从第四集开始, 以前总结的部分就交给大家了:P )

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

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

那之后的实习时间过得很充实,每天基本都会有新的挑战,然后再绞尽脑汁解决它们。每天都像在打boss,有大有小,理所当然经验值也在迅速的增长。这样的时光一直持续到这个项目快结束的时候。那时挑战感觉明显下降,一方面是技能上已经比较熟练,另一方面项目上也没有什么新的技术的引入,基本是 bug fix 和微调为主。不知是被虐惯了还是怎么的,突然的轻松下来让我非常不习惯。

于是我想利用那段时间把毕业设计搞了,其实毕业设计的东西我已经在学习 Ruby on Rails 的时候写的差不多了, 只是经过了这么久的实习觉得当时很多地方代码写的还不够好,所以想把它重构一下。因此也给老板提出每周只上三天班,其他时间就留在学校做毕业设计。

在学校准备毕业设计期间,一个偶然的机会遇到了以前教我Java的严老师。于是聊到了我实习期间一些情况,当时我对Rails大加赞赏,并和他讨论了不少细节,想说明这是一个真的不错的技术。他也听得津津有味,觉得很感兴趣,特别是对它的开发效率,所以他也在考虑是不是可以在自己的项目里用一用, 也会推荐他的学生看一看。

 

说来也巧那天刚聊完我回到寝室,就有几个同学和几个学弟来找我,听说我实习一直在做 Rails 开发,希望我能教教他们Rails。我当时很爽快的答应了,一方面是因为那段时间也相对轻松,另一方面,我倒是也想考验一下自己,是不是可以把一个自己知道的东西清楚的讲给他人听。何况能帮助到几个朋友了解一门我喜欢的技术那也算是一件不错的事情。当时我一直觉得自己从Rails社区索取太多,但是贡献不够。所以也把这一次的事情当成了一个回馈。谁知后来这事一传十,十传百,想要加入一起学习的同学越来越多,所以整个学习小组一起学习时看起来就像一个班在上课一样。

没过几天这事就传到了系主任耳边,然后请我去他办公室一趟,我当时还有点疑惑,心想这是聚众学习,又不是聚众其它,应该不违反什么学校规定吧?难道是因为偷偷用教室的投影仪播放视频?但是也都是播的正规的啊!脑子里冒着无数问号来到系主任办公室。

我: “张主任好。”

张主任:“坐!”

我: “张主任找我有什么事吗?”

张主任: “听说你在私下组织上课?” (怎么听都感觉我是个搞传销的)

我:“是的,但是其实也不能叫上课,是一个学习小组。我也是义务工作的,教大家学习一下 Ruby和Rails.”

张主任:“恩,你知道你上课的时间和四门选修课的时间都重了吗?导致你班上的人接近一半的人都是逃课去的?”

我霍然开朗,原来是因为这个事情来找我。

我立马解释道:“这个我还真没注意到,我们可以换时间的。”

张主任:“不用了…” (我擦,一听就是要解散我们秘密组织的节奏)

他停顿了一下十分从容的从旁边拿出一张纸,并递到我手上。(难道是要我写保证书?)

并接着说:“很多同学给我反应非常喜欢你这个课,说能学到很多实际的东西。以后你就把这个当课上吧,我可以提供给每个通过的学生两个选修学分。这是考勤表和成绩表,你还是要严格考情和考试,要及格的人才能获得这两个学分。还有你这样的实践课不要在普通的教室上了,我给你安排了机房,以后就在机房上课吧,多让大家操练操练,你选出一个班长,然后让他来负责安装机房的环境,并且关门开门就行了。还有,你以后在这个学校又是学生又是老师了,这在很多学校都是不可能的,也不要有太大的压力,我相信你能做好。”

我听了张主任这一席话,眼泪差点没掉下来,嘴里半天憋不出来一个字…

其实现在想想这个事情还觉得蛮不可思议的,特别是在中国… 前不久还在 google docs里看到当时学生的名单,感慨万千。

 

那之后生活又回归了以前的充实,努力的备课,努力的上课,努力的上班,努力搞毕业设计… 不同的是,脑子里不是只有一件事情了,而是每天都有三件事情需要我去做好。这个过程我还很花了一些时间来平衡。但是想想现在同时有三件事情都算是轻松的了,不得不说那次的锻炼还是挺有帮助的。

那段时间我发现一个非常有意思的现象,就是要把你已经懂的东西讲得让别人也懂并不是一件容易的事情。而把别人讲懂的过程实际上也是一种再次学习的过程,也是更加深入理解的过程。所以多分享一些知识给别人绝对也是对自己很有帮助的事情,分享在我看来是一个利己利人的行为,这也是为什么我后来写文章录视频做podcast 分享我知道的知识。

等那个课程结束也差不多是毕业前夕了,我继续回到了以前的公司全职的上班。不久也被提升为了当时Ruby组的 leader,还要负责当时的技术面试和新人培养。工资也给开了 4000 人民币/月。 这在那时的成都可是一个相当不错的价格了,而且那也算是我的第一次晋升,按理我应该高兴才对。但我却怎么也高兴不起来,工作没有以前的那种基情,哦不,激情。当然依然是保质保量的完成,只是内心中总是觉得不满足,有种撞到天花板的感觉,还有对现实还有很多不满足,或者说觉得还有很多更好的空间。

正巧那段时间第一届 RubyConf China 要在上海举行。我当几乎不假思索的就定了票,而且内心有一种说不出的兴奋,这种感觉犹如一个职业选手要去参加WCG一般,让人兴奋不已,我一直想看看中国其他Ruby玩家到底是如何玩的,每天是怎么训练的, 于是找老板请三天假去上海参加这次Rubyconf.

老板听后没有马上同意,并打开自己的outlook看了看,转身给我说:“非常不错,这样吧,你也不用请假了,我和你一起去,费用都由公司承担,票你帮我也定一张,我也去学习学习。这次我们过去可以多呆一段时间,我母亲在那边有一套房子,你可以和我住那里,我们可以和成都这边远程工作一段时间。”

Holy shit! 我已经不记得我当时的表情,但是我相信一定是非常惊讶的。 这不但是要一起旅游还是要睡在一起的节奏…

那次上海之行我特别想见的有4个人,Ruby语言的创始人 Matz, JavaEye 的创始人 Robbin Fan 和 财帮子的创始人 Robin Lu, 以及大会的发起人 Daniel Lv.

Matz 就不说了, Ruby的开山鼻祖,必须是要围观的。而 Robbin Fan 和 Robin Lu 是当时中国Ruby社区里我最敬重的两位程序员 + 创业人。JavaEye 和 财帮子可谓是当时中国最大的两个用 Rails 写的网站(当时最有名的 Java 社区网站竟然是用 Ruby写的,是不是很有意思?),也是因为有这两个网站在中国才向很多人证明了,Rails 不只是玩具,它可以做大型的项目。(是的,那个年代,中国很多人的想法还停留在 Rails 就是玩具不能用于真实项目的年代。)

想见他们还有一个理由是我和这两位罗宾以前还有些交情, 我大一下期(或者是大二上期,具体有点记不得了)的时候特别迷恋互联网,而且当时正是 Web 2.0 兴起的时候,我那时写过一段时间 Blog,内容主要是我对互联网和 Web 2.0的一些看法,所以取名为 “Terry 谈网”。 现在反过来看看以前自己写的内容,觉得很多想法其实挺幼稚的,不过我完全不后悔做了这事,因为至少我看到了自己以前的幼稚和后来的进步。 写了段时间后,发现自娱自乐已经不能满足我了,于是我想通过这个 Blog 认识更多志同道合的朋友(其实都应该算是前辈),和他们一起玩儿。所以我后来大多采用了采访的形式来写blog, 主要是采访业界一些不错的 Web 2.0网站的站长。 两位罗宾就是我采访过的对象,记得当时给这两位发邀请邮件之前心里都泛着嘀咕,“我一个屁学生,别人肯定都懒得搭理我。” … 但是最终我还是说服自己去试试,毕竟如果失败了,我也没什么损失啊。(后来想想这个和追女生其实是一个道理嘛)

关于 Robin Lu

对于这个 Robin Lu 可能很多社区里的新人都不认识他。因为他现在有点隐士的味道了,很少在社区里出现,连网上发言也少了,他最后发布的一个开源项目也大概是四年前了。当时他在网上那可以说是相当活跃的,无论是写文,发推还是开源项目。也是因为看了他很多东西,让我非常欣赏他。他曾今在 Sun 和微软都就职过,后来出来和朋友创业,开发了当时大名鼎鼎的财帮子并创立了他们自己的咨询公司。 总而言之我当时是非常敬重这个人,而这一次去有个很重要的任务是我要当面给他道歉。

我和 Robin 不得不说的故事:

那是一个月黑风高晚上,是我刚采访了 Robin Lu 的第二天晚上,而那几天正好是我将要和我的小伙伴去参加一个由成都信息工程学院组织的黑客大赛。那晚我正好在准备一些比赛要用的黑客工具,其中一个是我自己试着写的 SQL 注入侦测脚本。好不容易完工,还在学校教务网站试用了一把(登成绩的网站),成功找到漏洞,并把自己加入到管理员里,然后又立即把自己的帐号删除了。我就是试试是否能提权成功,还真没打算干什么坏事。 当时我也在学习 Rails, 也特别好奇 Rails 这个框架的安全性如何,正好那天又采访了Robin Lu,所以想用“财帮子”一试究竟, 于是就用我的性感小脚本在上面跑了一跑。结果没发现任何注入漏洞,我心里还暗喜,觉得 Rails 安全性还是挺好的。(当然,这和写的人关系也很大。)

谁知道第二天一开电脑,就收到了 Robin Lu的来信,信的内容大概是说,从日志中看到了我的行为,并表示没想到我采访他是为了要黑掉他们的网站(俗称社会工程学)… 而且坚定把我认为是一个黑客。

毫不夸张的说我边看那封信,眼泪哗哗的流。这种感觉很委屈,而且比被女朋友栽赃和某某女性朋友有一腿来得更让我不痛快。我记得当时我回了一封很长的信做解释,但是对方并没有再回,而且把我从gtalk上删除了。(看来和这个小伙伴以后没有办法一起愉快的玩耍了!)这件事情一直困扰我很久,所以我想利用这次上海之行给他当面道歉并解释清楚。

从上面的合照你应该不难猜到,最终我还是做到了!:)

 

见 Daniel Lv 是因为我知道他是上海 Rails 社区的组织者,我想从他那里学习一下如何组织社区活动,想到成都来也组织组织活动,心想我们大成都当时虽然用 Rails 的少,但是组织一桌麻将的人总还是够的吧。

而 Daniel 同学后来成为我同事加超级好的基友(一起睡过那种),说起来那次在上海之行就是我们的初次见面,现在回想起来就如同昨天一般。

那次上海之行真可以说是亮瞎我的氪金狗眼,长这么大还是第一次见到这么多搞 Ruby/Rails 的人聚在一起。聊了很多有意思的话题,同时也找到自己很多的差距。我知道自己还有很长的路要走,而要变得更优秀,我必须要和这些优秀的人一起工作。

所以那次回成都不久我就决定要换工作了,我打算背起我的小书包,带上我的真钞,去上海找一个有更多优秀的人的地方工作(东莞去不了了)。决定那天我还在推上发了一贴。结果 Daniel 同学竟然看到了, 然后回复了我 “这种事情可不好在推特上说,你前雇主看到可不好,你gtalk是什么?我和你私聊一下…” (后面的精彩内容我们就下回分解啦)

总结

  1. 多分享自己知道知识。 分享绝对是利人利己的行为,利人相信很容易理解,而利己主要是在于这是最好的建立你reputation的方式,并且也有助于巩固你已经学到的知识。 关于形式我觉得都可以尝试,教别人也好,博客也好,视频也好,写书也好, 公众帐号也好, 微博也好。不要觉得自己还没有准备好,因为你不去做或许你永远都等不到准备好的那一天。我大一就敢写互联网观察相关的文章了,说实话我现在回忆起来都很佩服我当时的勇气,但是我真的做了,虽然很多观点现在想想都觉得稚嫩,但是我的确因此认识了很多对我很重要的朋友。
  2. 即使在你工作缺乏激情的情况,除非你选择马上离开,否则你依然要保质保量的完成你的工作, 这才是一个写软件的人应有的专业态度。
  3. 想尽一切办法和更优秀的人一起工作,即使你可能只能当凤尾。(蒜泥也好,清炒也罢)
  4. 找到你的社区,加入他们,参加他们的活动。同一个社区的人总是有某种程度的相似性,你很容易认识那些和你有 common sense 的人。相信我这些人将在你未来的职业生涯里起到举足轻重的作用。
  5. 安全这种东西,任何框架都只能帮到你一部分。烂程序员用最安全的框架也能写出最不安全的代码。
  6. 研究黑客技术的时候,千万别找认识的人下手,最好自己搭个站来玩,避免引起不必要的误会. >.<

我如何把薪水从 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.

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

无数大大小小深深浅浅的问题时刻盘旋在我的脑海里. 刷牙, 吃饭, 坐车, 走路, 甚至连蹲大都不放过我. 每天除了回家陪老妈瞄几分钟韩剧, 其余就没闲着过. 熬夜加班更是家常便饭, 虽然很多时候觉得自己很累, 但是看着事情一件一件做完, 自己一点一点成长, 那真是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, 我当时有一种被调戏的感觉, 而且感觉无比的强烈. 不亚于我以前的女朋友(女的)给我写的约法两章:

  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. 听了很多八卦, 非常开心, 同时真的感叹, 这世界真小..

  • 从身边人下手!

当天答应了 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. 不要抱怨环境, 学英语也好, 学技术也好. 他不但会影响你团队成员对你的印象, 而且时间一长, 你就会产生以下两个错误的认识:
    1. 你容易忽略掉自己的主观原因 (就像喜欢说 “猪一样队友” 的人, 很少总结自己是不是有问题, 是不是有失误, 所有失败的原因就这样一厢情愿的归结到队友身上了.)
    2. 你容易忽略掉环境是可以被你改变的(比如我可以为了学习英语 “见老外就上”, “从身边人下手”, 甚至我可以 “自我安慰”, 这已经从某种程度上改变了我英语学习环境恶劣的现状, 如果你什么都不做, 你只会是停留在那个依然恶劣的环境里.)
  4. 不要太在意别人的眼光, 那样会让你做事畏首畏尾, 效率低下. 坚持你认为对的事情. 我狂练英文的那段时间里, 遭受了无数异样的目光和议论, 有觉得你装逼的, 有觉得你傻逼的, 有觉得你卖萌的(那个时候似乎还不流行说卖萌, 懂那个意思就行). So what? So f*cking what? 我有什么损失吗? 只要自己明白自己不是在装逼, 卖萌, 是为了一个正确的目标努力, 坚持吧… 解释太浪费时间, 直接原谅他们的误解, 宽容一点. 至少, 我是这么干的.
  5. 多说 “Let me take a try!”, 少说 “It’s impossible!”, 至少我因此受益匪浅.

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

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

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

故事开始是在差不多六年前, 那时我还在大学, 和大多的学生一样, 每天玩玩星际, 打打篮球, 看看妹纸, 当然也帮系里写写程序(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的), 除了问人, 那时连搜索的资料都没多少. 现在回想一下,其实我走了很多的弯路,如果换作现在,我相信这个学习的时间可以再大大的缩短的.

 

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

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

 

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

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

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

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

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

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

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

 class User < ActiveRecord::Base
 end

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

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

接着, 我把项目的几乎所有功能都跑了一

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

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

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

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

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

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

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

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

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

接下来的时光 ….

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

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

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

  1. 代码仅仅能工作是远远不够的, 它必须优雅易读且易维护. 能让代码工作的人这个世界上太多了, 你放心吧. 绝对不缺少你一个, 就连 model 里只有两行代码的项目, 它不也可以工作吗? 你要想变得更有价值, 那么你必须要做到, 不仅让代码工作, 而且要写出优雅易读且易维护的代码.
  2. 在工作中和同事一定要说实话, 但是说实话一定要注意方式 很多人以自己不撒谎为”借口”, 就常常赤裸裸的说出一些很让人难以接受的话, 伤人无数, 还自以为这是正义的. 其实你错了, 说实话也需要正确的方式, 特别是在你和其他人合作完成项目的时候.
  3. 不要期望看完了书再开始做事, 边学边干才是高效的学习方式 我越来越觉得这是唯一的学习方式了. :p
  4. 工作方式和流程非常重要, 特别是当你和其他人合作的时候 很多程序员一提到流程二字就不削一顾, 认为自己是 geek 是hacker 怎么需要谈论这种东西. 再加之众多咨询公司近几年狂炒这个话题, 确实让人听着就有点反感. 抛开这些让人不愉快的表面, 本质上, 一个团队要想做好事情,好的流程就是必须的. 除非你永远都一个人工作.
  5. 掌握一门相对小众而又不那么太小众的技术, 对薪资是有一定的帮助的 虽然追求小众不是我当时学习Ruby/Rails的原因, 但是不得不承认, 它是一个结果. 我的确也因此收益, 这是一个客观事实. 如果以我当时的水平, 我是写php或者java, 那么我根本不一定能拿到这个实习的机会.

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

如何开始你的 SOHO 之旅 (下)

没想到这个系列的上一篇文章受到了如此大的关注,很多朋友也提出了不少问题和疑惑,我也将尽可能的在这一篇或这个系列的未来几篇文章中给大家做出回答。这一篇blog还是让我们先按照主线来继续,来谈谈程序员开始SOHO的另外一条路:

加入一个允许在家工作的公司

需要考虑什么?

上一篇文章一出,就有人问道:“在中国能找到允许在家上班工作?”– 那是当然,因为我就曾在一家名叫 Intridea 的软件公司工作过两年多。并在这里结识到非常多的优秀的程序员,我的两位创业伙伴 Dingding, Ben 也都是在这里认识的。并且现在还有很多非常优秀的老朋友依然在这里工作得非常happy。你也许会说,Intridea不是一家美国公司吗?是的,有什么影响呢?作为一个打算 SOHO 的程序员你真的在乎你的公司是 based on 哪个国家的吗?当选择 SOHO 公司时,我个人认为你只需要考虑以下四个问题:

  1. 工作的内容是否是你感兴趣的
  2. 待遇是否让你觉得满意(不是我俗, 这个很重要。早日实现财务自由就靠它了 :p)
  3. 是否能结识有意思的,优秀的人
  4. 是否对你未来的职业发展有帮助

是的,如你看到的,没什么特别。你即使选择一家不允许在家上班的公司,你也仍然需要考虑这四个问题。但是区别在于你不用考虑如下问题了:

 

  1. 不用考虑这个公司在哪个国家,哪个城市,哪个位置,离你家有多远。 (依稀记得,流川枫当年就因为这个选择了湘北)
  2. 不用考虑是否会因为公司在外地而被迫离开你的爱人或家人
  3. 不用考虑到公司的交通是否方便
  4. 不用考虑公司是否需要打卡
  5. 不用考虑公司是否提供免费且健康的午餐
  6. 不用考虑公司是不是发是不是 Apple 或 Thinkpad 的电脑
  7. 不用考虑公司的转椅是不是200元一把在批发市场统一进货的(不但对你脊椎和腰不好,甚至有爆X花的风险哦!>.< )
  8. ….

当你挑选远程工作的公司时,你考虑的问题往往是更接近你工作的本质。不会被一些客观条件所束缚。换言之,你更容易找到你真正喜欢的工作。

怎么找到这样的公司?

 

不得不说,让员工在家里上

班的公司仍然是属于小众的,你也可以说他们是超前的。但是找到他们并没有你想像的那么难。我们要怎么找到他们?在回答这个问题之前我们必须要了解一下通常这样的公司有什么样的特点和价值观:

  1. 认为人才不一定就在你家附近,他很有可能在大洋彼岸的某个地方
  2. 不喜欢通过招聘网站招人,不喜欢看简历(或者说简历通常只起到参考作用)
  3. 懂得如何宣扬自己的价值观,通过自己的博客,Podcast, 写书,走出去到各种conf 或聚会做演讲或做交流
  4. 不喜欢繁重的流程,崇尚简单。敏捷对他们来讲更多是流在血液里而不是嘴巴里
  5. 他们大多是 Github 的用户 和 37 Signals blog 或 书的读者
  6. 崇尚开源

足够了,虽然共性或许还有很多。但是已经足够我们找到他们了。如 1,2 所说,参加当地的什么人才交流市场以及到什么联招聘网站投简历这种路数基本是没戏了。我知道或许大部分人是这么找工作的,但是很明显你是在找一个小众的东西,怎么能用一个大众的方法呢?来来来,让我来为你指出几条明路 😀

通过 Github 或 37 Signals 的Job board

如我上面第五点所说,这些支持 remote的公司或其员工,多多少少受到了 Github, 37 Signals 两家公司的影响。这一方面是因为 Github, 37 Singals 是两家价值观输出做得很好的公司,从而成为了意见领袖。另一方面就是他们本来就一直推动远程工作的发展,无论是工具上,流程上,方法学上他们都在做出很多的尝试和贡献。这不, 37 Singals 马上上架的新书不就是讲 Remote working 的吗?可千万不要错过哟。

话说回来,当这些公司需要发招聘信息时,他们通常很乐意选择他们十分认同的公司的 Job Board,也就是:

jobs.37signals.com jobs.github.com

是的,你可以说他们是这两家公司的“脑残粉”。但他们更重要的考虑是,他们认为在这两个地方发招聘信息更容易找到和他们价值观接近的人。你可能无法想象价值观接近对于一个远程工作的公司有多么重要。它意味着你可以节省大量的时间讨论什么是对的,什么是错的,它意味着你不知道为什么但是工作起来就是很合拍…

你可能会觉得这些 Board 中,很多并没有说明自己是支持远程工作的。是的,的确如此。但是很多没有提到,并不代表他们是不允许的。大胆问一下,他们是否支持远程工作。其实有很多是允许的,即使不允许你不也没什么损失吗?:)

BTW, 有空的时候看看这两家公司的东西,开源项目也好,blog也好,书也好。也让自己“洗洗脑”,这样和你未来的同事相处一定会顺畅很多…

通过社交网络

如第3点所讲,这些公司中大多喜欢表达自己的想法。他们的 blog,他们的 twitter… 你可以从这些地方入手找到他们。其实从他们发布的东西的内容和方式你就多多少少能判断这个公司是不是你想要的。并且不要羞于通过评论,@ 等方式和他们互动,进一步的了解他们。

也可以从 Github, 37 Signals 等一些著名Blog的评论中去寻找这些人的足迹,他们是不会错过评论一篇优质文章,并发表一些自己的观点的。和他们互动,认识他们。这就是一个好的开始。

通过参加conf

当一个公司意识到人才可能并不在你周围的时候,他们是非常乐意走出去的。Joel 在他的 blog 也提到。你要找到优秀的人才,那么你必须走出去。去那些技术的 conf, 去那些技术的 meetup。

而作为想要找到这些工作机会的人们,特别是远程工作机会的人。你也应该顺应这个趋势,去各种 conf 和 meetup 和他们搞个“邂逅”。(比如即将到来的 Rubyconf China 2013)相信我这些你平时认为的意见领袖和牛人比你想的要随和多了,勇敢的去和他们聊聊天,你一定收获会颇丰。说不定一个完美的工作机会就因为这个谈话而诞生了。还是那句话,如果失败你真有什么损失吗?

另外如果你能提交一个演讲,那将是一个更完美事情。在场所有的人将听到你的观点,你的演讲。你知道这意味着什么吗?这将意味着,他们或许会来找你聊天。而你,只要当他们来时表现得随和一点就行了,那么接下来很多问题都好办了 :p

通过开源贡献

还有什么比代码更能说明一个程序员的水平?如果你瞄准了一家公司,那么去 Github 翻翻他们家的箱底。如果找到一些你略微熟悉的开源项目,立即fork。试用,并想想有没有什么改进的空间。(比如你就可以拿我们的箱底开刀)

接下来的日子或许会过得有些辛苦。熟悉这个项目的代码,搞清楚它的工作原理,最重要的是摸清他们的开发风格。然后提交 PR,参与到这个项目的开发中。

只要有几个不错的 PR 被接受,并和维护者熟悉了。然后你可以投放简历到这家公司了。相信我你中标率将高于其他所有人。因为你已经证明了你自己,甚至你连编码风格都和他们公司差不多。他还有什么理由可以拒绝你呢?

其实通过开源项目方式来招收新员工的方式,已经大量的被很多公司所接受。因为它确实太好了,他可以保证你招收的人已经是你想要的,并且你已经具备了远程工作的能力。

仔细想想,众多的优秀开源项目不都是远程工作的产物吗?:)

订阅我的社交媒体

我的Blog 和 我的weibo 以及 我的twitter都会公布一些我所知道的远程工作机会。如果你有兴趣的话可以订阅哟 😀

如何开始你的 SOHO 之旅 (上)

仔细算算自己在家上班已经有差不多4年了,所以回想起整个过程,只有一种感受,那就是再也回不去了。我相信很多在家工作多年的朋友也会有同样的感受,“自由”这东西一旦拥有就太难再放弃掉。

我现在无法想象我每天要在上下班的路上耽搁1-2个小时,每天要准时一大早起床,每周无论有事没事都必须工作5天,不能每天坐在我最舒适的椅子和桌子面前工作… 最关键的是,我不能放弃这一份已经拥有的 “自由” — 嗯?问题搞深沉了.. 这篇文章我并不是想介绍在家 SOHO如何如何好,我想谈的是如果你也想成为一名在家 SOHO 的程序员你应该怎么做。

程序员在家工作的几种选择:

  1. 做一名 freelancer, 自己接项目
  2. 加入一个允许在家工作的公司
  3. 争取成为你现在公司第一个在家工作的员工
  4. 创业,并让你的公司允许远程办公
  5. 成为一名独立开发者(开发应用, 或者是独立咨询)

如果在家办公是一个你很重要的诉求,那么你不妨考虑一下上面 5 种选择,看看哪种更加适合你。然后制定一个清晰的计划并为此努力。 当然,其中 1, 2, 3 相对要容易一些(要做好其实也不容易,更合适的说法或许是风险要低一些吧。),4, 5相对要难一些。如果 4, 5是你想要做的,不妨从 1, 2, 3里选一个作为过度,有一定积累后再完成你的最终目标。

本文将介绍第一点,后续文章会逐步介绍其他几点。

做一名 Freelancer, 自己接项目

Freelance这个词最早出现时是用来指称“中世纪的雇佣军骑士”,即“free-lance”; 随着时间推移,它慢慢被用于指称自由撰稿人(应该算自由职业中非常流行的行当,特别是在西方国家),进而扩大至指称所有自由职业者们。

因为自由职业者们通常是脑力劳动者或服务提供者,并且大多是自己所在领域的专家或资历丰富者,加上又不要求签订长期的工作协议或合同,许多企业或个人愿意将自己的项目外包(Outsourcing)给他们。

— Freelancer专属™ 博客 做 Freelancer 最需要解决的是项目来源问题,而项目来源最主要的途径通常是有四种:

通过在线 Freelance 平台接项目

类似的平台有很多,相对传统且做的较大的有:

  1. freelancer.com

freelancer.com 可以算是资格最老的 freelance 平台了,以前也曾是那么的辉煌。但是,现在这里已经慢慢变成了一个几乎所有项目都会有一堆印度人以极低的价格和你血拼的地方。我个人认为要想做 Freelancer, 一定不能拼价格,特别是和印度人拼价格。 最主要还是能提供更好的服务,更好的完成任务,写出更易维护的代码… 但是如果你是初出茅庐,最难的或许是如何证明你有这样的实力,为什么要收比那些印度人更高的价格。是的,你必须收比他们更高的价格,因为经过我的计算,大多情况下如果你和他们收一样的价格,你几乎不太可能养活你自己。毕竟,你夏天还得吹吹空调吧… :p

所以, 如果你有一些开源的项目或者在线运行的项目能证明你的实力的,千万不要羞于拿出来,否则你或许前几单真要和他们拼价格了。

freelancer.com 里的优质项目的比例真的已经比以前低很多,或许花时间在里面找到优质项目就够你麻烦的了。所以我个人现在并不推荐你来这里接货儿。

  1. oDesk

oDesk 相对于 freelancer.com 最大的特点是。它更支持客户给 freelancers 按小时结算。在我看来在此类似平台接项目,按小时计费是很重要的。因为这类平台客户要把需求写得十分精准几乎是很难的,你的程序需要来回修改几乎是家常便饭。如果按小时收费,那么这个来回修改的费用将由客户来承担,这也从另一方面促使他们把问题想清楚,把需求写得更加清楚。

另外 oDesk 要通过视频来和屏幕截图来监视你是不是认真的工作了你说的那么多小时… WTF… 我们干 freelancer 不是为了自由吗? 这么搞是要闹哪样?

就因为这一点,我真的不推荐这个平台。不过这个平台的 rate 相对 freelancer.com 高一些。你是不是要暂时放下你的自由?还是你自己决定吧!! >.<

  1. Elance

Elance 在我看来相对于上两个要好一些。一方面它项目的平均 rate 要高一些。另一方面他也没有恶心的视频监控之类的东西。但是你需要填写你每天工作花了多少时间,具体做了什么事情。相信我,这要求真不过分。即使客户不做这种要求,我自己也会写的。

•4. TopCoder

TopCoder 看似是比赛,实际上他是通过比赛的形式来做外包,这个平台和其它平台比起来非常特别。要注意的是,你做好的东西,会有人 review, 选出前三名。而只有前三名有钱拿(相对较高),后面的名次是没有钱拿的。所以有可能你会白劳动。如果你做出一些成绩后,你可以做那些 review 别人代码的人,而 review 本身也是收费的。

这里要特别注意,这个平台 .NET 和 Java 的人特别多,竞争非常激烈。反儿,做前端的人特别少,相对没什么竞争。所以如果你是个不错的前端,别忘了考虑考虑哦。:)

Job Board

除了传统的接项目平台,去一些不错的 Job Board 找项目是非常不错的选择。虽然大多可能是全职的工作居多,但是招募 freelancer 的其实也不少,需要自己细心去挖掘。在这里推荐一些不错的:

jobs.github.com stackoverflow jobs ycombinator jobs 37signals jobs gun.io

这种方式拿到的项目,普遍 rate 要高一些并且靠谱率也要高一些(靠谱率 lol…)。 如果你初来乍到,这种途径对于你自己的实力以及和客户的沟通能力都是非常大的挑战…

通过朋友介绍

其实最好的接活儿的方式还是通过朋友介绍,可以是你的前同事,前客户,你同行的朋友。朋友介绍通常的好处是,客户相对更加容易信任你,而且你朋友通常会做一些筛选,那么项目也相对更靠谱一些。所以和你以前的同事保持良好的关系,经常的沟通是非常重要的。

如果没有相关资源怎么办? 去认识那些你优秀的同行朋友。相信我,勇敢的走出这一步,参加各种活动,想办法去认识那些靠谱的人,并想办法证明你自己也非常靠谱。这样当他们有了项目需要找人,或许脑海里你就在那个“靠谱开发人员”的list里。

让客户自己找上门来

这一点真的很难,但是绝不是做不到。要想让客户找上门来,你必须要有一定知名度。而积累知名度不外乎以下几种方法:

  1. 写优秀技术博客,并且坚持 ( 比如 XDite 同学的 Blog)
  2. 做客户能访问甚至正在使用的优秀的项目 (比如咱们的 Pragmatic.ly 😀 )
  3. 参与或创建一些优秀的开源项目 (比如 Richard 同学的 rails best practices)
  4. 去技术会议上演讲 (比如赶快报名 Rubyconf China 2013)

做好这几点都不是那么容易的事情,而且效果也绝不是立竿见影,且需要你坚持不懈的努力。但是一旦成功那么效果也将是极好的,rate 也将是极高的. 你懂的… 😀

总结一下,我觉得做 freelancer 几个重要的点

  1. 以上四种途径并不矛盾,而最终一定要向第四种努力
  2. 不要打价格战,一定要提供更好的服务
  3. 尽量接欧美的项目,相信我,相比而言 rate 比国内要高不少
  4. 英语对于一个 freelancer 来讲真的非常重要,特别是读和写
  5. 做事情一定要专业,避免情绪化
  6. 学会对客户 Say no!!
  7. 建立 reputation 极为重要,且一定要坚持不懈

这个系列的第一篇就结束了,希望对你有所帮助,以后还会继续介绍 SOHO 相关的话题。