彼得·圣吉所说的第五项修炼指的就是:系统思考。什么是系统思考?系统思考是对影响系统行为的力量和相互关系进行思考的方式。简单的说,就是用系统的、整体的、全局的思维方式而不是细节的、片面的、局部的思维方式去思考解决工作生活中遇到的问题。
一个系统是一个能够被感觉到的整体。系统元素彼此联系、相互影响。一台计算机是一个系统,一家企业是一个系统,一个社会也是一个系统,小到微观粒子,大到宏观宇宙,都是一个相互影响、彼此联系的一个系统整体,都有其运行的内在规律。面向对象语言所描述的:Everything is Object。我们是否也可以说:Everything is a System?
既然系统元素是相互影响彼此联系的,那么我们在软件项目管理中是否也可以用系统思考的方式来管理呢?常常我们只看到系统的表面和表象,却不了解其内在的本质和规律,就象不懂电脑的人觉得电脑是多么的神奇,可以绘制图画、播放声音、执行运算等等;在软件项目管理过程中,我们也常常会抱怨客户的需求一变再变;抱怨某个人缺乏团队精神,难以合作;抱怨项目发布日期一拖再拖等等;
一个软件项目涵盖了项目组、客户、客户需求(或者称为项目目标)以及为达到项目目标、满足客户需求所需要的权责、人员、时间、资金、工具、资料、场所等等项目资源。而人员无疑是项目资源中最特别最重要的资源,人具备主动性和情感,与社会、家庭、企业、员工等的关系密不可分。我们在进行软件项目管理的过程中,不应该仅仅局限于软件项目内部,而是与一个社会、家庭、企业都密切联系的一个系统。
客户的需求为什么一变再变?我们在提一个方案的时候是一个什么样的过程?人类认识世界是一个由无知到已知、由浅入深的过程。我们以及客户对需求的认识也是一个逐步深入逐步明晰的过程。随着认识的深入,客户的需求才逐渐变的明确。我们作为“Professional”人员在最初的时候就需要帮助客户深化认识、明确需求。我曾经无数次遇到客户说要怎么样,我们的人员就怎么样,还振振有词说客户就是要求这么做的。很好的一个挡箭牌。完全没有自己的思想和思维。等客户要求改变了,我们就开始抱怨客户需求总在变,把责任推给客户,这是我们作为“Professional”人员所不应该有的。试想,我们作为Professional人员都做不到的事情,又如何要求我们的客户去做到呢?
我曾经中途被调入一个项目组。整个项目已经做了一年多了,但做的是异常失败。由于客户的特殊性,公司不得不几乎倾一个部门内所有的技术精华人才不惜代价、全力以赴来挽救,甚至后来还请一个加拿大的顾问来分析项目失败的原因。初到这个项目组,让我觉得惊讶。项目进行了一年多,项目组中几个主要的设计人员竟然不懂编程语言;开发人员只能按照设计人员的思维编码不能参与业务的分析讨论和系统的设计;几个小组间矛盾重重沟通乏力……为什么会导致这些问题?当时,公司发布了一项软件项目管理的制度,关系到项目经理的切身利益,却与普通员工没有关系,或者说普通员工可有可无,项目经理在项目管理过程中大力压缩开支和费用,晚上加班工作餐往往吃的都是中午食堂的剩菜剩饭。没有团队建设,意志涣散等等。所有这些最终导致了项目的失败。大多数时候,一个项目经理的经验、能力和素质往往会决定着一个项目的成败。一头狼带领一群羊胜过一只羊带领一群狼,便是这个道理。正所谓千军易得,一将难求。项目经理是一个项目成败的关键。
仅有优秀的项目经理是不够的,一个系统内的元素是相互影响彼此联系的。巧妇难为无米之炊。要达到项目目标,离不开项目资源,项目经理的职责就是利用既有的项目资源达到项目的目标,满足客户的需求。我们说了,人力资源是一种特殊的资源,人有主动性和情感。一个人有好恶、有情绪、有自尊。人是一种社会动物,受社会、经济、法律、家庭、生活等各方面活动的影响。当前众多企业高喊的“人性化管理”、项目团队建设,就是从人的精神需要出发,给以认同、尊重,以激发人最大的潜能,减少内耗,达到最大效能,参与并服务于公司行为和目标!
我们常常会遇到项目组某个成员没有按时完成工作,导致整个进度延迟,我们常常会不由自主的批评、指责,而没有主动去寻找导致延迟的原因。风险管理中指出风险的发生必然有其原因和结果(影响)。或者他生了病;或者家里出了事;或者遇到技术难题,不能克服;或者其他。也有些人表面看来个性孤傲、难以接近,也许事实上是太专注于技术学习而没有时间浪费。也有些人对分配的工作推脱不愿意干,事实上他是缺乏完成工作所需的技术能力,让他感觉到了太大的压力,不由自主的抵触。或者心不在焉、错误不断,也许正为某件事烦恼郁闷……人的个性、特点、技能、情绪、爱好等都会影响到软件项目中其他元素。每中系统元素都不是彼此独立的,而是相互影响、互为联系、相辅相成的。软件项目管理中涉及客户、客户需求、项目成员、资金、时间、技术、工具、场所等很多中资源,只有理清软件项目管理中各种资源的相互关系和影响,才能方便的利用既有的项目资源寻求一条达到项目目标(客户需求)的最小代价(Cost)路径。