之前在一家公司应聘,被问过这个问题;在新的岗位从事工作,见过的公司多了,成功和失败的案例都不少,总结一下成功的和失败的特点,作为参考和总结。
在我看来,一个项目和产品无非是
需求-设计-开发-测试-发布五个阶段的是最佳实践,那么项目也就是最佳实践。不同的项目和产品,各个阶段有不同的比例,根据项目的技术难度和开发周期而定,不一而论。但是无论比例如何,这五个阶段要成功的关键,都是要能化繁为简,在纷乱的变更和难题中,找到最佳最简的解决方案,一击致命。
需求是第一步,其实需求的获取和管理,没那么可怕的,关键是做的人的素质,对技术的把握力和沟通能力。
我从事过两个很成功的项目的需求:
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系列的经验与教训便是...
总之,理解并解决这些项目管理中的关键问题对于提高ERP项目的成功率至关重要。正确的归因和应对策略能够帮助企业避免重复错误,推动其信息化进程健康发展。在面对项目失败时,企业应勇于承担责任,深入分析失败原因...
【华为项目管理】是华为公司内部一套严谨且高效的管理方法,旨在确保项目的成功执行和卓越交付。这份"成功的项目管理华为绝密培训资料"包含了华为在项目管理领域积累的宝贵经验,是提升项目经理专业能力的重要参考...
此外,WinWord项目的成功也验证了微软的组织结构和项目管理经验的正确性。微软的组织结构使得每个部门都能集中精力于自己的领域,并提高了项目管理的效率。微软的项目管理经验告诉我们,软件项目管理需要不断地学习...
通过这门课程的学习,学员可以掌握项目管理的全面知识,从项目的开始到结束,包括策划、执行、控制和收尾的各个阶段,从而提高项目成功率,减少失败的风险。这对于个人的职业发展和企业的成功至关重要,特别是在当前...
- **A选项**:项目管理办公室(PMO)不是所有项目成功的必要条件,但缺少项目章程和项目管理计划确实可能导致项目失败。 - **B选项**:干系人需求不清楚、团队成员地理位置分散以及团队建设不力确实是项目失败的常见...
* 项目管理的失败的原因包括项目的目标和范围不明确、项目的时间和资源的限制、项目的沟通和协调不良等。 因此,项目管理是指对项目的计划、组织、监控和控制,以确保项目的目标和要求得到满足。项目管理需要项目...
第二十三讲和二十四讲讲述了如何改进组织内的项目管理和成功的项目管理标准,分析了项目失败的原因,提出了成功项目的关键因素。 综上所述,成功的项目管理需要全面考虑项目的生命周期,从前期的战略规划到后期的...
软件项目管理是软件工程领域中一个极为重要的子领域,它涉及到软件开发、维护、升级等全过程的管理和控制。随着信息技术的快速发展,软件项目的复杂性和规模不断增大,项目管理的角色和挑战也随之增加。本综述从国内...
在项目管理领域,华为作为全球领先的科技公司,其成功的项目管理经验值得我们深入学习和借鉴。这份名为“向最优成果的公司学习项目管理《华为内部资料-成功的项目管理》.zip”的压缩包文件,显然是华为内部关于项目...
1. **项目管理案例集.doc**:这份文档可能包含了一系列实际的项目管理案例,通过分析成功或失败的案例,帮助读者理解在真实环境中如何进行项目规划、执行和控制,以及如何应对各种挑战和风险。 2. **研发项目管理...
项目管理过程中的阶段性、独特性、不确定性以及对风险的管理都是确保项目成功的必要条件。同时,良好的项目管理还需要项目经理和团队具备一系列专业技能和方法论知识。在项目管理过程中,合理的规划、组织、执行、...
华为项目管理金种子初级培训教材涉及的知识点非常丰富,涵盖了项目管理的基本流程、常用知识、实际应用、华为项目管理...通过对这些知识的学习和实践,项目管理人士可以在今后的工作中更好地管理项目,提高项目成功率。
从给定的文件信息来看,该课件主要探讨了IT项目管理的重要性和实施方法,以及在实际企业中的应用。以下是对这些知识点的详细说明: ### IT项目管理的重要性 IT项目管理是确保信息技术项目的成功实施的关键。它涉及...
需求驱动的项目管理强调灵活性、迭代和持续反馈,需要采用适当的工具和技术来支持这一过程,以提高项目成功率。在实践中,项目经理和团队应适应敏捷原则,采用更符合软件开发特点的方法论,以确保项目的顺利进行。
通过对项目生命周期的理解、项目管理过程的掌握以及风险管理的应用,可以帮助项目经理有效地管理和控制工程项目,确保项目成功实施。这些知识点对于任何从事工程项目管理工作的专业人士来说都是非常宝贵的资源。
影响项目成功的关键因素包括明确的目标和范围、高层领导的支持、健全的组织结构、有效的沟通渠道、全面的项目管理和变更控制,以及项目经理的经验。而项目失败通常与目标不清晰、领导力不足、技术问题、计划和控制...
《研发项目管理方法》(RDPM) 是一套针对科研与开发项目的专业管理框架,旨在提高项目的成功率,确保研发过程的高效、有序进行。该方法论综合了项目管理的经典理论与研发活动的特性,旨在帮助组织在创新过程中实现...
项目管理是指在限定的时间、成本和资源条件下,通过计划、组织、控制等手段,确保项目目标的成功实现的一系列管理活动。项目管理不仅涉及技术层面的工作,还涵盖了沟通、协调等多个方面。 ### 二、项目启动阶段 ...