再出发

看了 从 300 万到 1000 万,DeepDevelop 外包业务第二阶段总结 ,深有感触。外包这件事,个体做、跟别人做、自己拉团队做这几个阶段都经历过,也借着一早一晚的平台说说自己的体会。

注:由于保密协议、客户要求等等,本文不会提到任何甲方公司的名字。

个体阶段

我运气还算不错,加上一点努力,高考考进了某不错的大学的计算机系。然而大一之前是没摸过电脑的,第一年专业课的成绩惨不忍睹( C语言 61,根号 * 10 以后)。大二学了 Java,突然就开了窍,自学了不少东西。后来手写了一个 Ray Trace (我们大三才会学图形学,这个完全是兴趣)给同学显摆,同学认为很牛逼。恰好他的一个亲戚要找人做个小项目,于是就推荐了我。那时候完全没有做外包的经验,代码很容易写,但是谈价钱、谈条款、谈周期这些是一无所知,人家说什么就是什么。好在有一层同学关系,人家也没坑我。半个月做完,提前了半个月。交付当天我到了一个非常高大上的小区,从那位大姐手里接过一个信封。在这之前我是不知道做完能拿多少钱的。拆开一看,6000,吓了一跳。02年的6000,购买力对于一个月生活费只有500的穷学生来说是巨大的。而大姐还对我很感激的样子,至今不明白为什么。这个算是外包生涯的起点。

后来的两年基本上没有接新的活儿,也没想把外包当作一个事业。主要是课程压得更紧了,我自己也更在乎成绩了。大四安全毕业,保送了本校一个低调但很牛的导师读硕士。这个时候一个学长推荐了一个叫做 topcoder 的网站。本意是让我去练算法的,结果我发现了它的开发比赛。第一次试着做了一个,功能完成得不错,但是文档、单元测试不规范,排名倒数第一。然而这些是很容易改的。于是第二个比赛就拿第一了。后来就一发不可收拾,几乎每天都花一半时间在做比赛。那时候汇率还是8以上,平均一个比赛的奖金在700刀左右,一个比赛的周期是一周,实际工作时间不超过48小时,所以并行做三四个完全没问题。性价比非常之高。最多的一个月拿到了20W RMB的奖金。于是,退学,专职做。导师很不高兴。但是退学以后自由,收入高。缺点就是必须要适应美国人的作息时间了。

就这样,专职做了三年。然后就08经济危机了。topcoder 是一个众包的商业模式。它作为 outsourcer 接大单子,然后拆成块儿作为比赛,每个比赛前两名是有奖金的。它的盈利就是单子的金额减去奖金,利润率非常高。然而经济危机一来,它的客户都没有预算了,也就没那么多比赛了,我的收入也从每个月的六位数锐减到首位是1的五位数。这个时候我突然意识到,作为外包商的外包是很不稳定的。不自己找客户,而依赖别人的模式是不能长久的。

然而后来想起来,还是非常感谢这个平台的。topcoder 的单子各种技术都有,我在三年时间里学了 java 的全套,前端的全套,数据库学了 MySQL, Postgres, SQLServer, Informix, DB2,还学到了 C#,Python, Ruby,以及最好的语言。不一而足。所以后来可以自夸地说:全端?我这比全端可全多了吧。另外,比赛的形式要求必须学精学透。这些反应到后来,我可以接几乎任何需求的单子。最近的一个项目,甚至接了一个智能硬件的系统+app。

topcoder 现在还存在,然而已经不如以前了。公司整体卖了,老板回家颐养天年了。

队友阶段

慢慢淡出 topcoder 以后,我尝试去找工作,很快拿到著名互联网公司的 offer,但是坐班的生活是很难适应的。后来一个朋友拿到了一个大项目,于是就加入了他的团队。几个月的时候迅速完成了项目。那个时候也几乎没有规范,没有管理。毕竟就四个人,沟通也不复杂,关系很好,完全透明,不存在利益冲突。

项目做的不错,于是我们得以拿到更多的单子。这个时候人手就不够了,于是开始扩张。人多了以后管理就成了问题,在痛苦地折腾了半年以后,我在团队内部推行了 topcoder 的全套管理理念。包括单元测试、文档、code review、组件复用。这个推行的过程是很艰苦的。外包的一个特点就是需求方永远是要求项目进度的,而上面这些除了复用都是看起来要浪费时间,而且客户是感觉不到的。但是两个合伙人是计算机科班出身,也带过很多年的队伍,吃过亏,所以他们非常坚定地支持。一年以后见了效果。后来我离开的时候,队伍已经是自然地做到单元测试分支覆盖率90%+,文档全覆盖,code review常态进行,组件量在200+。在做完全新业务的项目的时候,只需要搭业务逻辑,剩下的全部都已经存在了。

这个阶段接触的最多的是国内客户,而且都是传统行业。跟传统行业打交道是很难的。他们一般都有一个 IT 部门,很不靠谱的 IT 部门。跟业务部门沟通还算顺利,而跟 IT 部门则是一团乱麻。开通 VPN 都要等几个工作日。周末他们不会回答任何问题,做任何工作的。然而,传统行业有钱,所以那个时候,真的是捏着鼻子干完了一个又一个项目。另外,跟他们要钱也是一件非常痛苦的事情,公关也是免不了的。回顾起来,那段时间除了经济收入和管理能力之外,怕是几乎没有任何额外的收获了。

后来一次非常痛苦地公关喝到断片,在清华科技园全聚德门口睡了一晚上,早上起来,迷迷茫茫,盯着门口的鸭子发呆,觉得这样也不是办法。会死人的。思考了几天,跟两位老板聊了聊。其实他们比我更痛苦,公关我是兼职做,他们是几乎全职公关。然而毕竟有既得利益,他们是不想赶走这些客户来从零开始发掘新客户的。所以我们好合好散了。

领队阶段

这次退出以后,就没有去找工作了。我的体会是,外包的市场实在是太大了,先不说现在这些创业的互联网公司,传统行业,尤其是国外的传统行业是非常需要靠谱的外包团队的。因为巨头们的存在,使得他们很难招到合适的技术人才。既然如此,我何不自己组一个团队,推行我的理念,不仅满足客户需求,而要同时教育客户,让他们在这个潮流里不要走老路呢?

于是召集了三个人,两个全端,一个前端兼设计。开始了自己生存的生涯。自己生存的首要问题就是客户来源。有需求的公司很多,我通过 topcoder 时期认识的一些外国朋友,包括 topcoder 的一些员工,找到了其中的一些客户。这些客户各有特点。这次自己做老板,我给团队定下了三必须遵守绝对不违背的规则:

1. 不允许客户还价。

2. 不接短期的项目。

3. 不外派,不坐班。

第一条的前提是我可以做到报价透明,明确告诉对方我的利润空间。事实证明,很多客户还是接受这一点的。技术上,我们秉承了之前的管理模式。

慢慢地我们积累了几个大客户(国外有某五百强、某风口上的独角兽,国内有传统行业领域的龙头老大-不能细说,再细说就透露客户了,哈哈),团队也从四个人涨到了稳定的八个人,兼职的有几个。团队中甚至还有一位非常牛的运维工程师。理论上说,项目交给我们,客户是可以做甩手掌柜的,只要有一个人盯着需求就足够了。

我们目前使用的工具:

代码管理:git (自己搭的 gitlab)

文档管理:gitlab wiki

项目管理:也是 gitlab

团队沟通:slack。之前用 QQ,slack 横空出世以后发现这简直太适合远程团队了。

现在正在考虑把代码库、文档都迁移到 github。自己维护成本也不低,而 github 又很便宜。

招聘方面我们不会主动去招人。从团队组建开始我们就确定了有多少人干多少事的原则(当然,也因此错过了一些客户)。新同学都是老同学引荐的,没有一个是通过招聘搞来的。而开拓客户方面除了最开始启动时也几乎没有任何主动行为。新客户 80% 都是老客户推荐的。也有一部分是朋友推荐的,但朋友推荐的要么是临时项目,要么是土老板项目。前者我们不接,后者谈得来的才会接。

最后这个阶段才开始一年多,可以说是比较成功,但是偶然的因素不小。对于一个挑剔客户的团队来说,实在是很不容易的。标题说的“再出发”,其实说的就是这个阶段。经历之前的种种痛苦,现在感觉还是很快乐的,希望能够持续下去。