`
andyyehoo
  • 浏览: 70160 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

成功和失败的项目管理比较

阅读更多
之前在一家公司应聘,被问过这个问题;在新的岗位从事工作,见过的公司多了,成功和失败的案例都不少,总结一下成功的和失败的特点,作为参考和总结。

在我看来,一个项目和产品无非是需求-设计-开发-测试-发布五个阶段的是最佳实践,那么项目也就是最佳实践。不同的项目和产品,各个阶段有不同的比例,根据项目的技术难度和开发周期而定,不一而论。但是无论比例如何,这五个阶段要成功的关键,都是要能化繁为简,在纷乱的变更和难题中,找到最佳最简的解决方案,一击致命。

需求是第一步,其实需求的获取和管理,没那么可怕的,关键是做的人的素质,对技术的把握力和沟通能力。

我从事过两个很成功的项目的需求:

1个是技术总监亲自做的需求,老外,美籍华人。整个系统他都了如指掌,在和客户谈需求的时候,他很清楚什么可以做,什么不可以做。旁边有下手负责记录和整理会议纪要,回来会整理成规范的use case文档,发过来。由我先审核一遍,不明白的地方沟通(这里回头说一下沟通方式),等待反馈,一般1个回合搞定,然后就流入设计阶段。

这里成功的因素有3个

1. 强有力的需求开发者

技术总监做客户沟通,当然这个对于大多数企业来说是不可能。但是需求开发者的层次越高,那么需求的质量就越高,项目的效果也就越好。国内的企业,一般喜欢用不太懂开发的市场人员去做需求开发,不是说都不好,只是这样的效果,好的很少。

当然,其实做需求开发,重要的是沟通能力和写作能力。这个见下面一条。

2. 详细规范,清晰明了的需求文档

其实需求文档无须言必谈用例(Use Case),用例图,那些条条框框实在很烦人,而且说实话,我就没见过国内的写得很规范的这种用例文档,老外愿意不厌其烦的写好所有的细节,这个我佩服,但是不见得这个就是最佳的表达方式。根据项目的实际情况,信息明了的文档,准确的业务描述,比起一堆用例图和无用的文字好的的哦,再配上一些好的设计图,胜过形式主义的千言万语。

3. 开发方leader的审核和反馈
作为off board一方的开发leader,对需求是第二道把关了,如果不能很好的根据开发团队的现状和系统的理解,做出对需求的有效判断,那么需求的有效按期开发,就不可能很好的完成。

第二个成功案例比较现实。基本不懂技术细节的业务经理,和客户做沟通交流,记录所有的需求,梳理归档后,和技术经理沟通,决定哪些是可以本版本发布,哪些是下个版本发布,哪些不发布。

这种模式比较可行,相信很多公司也有这个条件,要点2个:

1. 业务经理的沟通和文档能力

2. 技术经理的审核力

3. 两者默契的配合

设计——适度设计

我最讨厌Scrum之处,莫过于Scrum对设计的忽略了。典型的场景是一个功能点给某个人了,不需要设计,不需要评审,开始Coding吧,也不理会模块的大小,重要性,交互集。当然了,这和公司的实施策略不合理有关,但是更多的也是遵循了Scrum原则的结果。不要过度设计,不代表不设计。这样做出来的程序,功能简单的还好;功能复杂的,如果那个人能力不行,很容易就需要推倒重做,即便那个人能力不错,也容易出现做出来以后,和其它人员的代码对不上号的情况,又需要几个Story来做所谓的集成。

其实我当然不是提倡八股文形式的cmmi评审,项目有个Technical Leader,在任何业务或者技术需求确定后,在做之前评估一下,是否需要设计。需要的话,分配或者自己做好个设计,然后群发讨论一下,大家看了之后,都明白你做的思路,并且提出意见,在没有意见的时候,就可以开始做了。

交流——公开可追溯的交流

说到需求和设计,都设计到一个迭代的概念,就是都不是一次成型的,肯定需要讨论。作为一种远程交互的结果,我们最容易遇到的一个难题莫过于著名的“邮件陷阱”。大部分的交流都在邮件群发中完成,最后能沉淀到文档的东西不多,就是沉淀了,设计的过程,思路,也不会写入文档。真知灼见往往埋没在邮件的海洋。而过了一段时间后,不用说讨论者离职,就算不离职,他自己也很难在邮件的海洋中,找到这些设计的蛛丝马迹,除非他有非常优秀的个人工作习惯和资料整理能力。

这个问题在国外现在已经有很简单的解决方案,就是“黑板”,借助web 2.0的项目管理软件,例如BaseCamp之类的,道理很简单,有什么设计,需求,都是起一个讨论(Discuss),简单的就直接图片加文字,复杂的就上传附件,然后相关人员围绕着这个topic,在这个discuss下,各抒己见,每个回复都会发邮件给相关人。实现很简单,和论坛差不多,但是作用确很大。所有的讨论,都保留在这个讨论中,也就是数据库。邮件只是个通知,没有任何实质内容,新来的人员,只要把相关的讨论(Discuss)都看完,就可以了解相关的设计和需求,不同人的见解和思路。

这就是公开而可追溯的交流。


编码——定时编码法

说到定时编码法,其实和定时工作法一样。很多程序员写代码喜欢不做计划,拿了需求就开始写,一边写一边做别的事情,回复邮件,浏览网页什么的,效率很低,写着写着也就不知道自己写什么了,更别说现在的开心网干扰。

定时编码法,也是国外现在比较流行的方法。其实一个程序员真正有效的工作时间,一天也就1,2小时。在这段时间内,程序员应该先做好规划,自己接下来的编码应该达到什么的目的?设立一个可见的milestone,不要超过2小时。

然后,关掉你的IM,邮件,网页,开始全神贯注的聚焦于你要做的事情,一气呵成,在规定时间内完成。漂亮的话,给自己点鼓励。这个和结对编程是不矛盾的,可以共用,关键点是时间不能太长,要定时,要全神贯注。在完成工作的同时,提高自己的专注力等素质。


单元测试——交叉单元测试

食不厌精,脍不厌细,写单元测试要有这样的精神。尤其是关键模块的单元测试。良好的单元测试,应该在各个层面有良好的覆盖率,言之有物,像一张防护网一样,在重构或者修改功能代码出错时,及时的报错。而不是“Keep Silience”。对关键的业务逻辑和核心逻辑,测试用例的覆盖一定要细而密。对于Web层,不建议用单元测试覆盖,可以在人工或者自动化的功能测试中,进行Web层测试。

与其提倡结对编程,我更提倡交叉单元测试。一个人写自己的测试,无论如何都有惯性思维在里面的,而交叉的单元测试,可以提早发现很多想当然的问题。而新手的单元测试水平,也可以在老手的带动下,得到很好很快的提高。


功能测试——细粒度的自动化


集成和构建——尽可能统一,差异最小化

每日构建这个是最基本的事情了,无须多说。在小型和本地单库合作项目中,用Subversion,基本没什么问题了。在大型的团队开发中,要设计好分库的事情,分离出变与不变的部分。分开库存储。多变而多人协作的模块,可能需要建很多流。尽可能的优化合并的流程。


零差异:开发环境和实施环境尽可能的零差异,开发的版本和运行版本避免差异。

分享到:
评论

相关推荐

    软件项目管理——失败案例分析

    软件项目管理——失败案例分析,IBM360系列的经验与教训

    成功的项目管理 实例讲解

    成功的项目管理 第一讲 项目与项目管理 1.项目的基本概念 2.项目管理的概念 3.项目管理的重要性 第二讲 项目管理的最新发展 1.现代项目管理的创立过程 2.现代项目管理的发展趋势 3.项目管理流行的原因 第...

    项目管理论文

    软件项目管理的成功原则 75 软件项目管理原则谈 77 软件项目管理中的一些误区 80 软件项目失败因素分析 80 什么是项目战略计划 81 实施项目问题管理的七步走 82 述诉项目管理 84 项目管理8要点 85 项目管理...

    信息系统项目管理师 论文 信息系统项目管理师范文

    浅谈项目管理和企业管理的冲突和协调发展 351 权力之争使信息化项目内耗严重 355 如何把握信息化项目管理 356 如何化解信息化阻力 358 如何提高信息化建设项目进度控制 359 如何做好零售企业信息化项目规划 360 通信...

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

    项目管理成功的12个关键原则 93 项目管理的20个关键问题 94 项目管理的20条锦囊妙计 96 项目管理的成功方程式 97 项目管理的概念 99 项目管理的概念及项目的过程管理 100 项目管理的三角链 102 项目管理的三角难题与...

    软件项目管理学习心得(精选5篇)参考.doc

    涵盖了项目管理的基本概念、项目集成管理、项目范围管理、项目进度管理、项目成本管理、项目质量管理、项目人力资源管理、沟通管理、风险管理和项目采购管理等方面的知识。 项目管理是项目管理在领域的应用,结合了...

    项目管理:计划、进度和控制的系统方法.part1.rar

    第1章 概述 引言 1.1 了解项目管理 1.2 定义项目成功 ...2.8 什么是成熟的项目管理和出色的项目管理 2.9 什么是非正式的项目管理 2.10 成功的多面性 2.11 失败的多面性 2.12 阶-门步骤 2.13 项目生命期

    项目管理题目答案.docx

    1.项目管理无处不在、无时不在,项目管理既是项目成功的要素,也是项目失败的根源。 2.越来越多的企业正在或将要引入项目管理,一些国内的企业也把项目管理作为自己主要的运作模式和提高企业运作效率的解决方案。 3....

    云效2.0敏捷项目管理实践及工具落地.pdf

    云效2.0敏捷项目管理实践及工具落地是云效2.0平台提供的一站式敏捷项目管理解决方案,旨在帮助项目经理和团队成员更好地管理项目、提高项目成功率。该解决方案涵盖了项目管理的各个方面,包括需求管理、计划管理、...

    IT项目管理

    《IT项目管理(原书第4版)》是关于IT项目管理方面的教材,全面...全书通过许多现实中的成功和失败的项目实例,讲述了项目管理的基本内容,包括项目集成、范围、时间安排、成本、质量、人力资源、沟通、风险以及采购。

    IT项目管理 (1).docx

    1.项目管理无处不在、无时不在,项目管理既是项目成功的要素,也是项目失败的根源。 2.越来越多的企业正在或将要引入项目管理,一些国内的企业也把项目管理作为自己主要的运作模式和提高企业运作效率的解决方案。 3....

    项目管理案例实践.pptx

    项目计划是项目管理的基础,它将影响项目的成功或失败。在项目执行阶段,项目团队需要执行项目计划,完成项目的各个任务。在项目监控阶段,项目经理需要监督项目的进度、预算和质量,确保项目按照计划进行。在项目...

    互联网项目管理要点(干货).pdf

    互联网项目管理要点 一、互联网项目管理的核心要点 ...互联网项目管理的要点是项目经理需要关注和掌握的一些关键要点,这些要点可以帮助项目经理更好地管理项目,避免项目风险,提高项目的成功率。

    软件项目管理案例教程韩万江2.ppt

    软件项目管理案例教程韩万江2主要讲解了软件项目管理的基本概念、原则和方法,旨在帮助项目经理和项目团队成员更好地管理软件项目,提高项目的成功率。本教程将软件项目管理分为多个阶段,包括项目初始、项目计划、...

    软件项目管理第一次作业

    软件项目管理课程的第一次作业:举出三个工作学习中你所参与过的项目,并分析这些项目的特点。

    基于IPD的研发项目管理.pptx

    项目管理的历史发展经历了三个阶段:经验式项目管理、传统项目管理和现代项目管理。现代项目管理形成了系统学科,由PMI与IPMA协会创立并完善项目管理标准。 项目管理五大过程包括启动过程、计划过程、实施过程、...

    IT项目管理案例与答案解析.pdf

    好的项目启动可以确保项目的成功,因为项目启动阶段可以形成一个良好的沟通体系,让所有与项目相关的人都理解项目的重要性,同时形成一个由双方老总、项目负责人和项目组成员所构成的三级沟通体系,确保项目管理的...

    软件综合项目管理总体作业流程设计与分析.doc

    软件项目管理总体作业流程设计与分析的主要目标是确保软件项目的成功开发和实施,避免软件项目的失败。 软件项目管理总体作业流程设计与分析的重要性体现在以下几个方面: 首先,软件项目管理总体作业流程设计与...

    软件项目管理案例分析——WinWord之成败

    软件项目管理的案例分析关于微软的winword的成败

    软件项目管理师大全(大纲+论文格式+经典案例)

    浅谈项目管理和企业管理的冲突和协调发展 351 权力之争使信息化项目内耗严重 355 如何把握信息化项目管理 356 如何化解信息化阻力 358 如何提高信息化建设项目进度控制 359 如何做好零售企业信息化项目规划 360 通信...

Global site tag (gtag.js) - Google Analytics