项目实战(1): Alpha案例

下一篇:项目实战(2): Beta案例

个人开发

通过一个小命令行程序的需求分析,设计实现,交付给2-3人使用,收集反馈,增量改进,优化。解决明显的开发痛点,再推广。这个过程是体验很好的,为什么呢?

  1. 开始之前,起草并发布接口设计文档,并邮件征求意见。
  2. 程序的测试成本低,速度快,几乎任何改动都可以立刻测试看结果,由此可知那些体验不好的一定有相反的理由:测试成本高,反馈速度慢。所以构建快速测试反馈的机制是好处非常大的。
  3. 一开始是模糊的,但是有大致的设计,实现过程中诸多不确定,但是方向对,就先一路实现不跑,直到codecomplete,然后开始逐接口测试,直到第一遍跑通,第一遍自反馈改进。这个过程中,明确的codecomplete节点是有意识的,通过设置这个节点,目标清晰,在cm的时候虽然代码一行都没跑过,但你知道最重要的脚手架搭建好了,这是本质不一样的。
  4. 一旦自测通过,即可更新文档,并发布邮件周知,然后下一步。
  5. step by step交付第一个人试用!在试用过程中,会遇到对方觉的不对不合理的地方,肯定不高兴,但是耐心和对方谈,谈到合适的设计方案,达成一致后,第一波改进。这才真正是需求进阶的地方。更新接口后,同步更新文档并邮件。
  6. step by step交付第二个人试用…第二波改进,同步更新文档并邮件。
  7. 经过几轮,可以交付内部试用啦,alpha.

团队开发

团队A有一个项目外包给某公司B,由于前期沟通/了解/管理上的不足,以及对风险的误判,导致在离截止日期只有20天的时候,才发现公司B在开发上存在严重问题:

  • 该团队不使用版本管理软件协作开发,代码靠拷贝协作,很难想象他们是如何活下来的。
  • 该项目使用JavaScript作为主要语言,但是该团队web端开发人员连Content-Type是啥都不熟,据称之前是开发PHP的。
  • 该项目的数据库毫无设计,完全根据前端界面需要什么就加什么字段。
  • 该项目未完成基本的界面功能,以及未做任何错误处理
  • ...

团队A启动紧急预案,接手项目开发。

  1. 创建git仓库,将旧代码/文档提交到仓库,建立需求分析/模块设计/编码规范文档子目录。
  2. 团队确定人员和指责:平台+1/服务端+2/客户端+3,客户端有2个是做两个独立App,一个做Web。App开发方面使用ReactNative。
  3. 快速重新建立工程,让旧代码可以运行起来,文档里添加「快速上手.md」,使得任何一个新加入的人可以快速搭建环境并测试运行。
  4. 全体现场分析旧数据库设计,逐个表逐个字段复审,并做第一次渐进式重新设计,确认数据库分层设计,并做一致性方面考虑。
  5. 3个客户端全部优先根据需求设计好需要的后端接口,并添加到模块设计文档。
  6. 3个客户端全部使用静态假数据并行开发界面。
  7. 与此同时,后端根据新设计的数据库,重新设计模型层接口并实现,后端所有接口同时有测试代码。
  8. 1个新的人员加入,参与客户端设计的后端接口与后端模型层接口的对接,每个实现同时有测试代码。
  9. 在开发中随时根据对平台功能的需求,快速迭代平台sdk。
  10. 第1个客户端界面开发完成,开始与后端对接,做集成。
  11. 第1个客户端需要模拟数据支持,后端添加模拟数据生成脚本,批量生产模拟数据,用以测试,并随时根据需求添加。
  12. 第1个客户端集成完毕,该开发人员支援第2个客户端。
  13. 第2,3个客户端相继完成并开始集成。
  14. ...
  15. 全部集成完毕,正式alpha,同时2期开发接手的团队找到。
posted @ 2018-03-20 19:10  ffl  阅读(1928)  评论(0编辑  收藏  举报