《快速软件开发》学习笔记 - Part 2.5 面向客户开发
客户可以是顾客、最终用户、市场部门或者上司。“在所有项目中,通过改善客户关系提高开发速度是一条普遍适用的原则”。
泛泛地说,
1.良好的客户关系(合作而不是敌对),能够提高实际的开发速度
2.在开发时表现出明显的进度,则会增加客户对开发人员的信任度。
具体一点:
1.可以避免无谓的流程上的损失,比如通过沟通让客户清楚流程,让客户确定他们哪个人要在什么时刻做什么事
2.频繁反馈,开发出来的东西有不妥的地方时可以立即纠正,避免大规模返工
3.双方关系好,事情也好商量
面向客户开发的四个方面:
1.计划
a.选择合适的生命周期模型
b.这个项目是要让业务部门满意(客户A)还是要让你自己的上司满意(客户B)?搞清楚这一点,再去投其所好
c.建立有效的客户沟通渠道,尽量让对方只派一个接口人,以节省沟通效率
d.注意与客户有关的风险
2.需求分析:前期要挖掘出客户的真正需求,可以避免在后期出现相关的风险
3.设计:你的设计要允许客户偶尔提出需求变更,这需要你理解清楚需求表面之后的隐藏信息,预料客户可能提出的变更。“我们尽量做到能够满足一些变更要求,当然这并不意味着可以无休止地提出变更,但我们会努力做到不让你们过分为难”。
4.实现
a.代码应易读易改,以提高应对客户需求变化的能力
b.开发计划中多设置一些里程碑,让客户能感觉到项目始终在进展(我的经验:也可以使开发的“完成百分比”可视)
c.一个功能点可以先把界面做出来,让客户能够尽早地看到,有问题可以及早修正
合理控制客户的期望值
1.如果让客户产生了不切实际的期望,即使你做的很好,客户也会很失望,把你当成失败者,客户关系会受到损害
2.对一份不现实的进度计划表示同意,必然会使客户产生不现实的期望值
3.客户可能会认为某些功能很容易实现,或者认为某些功能不用明说开发人员也应该会实现,这些地雷都要提前扫清,否则客户到最后会很失望