第二年:
做完支付宝,公司给弄了硕大的庆祝仪式,带我们一帮人去了千岛湖。玩的很爽,但我有有点不安,因为我跟这帮人混了3个月,实际上只做了3个功能,一个是创建支付宝交易的接口、一个是接收支付宝订单状态的接口、一个是绑定和解绑支付宝账号的功能,而另外的牛人们,搞出了那么巨大的一个系统,我处于深深的拜服中。半年之后,淘宝网的outing又去了千岛湖,后来另外两个项目的庆祝,也去了千岛湖,到后面我都认得那边的道路了。
从千岛湖回来,真正苦逼的日子开始了,我很长一段时间都在做擦屁股的工作,擦的就是支付宝系统里面的一些问题。由于支付宝和淘宝是两个独立的系统,系统之间的通信是一个大问题,而银行跟支付宝也需要通信,于是问题就经常出现:用户在银行付款了,未必能通知到支付宝,支付宝收到通知了,未必能通知到淘宝,于是用户的钱没了,淘宝的系统上却显示未付款,很让人崩溃。我和鲁肃尝试了很多种办法,一开始用MQ,但并发量上来之后老丢消息,消息的时间顺序也会错,后来他做了一个消息中间件系统,这个就是淘宝的notify的雏形,现在notify一天能发送几个亿的消息通知,能保证通知到、能保证不重复通知、能保证消息有次序,相当不容易。
三丰看我好像在支付宝做了很多事情,而且跟鲁肃他们合作的这么好,还以为我水平大有长进,于是在维护着支付宝接口的同时,我开始了PM(项目经理)的生涯。据说我是淘宝的第一个PM,这让我很爽,我在做PM的过程中跟SQA一起整理出了《项目管理流程》、《PM工作手册》、《系统设计模板》等等开创性的工作,有些东西沿用到了现在。但后来某一日有人提出敏捷的概念的时候,我又在反思,我是不是误导了淘宝的项目开发模式很多年?后来想想,反正当时大家都不懂,谁说的明白听谁的。
我的PM生涯从2005年持续到2008年,这三年又大致分为两个阶段,一个是“新手上路”阶段,自己摸索着做了【商品详情拆分】、【收藏夹改造】、【支付宝认证】几个项目;另外一个是“死去活来”阶段,做了【我的淘宝ajax版】、【招财进宝】、【淘宝旅行】,为什么死去活来,因为后面这3个项目死了2个,活了1个。
【商品详情拆分】是在2005年的时候开始做的,三丰说让我当项目经理,我看到经理两个字吓的半死,但后来知道项目里面就我和拖雷两个人。要做的事情非常简单,淘宝商品信息表一开始就是一张表,商品的所有信息都在这张表里面,包括商品的详情,用一个clob字段存储的。大家应该知道商品的详情是一个多么恐怖的字段,据说淘宝商品详情页面如果打印出来平均大概有5米长,当时没这么长,但也很恐怖了,跟其他信息放在一块,严重影响数据的读写性能。于是我新建一张表,存储商品详情,普通的商品查询不会用到这张表,只在商品详情(detail)页面才会用到,做完之后性能一下子好了很多,我又骄傲了很久。再后来我知道商品的详情已经不能存数据库了,放到了文件系统上。
【收藏夹改造】是一个稍微再大点的系统,最早淘宝的收藏夹只能收藏商品,我跟万剑、领军几个人把收藏夹改造成能收藏店铺、能收藏搜索、能把收藏的内容分类处理,当时的UI设计可能是@sharkUI 做的,看他一个像素一个像素的扣,才发现他比我们写代码的更苦逼。这个项目算是一个比较完整的项目过程了,我除了写代码,也做些计划之类的东东,所以后来就开始写项目管理的文档了。
【支付宝认证】是淘宝的一个创新,淘宝在成立之初就要求卖家实名认证,最早的认证方式是让用户上传身份证照片,我们去连接公安系统的网站来核对信息,核对一个要交5块钱,成本相当高。后来浅雪@面我 过来当PD了,提出了一个新的认证方式:我们认为银行里面一定有用户的身份信息,而支付宝又跟银行有合作,那就可以通过银行的用户信息来验证身份了。所以支付宝认证的原理就是:用户提交身份信息和银行账户,我们往这个账户里面打钱,打进去之后用户填写收到了多少钱(我们号称打过去的是1块钱以内的金额,实际上只有几分钱),用户填写的跟我们打出的是一致的,那这个人的身份就是对的。这不仅降低了认证的成本,也使认证的效率由原来的一周左右变成一天以内即可完成。由于我跟支付宝比较熟,又做过PM,就理所当然的做起了这个项目的PM。据说这个项目后来申请了专利,这的确是一个很大的创新。
这三个项目我做的很顺利,认为自己已经能称得上是项目经理了,但巨大的失败在后面等着我,由于后面那些想起来太伤心了,先写到这里吧。