Monday, January 02, 2012

軟件開發流程第一講: 開宗明義 (綱要)

上週三去北京電視臺給他們開發團隊講了軟件開發流程第一課, 也是我們華美漢盛沉澱六年經驗的内部必修课之一. 綱要如下, 待閒暇時再擴展. 若條件允許, 則下次考慮錄下視頻放出. (Update: 完整版《华美汉盛 Adaptive Development Process 简介》)

1. What is Process?

Process is a set of rules, executable steps built from human mistakes, to mechanically minimize human mistakes.

(It's the mechanical part of human intelligence that runs the daily world; and the non-mechanical part creates art and ruins)

2. What is a GOOD Process?

A good process defines a minimum set of steps, each of them guards quality from a problem experienced before.

(In engineering world, anything you let slip away is going to bite you back, badly, painfully.)

3. What is Software Quality?

http://en.wikipedia.org/wiki/Software_quality
Completeness; Conciseness; Consistency; Effectiveness; Efficiency; Maintainability; Reliability; Security; Structuredness; Testability; Traceability; Understandability; Usability…

4. 估算与计划

- 估算时必须不受计划干扰, 以获真实数据
- Poker game 以估算
- 给定人数/时间, 团队的容量 (capacity) 便是固定的
- 当我们得到需求 "小球" 的数量与相对准确的 "大小" 估算后, 即可计划出在特定的杯子 (团队 capacity) 里能装入多少小球
- 当小球溢出, 即任务量超过团队容量, 需及时与客户沟通处理方法, 方向为:
(1) 减: 依轻重缓急减去非必要的需求至后期工程
(2) 加: 商量 deadline 是否是 hard 的或可调整
(3) 加: 加人 (则成本加)
(4) 加: 加班 (成本也实际增加)

5. Common Questions

(1) Do we have to apply every step of a whole process from the beginning?

No.

Depends on the team's engineering maturity level, comfort zone, and the team lead's confidence of process execution.
Improve your team's engineering maturity iteratively, gradually -

If your team doesn't even have source control before, let's start from the very basic thing - as the team gets comfortable with new practices, you can start trying/introducing more practices.

(2) Are there any guaranties that by executing every step of a process will eliminate all quality issues?

No.

It only guaranties the same mistakes won't be made again. As long as we are human, we tend to make new mistakes while the complexity increases, we'd better keep our minds open to learn new lessons and define new processes.

No comments: