项目实战(1): Alpha案例
下一篇:项目实战(2): Beta案例
个人开发
通过一个小命令行程序的需求分析,设计实现,交付给2-3人使用,收集反馈,增量改进,优化。解决明显的开发痛点,再推广。这个过程是体验很好的,为什么呢?
- 开始之前,起草并发布接口设计文档,并邮件征求意见。
- 程序的测试成本低,速度快,几乎任何改动都可以立刻测试看结果,由此可知那些体验不好的一定有相反的理由:测试成本高,反馈速度慢。所以构建快速测试反馈的机制是好处非常大的。
- 一开始是模糊的,但是有大致的设计,实现过程中诸多不确定,但是方向对,就先一路实现不跑,直到codecomplete,然后开始逐接口测试,直到第一遍跑通,第一遍自反馈改进。这个过程中,明确的codecomplete节点是有意识的,通过设置这个节点,目标清晰,在cm的时候虽然代码一行都没跑过,但你知道最重要的脚手架搭建好了,这是本质不一样的。
- 一旦自测通过,即可更新文档,并发布邮件周知,然后下一步。
- step by step交付第一个人试用!在试用过程中,会遇到对方觉的不对不合理的地方,肯定不高兴,但是耐心和对方谈,谈到合适的设计方案,达成一致后,第一波改进。这才真正是需求进阶的地方。更新接口后,同步更新文档并邮件。
- step by step交付第二个人试用…第二波改进,同步更新文档并邮件。
- 经过几轮,可以交付内部试用啦,alpha.
团队开发
团队A有一个项目外包给某公司B,由于前期沟通/了解/管理上的不足,以及对风险的误判,导致在离截止日期只有20天的时候,才发现公司B在开发上存在严重问题:
- 该团队不使用版本管理软件协作开发,代码靠拷贝协作,很难想象他们是如何活下来的。
- 该项目使用JavaScript作为主要语言,但是该团队web端开发人员连
Content-Type
是啥都不熟,据称之前是开发PHP的。 - 该项目的数据库毫无设计,完全根据前端界面需要什么就加什么字段。
- 该项目未完成基本的界面功能,以及未做任何错误处理
- ...
团队A启动紧急预案,接手项目开发。
- 创建git仓库,将旧代码/文档提交到仓库,建立需求分析/模块设计/编码规范文档子目录。
- 团队确定人员和指责:平台+1/服务端+2/客户端+3,客户端有2个是做两个独立App,一个做Web。App开发方面使用ReactNative。
- 快速重新建立工程,让旧代码可以运行起来,文档里添加「快速上手.md」,使得任何一个新加入的人可以快速搭建环境并测试运行。
- 全体现场分析旧数据库设计,逐个表逐个字段复审,并做第一次渐进式重新设计,确认数据库分层设计,并做一致性方面考虑。
- 3个客户端全部优先根据需求设计好需要的后端接口,并添加到模块设计文档。
- 3个客户端全部使用静态假数据并行开发界面。
- 与此同时,后端根据新设计的数据库,重新设计模型层接口并实现,后端所有接口同时有测试代码。
- 1个新的人员加入,参与客户端设计的后端接口与后端模型层接口的对接,每个实现同时有测试代码。
- 在开发中随时根据对平台功能的需求,快速迭代平台sdk。
- 第1个客户端界面开发完成,开始与后端对接,做集成。
- 第1个客户端需要模拟数据支持,后端添加模拟数据生成脚本,批量生产模拟数据,用以测试,并随时根据需求添加。
- 第1个客户端集成完毕,该开发人员支援第2个客户端。
- 第2,3个客户端相继完成并开始集成。
- ...
- 全部集成完毕,正式alpha,同时2期开发接手的团队找到。