Tasking

Git Exercise

  1. GIT 与 SVN 有哪些区别?
  2. GIT 管理下的文件共有几种状态,各状态间怎样切换?
  3. GIT 合并分支共有几种方式,命令分别是?

为什么要做 Tasking

凡事预则立 不预则废 ——《礼记·中庸》

 

交付高质量的代码和价值

tasking的两种作用域

  • 产品功能分解,任务划分
  • 功能点划分,代码的实现顺序

项目经理的思维方式

  • 用户最关注的功能是什么?
  • 哪些功能是用户 nice to have 的?
  • 为了交付核心功能,还有哪些事情是必须要做的?
  • 核心工作流是否还可以简化?

开发人员的思维方式

  • vector or list
  • maven or gradle
  • 同步 or 异步
  • 消息推送 or 轮询
  • OO or Reactive

做Tasking时,你其实是自己的项目经理

任务拆分指导思想

  • 用最快的速度实现一个 Walking Skeleton / MVP (Minimum Viable Product)
  • 给Walking Skeleton增加功能

Step 1

Step 2

Final

任务拆分的评价标准

INVEST in good stories, and SMART tasks

INVEST

  • Independent (独立性)
  • Negotiable (可协商性)
  • Valuable (有价值)
  • Estimable (可估算)
  • Small (工作量小)
  • Testable (可测试)

SMART

  • Specific (具体)
  • Measurable (可度量)
  • Achievable (可完成)
  • Relevant (相关性)
  • Time-Boxed (时限性)

写一个显示LCD数字的程序,要求可以调整数字大小

根据开发过程分解(误区一)

  1. 设计
  2. 编码
  3. 测试
  4. 做联调
  5. 写文档

根据架构分解(误区二)

  1. 实现Model层,用长度为7的vector保存一个数字
  2. 实现View层, 通过横竖线显示数字, 支持放大
  3. 实现Controller层, 通过命令控制创建Model并展现
  4. 编写验收(集成)测试
  5. 完善文档

根据处理流程分解(误区三)

  1. 用户在命令行输入 “lcd –s 2 1234567”
  2. 生成每个数字的LCD格式
  3. 根据尺寸调整生成的LCD符号大小
  4. 将所有数字的LCD格式收集到一起,并调整间距
  5. 显示

讨论:那么理想的分解方式是?

建议的分解方式

  1. 能打印一个字符,大小为1,输入为硬编码
  2. 能打印多个字符
  3. 增加控制字符大小功能
  4. 用户可以指定输入的字符

怎样得到walking skeleton

  1. 列出一个端到端场景完整步骤
  2. 对每一步提出以下问题: 如果想消除这一步,需要做哪些假设? 如果假设合理,就用一些“简陋”的方式暂时替代
  3. 重复以上两步

练习:实现一个人与人对弈的象棋软件

练习2:描述一个你做过的特性,如果用walking skeleton方式如何做拆分

Made with Slides.com