`
studying_
  • 浏览: 169324 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

软件项目管理原则谈

阅读更多

  软件开发的残酷的现实告诉我们:没有规则的软件开发过程带来的只可能是无法预料的结果。我们中的大多数项目管理人员在其个人简历中纷纷写到:"拥有多年的丰富的项目管理经验",但在实际开发中,"丰富的"管理经验变成了软件开发人员可怕的梦魇。一次次的失败、一次次的返工,她所谓的项目管理经验只不过是再一次的游戏于"无间"(十八层地狱)。一次,在与不少项目管理者的交流中,大家纷纷提到的软件变更带来的可怕影响。但是正如完整的法律体制不能制止犯罪,但没有完整的法律体制犯罪会更加猖獗一样,频繁的软件变更固然可怕,但是没有一个完整的项目管理对应机制,我们无法相像项目最终会是一个什么样子。此外还有一次,笔者在求职时,招聘公司的技术主管(40-50岁左右),向我吹嘘公司按CMM4的过程规则来进行软件的开发和管理。殊不知,我一问下面开发人员,她们在经历无数的加班后正在给已经完成的软件项目添加软件概要设计书,这让我大吃一惊。如此这样形式主义的公司,不呆也罢。



记得一个格言曾经说过"人类最愚蠢的行为在于忘记常识"。另外一句较为相仿的格言则是“不知道历史的人必然会重蹈覆辙”。作为项目管理来说亦为同样的道理。很可惜,我们中的大多数管理者口口声声"软件工程",工作时"用程序代替用户需求",极具政客的嘴脸。其结果必然如目前媒体"程序员生存状况"所言,以开发人员在时间的牺牲为代价来换取项目的结束,这是再为普遍不过的现象,在此不再妄加评论。



如何改善我们的软件开发管理,一条便捷之道便是"尊重常识,尊重历史经验教训"。在软件项目管理中,有许多的原则和经验可以供我们借鉴。



一、 计划原则

  没有计划,你无从知道什么时候控制和变更。制定一个详尽的计划,以详细到开发人员可以理解的程度为宜。计划能够告诉你什么时候应该做什么。没有计划,你无从知道自己需要做什么。不少项目经理告诉组员需要做什么东西后扬长而去,丝毫没有一个相关任务(活动)之间的说明。由于没有计划或是计划太粗糙、不切实际,很多项目1/3甚至1/2的时间花在返工上面。因为计划中遗漏了某一项关键任务,项目就有可能宣告失败。试想一下,制定一个周密合理的计划需要耗费这么多的时间吗?需要付出项目失败的代价吗?还有很多项目管理人员常常错误认为"变化比计划快",但实际的情况是,由于没有计划,你无法预测和估量变化给你的项目所带来影响,你所面临的将会是比面条还难以理清?混沌"状态。此外,对于开发人员来说,"目标导向(Objective Oriented)"是充分调动其工作积极性的最佳方法,每一个任务阶段的成果能够将员工的工作效率维持在一个较高的水平。因为近期目标总是比远期目标来说更容易看到和达到。为此,制定一个计划吧,让它符合目标导向(通过各个具体任务计划促使项目总计划的达成)。



二、 Brooks原则

  向一个已经滞后的项目添加人员,可能会使项目更加滞后。因为作为新加入的员工来说,相关培训、环境熟悉和人员之间的沟通通路的增加,迫使项目的工作效率急剧下跌。工作效率下降需要加班来进行弥补,但加班造成的疲劳会再次使工作效率降低。同时工作成本却不断的向上攀升。不过就目前来说,项目管理人员丝毫不会理会这一点,"人多力量大"也许更能引人入胜。不少项目管理人员抱怨到时间的急迫性,须知很多项目内时间的急迫性来自于项目管理人员不假思索和不基于常理的邀功表现,没有充分考虑的开发人员能力的多样性

所致。为此,正规的企业不得不耗费大量的加班费用于加班人员的津贴,同时亦要承担违反《劳动法》的潜在法律危险。现在一种万不得已的做法是,假设项目开发人员之间的任务的关联性不是太大的情况下,采取两班倒或是三班倒的方法来保证时间的延续性和相关开发人员的工作高效性。



三、 验收标准原则

我们在进行某项任务,往往会为以何种结果为宜而感到困惑。不求质量的开发人员往往凭据经验草草了事,追求完美的开发人员则在该项任务上耗费太多的精力,但此番耗费未必针对该项任务,因而常常吃力不讨好。这是由于没有验收标准而导致的情景。因为没有验收标准,你无法知道你要进行的任务需要一个什么样的结果,需要达到什么样的质量标准。在很多情况下,你的活动会与期望结果背道而驰,而此时的你还在沉醉于自己的辛勤耕耘之中。作为项目经理来说,只有制定好每个任务的验收标准,才能够严格把好每一个质量关、同时了解项目的进度情况。



四、 默认无效原则

  你的项目成员理解和赞成项目的范围、目标和你所制定的项目策略吗?不少项目管理人员认为"沉默意味着同意"。实际上我们或多或少都会陷入这样的一个思维误区。试想一下,你作为职员或项目开发人员时的沉默完全代表你赞成你的领导的意见吗?不见得,这就是答案。这一点在项目沟通中极为重要,项目管理者切不可为沉默认为是同意,沉默在很大的程度上说明项目开发人员还尚未弄清楚项目的范围、任务和目标。为此项目管理者还需要同开发人员进行充分沟通,了解开发人员的想法。在对项目没有一个共同的一致的理解的前提下,一个团队是不可能成功的。



五、 80-20原则

  80-20原则在软件开发和项目管理方面有许多"实例"。其一便是我们在20%的项目要求上耗费了80%的时间。仔细分析一下,这些项目要求分为必须的非必须的,因此我们建议是压缩非必须的部分或是暂时将其放在一边不必太重视。软件项目开发事实告诉我们,开发人员在非必须的项目要求上耗费了太多的精力,用户的需求变更的大部分出现在"最好有"这一部分,实际上用户并不看重这些需求(即使去除这些需求),而我们所做的,往往是舍本求末。

80-20原则的另外一个实例是我们项目中的20%的人员担当了80%的项目任务(这样讲在实际实施中一点都不过分)。考虑到开发人员能力的多样性,聪明的项目管理人员决不会采取任务均分的愚蠢做法,因为就系统论的观点来看,互补结构比对等结构要更稳定一些。此外作为项目管理人员来说,了解属下员工的能力特点,将其放在合适的位置上,会更有利于项目的顺利进行。很多管理人员常常抱怨属下能力问题,究其实质,往往是这些项目管理人员未能发现开发人员潜能所在之处。她们看待问题往往以"经验"这样的思维定势来做决定。导致的结果如系统论所言:由于"抱怨"的作用和反作用循环,结果是大家都不欢而散。



六、 帕金森原则

  帕金森原则原是用于反映政府部门机构臃肿,效率低下的代名词。不过它在软件开发中一样适用。没有时限限制的话,工作可能无限延期。在软件开发中,如果没有严格的时间限制,开发人员往往比较懈怠。这是人的天性所决定的。千万不要指望奇迹的发生――"所有员工的思想觉悟异常崇高"。作为项目管理者而言,此时应充分考虑到员工的工作效率和项目变更带来的负面影响,制定合理的项目工期并鼓动开发人员尽快完成。



七、时间分配原则

  在项目计划编制过程中,我们常常将资源可用率(人、设备)等设置为100%,殊不知你曾想过,由于开发人员需要休息、吃饭、开会等,根本不可能把所有的时间放在项目开发工作上,而且这还不考虑到开发人员的工作效率是否保持在一恒定水平上。所谓一天8小时工时制实际上是徒有虚名。由于项目管理人员的"无知",不少开发人员被迫拼命加班。结果依旧出现Brooks原则所出现问题。在实际开发中,开发员工的时间利用率能够达到80%就已经时很不错的了,我个人比较倾向于60%左右(黄金分割点)。一个常用的经验是如果项目人员不懂技术的话,项目时间可能是原计划(该计划没有考虑到资源可用率)的4/3-5/3。如果项目人员不懂技术、管理人员不懂管理的话,这个数字可能是2倍到3倍。现实就是这么严酷。这很大范围内"归功于项目管理人员。是的,我们的确没有必要责备开发人员,因为我们对资源可用率的判断完全违反常识。



八、变化原则

  也许有人问过你,在项目管理中唯一不变的东西是什么?我可以告诉你,项目中唯一不变的就是"变化"。在项目中不考虑可能发生的变化是不可思议的。不过在面对项目可能发生变化而带来的项目风险时,我们的项目管理人员往往会怀有逃避的态度。经济学里大名鼎鼎的风险规避原则便是项目管理人员心理的有效描述。作为项目管理人员来说,应该及早预测可能出现的风险,做好风险储备。虽然风险储备不能解决所有的问题,但预防胜于治疗"。可惜的是我们绝大多数人没有这方面的意识,否则医院的生意未必如此红火,项目开发之途未必如此坎坷。



九、作业标准原则

  一个团队要完成项目的开发需要有一定的章法。很可惜,在国内目前仍然以"作坊式"为主,高举"我们符合国际CMM X规范(ISO某某规范)"的环境下,未必有多少项目团队注意到这一点。我们曾经惊叹印度的高中生都能编程序,而国内却非本科、硕士不收眼帘。究其原因,在于没有开发章法或是章法粗糙,犹如牛皮圣旨一般。一个好的代码模板和代码规范能够解决大多数人编写程序随心所欲的问题,很可惜,没有多少项目管理人员有此意识,也没有多少人愿意去做这项基础任务。业务软件开发需要高超的开发技巧吗?不需要,那是故弄玄虚的开发人员的伎俩。软件开发的美在于其简洁性和规范性,不在于奇技淫巧。因为缺乏作业标准,我们付出的代价是客户的抱怨和无休止的返工。此外,对于那些以形式主意蒙人的项目团队来说,如果你实质如同你口头所说那样,也许你就不会是今天的这副狼狈相。



十、 复用和组织变革原则-解决项目问题的未来之路

  如何解决日益突出的项目工期、成本、质量等问题,这是大多数项目管理者最为关心的问题。从实践来看加强复用的力度,建立项目复用体系和实施组织变革是效果较好的途径之一。复用能够提高项目的生产率,降低项目风险。通过复用,项目管理者能够快速的进入项目问题定义之中,减少项目开发人员的工作量,从而尽可能的解决项目在时间、资源方面的过载问题。另外一条途径是实施项目团队的组织变革(Moc),精简项目管理机构、重新定义工作职责,制定柔性的项目工作流程,改善项目开发人员的沟通状况,提高项目人员的开发效率,努力营造一个良好的项目开发环境。这样才能从根本上解决项目开发的种种棘手问题。



结论

  作为一个项目管理者来说,了解和运用上述原则是不够的,若要深入的掌握项目管理知识和技巧,还必须深入学习项目管理(建议参看PMI《PMBOK》)、管理心理学、质量管理学、组织变革、系统论等方面的知识,并在工作中不断的总结和实践。唯有如此,我们的项目管理人员看自己个人简历时方不会觉得脸红,才能在公司中树立自己的管理权威性,同样也才会有一个良好的职业经理生涯的开端

分享到:
评论

相关推荐

    信息系统项目管理师论文指南加范文30篇

    软件项目管理原则谈 80 软件项目管理中的一些误区 83 软件项目失败因素分析 83 什么是项目战略计划 84 实施项目问题管理的七步走 85 述诉项目管理 87 项目管理8要点 89 项目管理13禁忌 90 项目管理:经济发展的驱动...

    信息系统项目管理师论文大全.pdf

    - **软件项目管理原则谈**:详细讲解了软件项目管理的基本原则。 - **软件项目管理中的一些误区**:揭示了软件项目管理中常见的误区。 - **软件项目失败因素分析**:分析了导致软件项目失败的各种因素。 - **什么是...

    软件项目为什么会失败?- 浅谈需求驱动的项目管理

    为了解决这些问题,软件项目管理应采用更适合迭代开发的工具和技术。例如,使用需求跟踪矩阵来管理需求变更,通过版本控制系统如Git来追踪文档更新,以及利用专门的需求管理工具,如JIRA或Confluence,来组织和协作...

    浅谈项目管理

    在IT行业中,项目管理是一项至关重要的技能,它涵盖了软件开发、硬件实施、网络部署等多个领域。本文将基于“浅谈项目管理”的主题,结合“源码”和“工具”这两个标签,深入探讨项目管理的核心概念、重要性以及如何...

    浅谈项目管理、过程改进及工作计划

    项目管理:以实际生活案例(婚礼)为切入点,浅谈项目管理过程,包括五大过程组(启动、规划、执行、监控、收尾),及十大知识领域中的合同管理、变更管理、风险管理及成本管理等方面; 项目管理体系介绍:针对PMP...

    软件开发项目进度控制浅谈

    - **协调复杂度低估**: 大型软件项目往往涉及多个团队之间的协作,低估协调的复杂度将导致沟通成本上升,影响进度。 - **环境因素低估**: 用户环境、行业环境等因素的变化也可能影响项目进度,如法律法规变化、...

    华为高管项目管理经验谈.docx

    【华为高管项目管理经验谈】 华为作为全球知名的IT企业,其高管在项目管理方面的经验具有很高的借鉴价值。本文主要探讨了软件工程的目标、项目延误的原因、进度表的制定策略、质量管理以及需求分析等方面的关键点。...

    销售力管理软件---免费的销售项目管理软件

    “销售力”管理软件就是为解决以上问题而开发的一款销售项目管理类的软件。 二、功能模块 1、系统管理 包括刷新系统、重连服务器、修改密码、修改字体、清空日志、重置服务器、模糊定位等。 2、基本资料 包含员工...

    浅谈软件过程管理实践

    ### 浅谈软件过程管理实践 #### CMMI与软件过程改进 CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是由美国卡内基·梅隆大学的软件工程研究所(SEI)基于先前的CMM模型进一步完善和发展而来...

    进度管理:软件开发项目进度控制浅谈(20211119205842).pdf

    【进度管理:软件开发项目进度控制浅谈】 在软件开发领域,进度管理是确保项目按期完成的关键环节。本文深入探讨了影响软件开发项目进度的各种因素,并提供了项目进度控制的策略,旨在帮助项目经理更好地理解和应对...

    软件测试及Bug管理经验谈

    本文将基于《软件测试及Bug管理经验谈》这一主题,深入探讨软件测试的核心原则、Bug管理的重要性和有效实践,以及如何选择适合的Bug管理工具。 #### 清晰的质量概念 软件测试的第一步在于确立明确的质量标准。这...

    浅谈敏捷软件项目研发.rar

    总结来说,“浅谈敏捷软件项目研发”这一主题涵盖了敏捷开发的核心理念、常用框架和实践策略,以及它在提升项目效率和应对不确定性方面的优势。通过深入理解和应用这些知识,软件开发团队可以更好地适应快速变化的...

    软件开发过程纵横谈(4):再谈RUP

    RUP定义了九个工作流,包括业务建模、需求、分析与设计、实现、测试、配置与变更管理、部署、环境和项目管理。每个工作流对应不同的角色,如业务分析师、系统分析师、软件工程师、测试工程师等,这些角色协同工作以...

    浅谈软件工程思想的问题

    《软件工程思想》是软件开发领域的一本经典著作,它深入浅出地探讨了软件开发过程中的各种问题,旨在提供一套...理解和应用这些思想,将有助于我们在面对复杂的软件项目时做出更明智的决策,从而提升整个项目的成功率。

    软件开发过程纵横谈(6)课程总结及案例分析

    3. 微软解决方案框架(MSF):MSF是微软提供的一种灵活的、可定制的项目管理框架,用于指导软件开发团队实现高效、高质量的项目交付。MSF结合了业界最佳实践,包括敏捷原则,为不同类型的项目提供了指导,帮助团队平衡...

    软件开发过程纵横谈(1)RUP

    RUP是由IBM的Rational公司提出的,它强调迭代和增量式开发,旨在提高软件项目的成功率。 RUP的核心概念: 1. **迭代开发**:RUP采用迭代的方式进行开发,每个迭代都包括了完整的软件开发生命周期阶段,如需求、...

    吕建伟:软件正规军,谈大型研发团队的管理

    在运营管控方面,吕建伟介绍了项目管理制度(PM制)、质量保证(QA)、物理小组等组织结构,并强调了会议卡的使用,比如日会、看板、日报以及PMO周会和月会的实施,以确保团队成员对项目进度有清晰的认识。...

Global site tag (gtag.js) - Google Analytics