项目管理是一个非常综合的任务,里面用到的东西非常多。简单的打个比喻,如果纯开发工作是一个单线程的工作的话,项目管理是CPU的工作。CPU对比单线程的话,它强大之处在于可以包容多个线程,强大的调度能力。这也就是为什么从高级开发转向项目管理的困难之处,不仅仅是工作内容的重塑,还要重构思维方式。
现在的项目在进行过程中总是分阶段并且是分工的。项目分阶段进行,这说明项目本身也是一个比较复杂的任务。通常我们在做一件事情的时候,都是要分步骤处理的,尽管有时候我们没有注意到。项目参与的人很多,基本上也做不到有人可以知晓项目从头到尾的全部内容,从立项到代码,从测试到维护。随着越来越多的技术加入软件开发当中,随着业务规模的逐渐扩大,分工扩大化是无法避免的。这样就出现了现在项目当中懂业务的只了解业务,懂得代码的只知道代码的相关技术,懂得设计的不知道最后代码的细节和业务的成因,懂得测试的人不知道代码的具体逻辑等等,这些分工越来越细化的趋势非常明显。人的精力是有限的,为了满足要求就必须要更加的专业化,更长的学习时间。
为了保证项目的正常进行,需要有专业的客户代表,需要尽量模拟用户的使用场景。客户代表是使用项目服务的人,但是不是全部,怎么去选取客户代表却是一件超级麻烦的一件事情。无论采取随机抽样,分层抽样等等抽样方法,客户代表也是不可能覆盖到用户整体情况的,只能覆盖的一定程度。同样,不使用这种方法,采用假想方式生成用户需求的话,虽然看上去是减少了费用,不过却提高了项目的失败率,因为我们毕竟不是真实的客户