活力门之软件开发模式
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 - 作者:臭豆腐[trydofor.com]
 - 日期:2009-02-04
 - 授权:署名-非商业-保持一致 1.0 协议
 - 声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。

0. 文档目录
^^^^^^^^^^^
[[<=$INDEX]]

1. 活力门之研发基地
^^^^^^^^^^^^^^^^^^^
活力门公司(Livedoor)总裁堀江贵文是日本经济产业界的风云人物,
2004年在福布斯排名列日本49位,曾被认为是日本创业者的楷模.

livedoor.com于2000年在东京所创业板上市,跻身日本三大门户网站行列.
截至2005年9月底,该公司已经拥有44家子公司,销售额达784亿日元.

以堀江的经历为蓝本的日剧"坠入情网:我成功的秘密"在富士电视台开播.
当当网上有中文版的:"堀江贵文和他的活力门"

堀江谢绝日本首相小泉纯一郎让他参加众议院议员竞选的邀请,
以无党派人士身份参加激烈的竞选.最终一个商界精英倒在了政治战场上.
2006年初,"活力门事件"轰动世界,重创日本经济.

英极软件(大连)作为活力门子公司,中国唯一软件研发基地,于2006年获得
"2006中国最具影响力创新成果100强"殊荣.

活力门金融集团公司(株式会社ライブドアフィナンシャルホールディングス,
Livedoor Financialholdings Inc.) 是活力门的一个重要子公司.
全全对应其设计,开发,运营,维护的唯一项目组就是英极的Credit.

和Livedoor时代一样,Credit一直做着这唯一的一个项目,不同的只是不叫
LivedoorFinance.如果Livedoor是成功的,英极是成功的,那么Credit就是成功的.

2007年10月起,我有幸接管整个Credit项目,成了有头衔和最大职责的战士.
战士就是一线开发人员,项目组都是战士,代码面前人人平等.

摸爬滚打,痛定思痛.
开始讲述Credit不为人知的故事并深入思考其成功背后的东西.

2. 道可道也非恒道也
^^^^^^^^^^^^^^^^^^^
公司2007年通过CMMI L3认证,本人参与了一个评审项目的全过程,包括准备访谈.
Credit借鉴CMMI的一些地方,比如"需求跟踪矩阵",并进行了很大的定制和剪裁.

Agile的核心,是在条件不成熟时,如何有效地利用现有资源,把事情做好.
这一点在Credit有非常好的体现.结对,自组织,迭代等各领域的优秀模式在Credit
都得到了很好的应用和实践.正因为足够敏捷,Livedoor的膨胀模式能得以保证.

Credit不同于外包项目,除了日方提供原始业务需求外,整个项目生命周期内的
所有环境都在Credit进行:分析,设计,开发,测试,部署,维护等等.

道可道非常道.Credit从根本上讲是Agile,但不是流行的任何一种,或者说任何
一种在Credit的应用背景下,都会失效.

如果你在开发中遇到以下问题之一,那么你就可以参考Credit了.

 * 服务质量要企业级的,零缺陷.
 * 需求随时会变化,也许刚刚完成代码,立即被告知业务需求变了.
 * 业务对应十万火急,一天能上线数十个功能点.
 * 经常加班才能完成工作,甚至越干活越多.
 * 需求文档,业务代码和实际业务,三者时有不一致.
 * 代码量巨大,业务复杂.

3. 团队结构与角色
^^^^^^^^^^^^^^^^^
要做到高效率,高质量,必须砍掉团队中影响效率或冗余的环境.
Credit的团队,只有2层,这样大大减少了纵向的交流成本和失误.

....................................................
            |     +----测试  
            |     |     |
日方担当 ---|--- 翻译   |  <=== 领导(经理/组长)
            |     |     |
            |     +----开发(设计)
 (需求)     |     (项目组)
....................................................

以上示意图是Credit的层次结构
第一层(需求),  由日方担当组成,提供原始需求,或者需求文档.
第二层(项目组),由开发,测试,翻译组成,翻译是中日方交流的桥梁.

需求,就是提出原始需求,提出方式包括口头,Email,IM,Doc等
项目组,三个角色平行,构成环状,由项目领导统一管理.

从职能上讲,Credit共有5种角色.
日方担当::各公司叫法不一,职责是准确理解并表达业务和反馈,存在于第一层.
翻译::准确理解,正确充分表达日方担当和项目组的意图.
领导::负责全部项目或子系统的整个生命周期,一般是经理/组长/资深开发人员.
开发::负责项目的设计,开发,实施等生命周期.
测试::与开发人员一同理解需求,编写测试用例和测试文档.

其中项目领导也是开发人员,并负责核心内容.

典型的运作模式是以下步骤运作的.
 1. 日方担当理解业务需求,并通过CVS/Ticket/Skype/Email等方式整理出一个需求.
 2. 翻译主动或被动得知上步的需求,并及时准确的翻译(通常速度是每分钟100-200文字)
 3. 开发与测试得知步骤1时间,或翻译或互相通知,评审需求.
 4. 如果需求有致命问题,则通过翻译及时反馈给日方担当,视紧急程度(skype,email等)
 5. 如果问题不影响开发进行,则测试着手测试用例和继续评估影响.开发着手编写代码.
 6. 如果编码时发现需求问题,及时通过翻译与日方担当确认,暂停或进行其他开发任务.
 7. 如果需求没问题并且开发结束,测试人员直接测试功能代码,及时反馈问题或bug给开发.
 8. 如果上述过程出现复杂问题,需要由项目领导协助解决.

长期的磨合和实践证明,以上模式十分高效,可以在编码前扫除绝大部分障碍.
并且项目相关人员的业务理解相当准确和全面,大大降低bug率.
 
角色最佳搭配比例是(现在的角色比例):
日方担当(2.5):翻译(1):开发(4):测试(1)

需要说明的是,开发指有效开发人员,即实际对应能力,而不是人头数,如果结对,
那么2个人头算1个开发,如果开发人员同时担负系统维护或DBA工作,那么按担负比例计算.

现在的很多对外企业中不存在翻译这面一个实体,这点非常低效,而且成本偏高.
试思考以下问题,结果十分明了.
    * 1个专业翻译加4个高级开发人员
    * 5个高级开发人员,外语达到专业水平
    * 分别提高专项技能和同时提高2项技能

3. 工欲善其事必先利其器
^^^^^^^^^^^^^^^^^^^^^^^
软件工程,是思维创造项目,人是第一要素,人的选择直接关系到项目成败.

"赢在中国"中,史玉柱有个结论:"工资越高则公司成本越低".
Credit验证了这一结论的正确性.为什么这样说呢?
  * 高级人才才可以得到高薪.
  * 高级人才不需要过多管理成本.
  * 高级人才创造力和解决问题的能力,回避风险都很高.
  * 高薪意味着稳定,不易被挖走.

选人涉及到的一个硬性问题就是公司预算.
在预算范围内,要尽量招入高级人才,也要搭配普通人才,可以参考以下比例,

  * 预算按人头计算,则要至少保证高级人才和普通人才1:4的比例.
  * 预算总额度计算,则尽量少招普通人,高级比普通的最多比例是1:1.

什么是高级人才呢?
在Credit有3个指标,按优先级顺序分别是:品质,态度,能力.
品质,是个总和的主观范畴,包括道德,办事能力,团队协作,学习能力等等
态度,主要是工作态度,要求积极主动,敢做敢当,知错即改等
能力,主要是技术能力,包括基础知识,技术视野.

能力可以后天培养,态度决定结果,品质伴随终生.
"好人不用管,赖人管不住",好的人才,管理成本和风险都要小很多.

3. 人之初性本善
^^^^^^^^^^^^^^^
现代教育西化,处处唯我,忽略很多中国本土的东方智慧.
"人之初性本善",在开发团队中,绝对适用,实用,好用.

面对如此这般"善"人,谁会忍心做以下事情呢?
 * 大搞政治,办公室政治害人害团队,使人离心离德,处处提防.
 * 官僚主义.老百姓心中有杆秤,以德以能服人,胜过所有假权威.
 * 故作2B状(装B,傻B).诸多团队的失败原因可以参考本条.

好的团体不需要管理,只需要呵护和引导.
但如何才能建立好的团队呢? Credit具有以下基本特征.
 * 积极和谐的气氛,平等,自由,活跃,互助.
 * 主动分担任务,不推卸责任.存在是为了对其他人负责.
 * 双赢思维,换位思考,未雨绸缪,运筹帷幄.

4. 千里之行始于足下
^^^^^^^^^^^^^^^^^^^
团队组建完毕,正式立项,并着手实际的工作.