个人认为需求管理始终是项目管理中最重要的工作,无论是采用传统的软件开发流程还是敏捷开发流程中。
需求说白了,就是通过清晰地获得用户的最终诉求,来为开发的系统设定一个功能框架。一般包括:了解客户现在怎么做,存在什么问题,希望达到什么目的,如何利用新技术来改进当前的流程。
相对于传统开发流程,敏捷开发十分强调与客户的协作,Lean主张建立一个cross-functional teams,通过regular meetings来维护一个ongoing的需求。
一定要明确项目的边界,哪些是系统明确要支持的,哪些是系统不能明确支持的。明确但并不代表着一成不变,意思是所有的项目成员都需要对当前的项目scrope有一个统一而明确的认识。因为经常管理者和具体的开发人员对scope变动有不同的感受,管理者经常认为增加点功能是很简单的事情。
举个例子,比如一个股票的后台系统,开始的scope设定只支持最基本的stock,然后由于市场的变化,需要支持etf,然后领导一拍脑袋,说我们这个准备支持ETF。虽然EFT和普通的stock基本上类似,但是从程序开发的角度还是需要大量的工作去做。当然,类似这种类型的转变是很正常的需求变动,我的意思不是拒接这种转变,而是希望整个团队在涉及到任何的project scope变动的时候,都能够得到通知,大家达成一个共同的认识。因为往往很多人会过于看重或者过于轻视这类scope的变化。而这往往是导致很多bug产生的根源。