阅读更多

6顶
0踩

研发管理

转载新闻 软件项目顾问的20个法则

2013-03-19 10:32 by 副主编 WnouM 评论(3) 有7372人浏览
本文来自著名的关系型开源数据库PostgreSQL的核心开发成员Josh Berkus,他还是PostgreSQL Experts Inc.(一个PostgreSQL专业服务公司)的CEO,在加入到PostgreSQL开发团队前,Josh Berkus曾参与各种软件的开发,包括OpenOffice.org、Microsoft SQL Server、Oracle PL/SQL和 (shudder) COM+。他还写过Perl。


在Josh Berkus多彩的生活中,它曾经做过雕刻师、陶艺师、糕点面包师、劳动组织者、说客、法律助理、专业的募捐活动者等。他认为这些经历给了他更广阔的视野,远比在硅谷的生活重要,但也许这是在开玩笑。从1993年起他就生活在旧金山。

以下是Josh Berkus认为在软件项目中应该遵循的20个法则:

  • 技术层面问题是管理层面问题的折射:如果一个公司在它的软件中有长期解决不掉的问题,我必然能证明这个公司在管理工作中有长期没有解决的问题。
  • 三种情况你永远遇不到:a. 慷慨的工期;b. 爽快付款的客户;c. 精确完整的文档说明。
  • 有一半的应用项目都是长寿的:“临时、一次性”的项目应用通常会延续数年,如今仍然有诞生于上世纪70年代的代码在运行。记着要为这些长寿的情况做计划。
  • 低劣的客户会毁掉你的生意:你的成功的一半来自于有能力识别那些劣质的客户、能够避开他们或在他们无休止的消耗你的时间和资源前终止和他们的合同。永远避开他们,即使他们能给你带来补偿。
  • Ask Not What’s Possible:问题不是你能做出什么,问题是客户是否有愿望为它出钱,有多大的耐心去等待。
  • 在时间和钱的换算上使用对数运算:例如,消减20%的时间需要双倍的预算资金。消减30%的预算需要四倍的总时间。
  • 所有的预估都是乐观的:一个新的应用软件的开发会耗用掉三倍于你预期的时间,2倍于你的预算。反之亦然。
  • 你永远不会有足够的时间应付三件事:a. 软件规格文档和原型;b. 说明文档;c. 代码维护。
  • 所有有业务内容的应用软件里都会有一些不伦不类的怪物,它们可能是一些事务或一些数据,抗拒你所有的把它纳入定义好的业务流程中的努力。这些怪物既是完美数据集成无法实现的阻因,也是至少30%麻烦事端的来源。
  • 不要说是重构:客户永远不会为代码整理工作付款,即使这是他们需要的。想想办法找个其它的名词来代替“重构”,以此来让这种工作能够完成。
  • 你拖延越长的时间去重构,重构就会用掉你越长的时间。开发期主要原型和方案上的调整尤其致命。
  • 一定要签合同,即使只是一天的工作。同样,使用你自己的合同,而不是客户的合同,让一个真正的律师为你写一份合同。这是值得的。
  • 合同签订过程可以当作项目开发实现的一个石蕊测试(指依靠一个单独的标志便得出结论的测试)。如果客户花大量的时间在合同细节上纠缠,那么项目真正实施过程(或付款过程)估计就会很困难。如果客户在一些奇怪含混的条款上坚持不让步,那他们就是打算利用这些条款。
  • 客户的记性很差:不管和他们签订过什么,他们总会忘记几天前答应过什么。备案所有的需求和变更,并备份。
  • 永远不要答应一个固定的承包价。除非完全相同的任务你之前做过一次。
  • 第三方参与者都是没能力的:当一个任务依赖于,甚至只是部分的依赖于一个第三方厂商的生产速度,文档或产品质量,当这些不在你的直接控制中时,永远不要接受一个固定标价或成功才付款的合同。当有数据交换或需要修改别人的代码时,不要接受固定标价,永远不要。
  • 客户都是没品位的:永远不要让客户决定你的开发工具、合作商或工作环境。或者,要为放弃这些权利收取额外的报酬。
  • 所有的会议都要收费,否则你的半个生命的时间都要用于参加这些会议。
  • 储备足够的资金:通常,如果一个客户意外的延迟了一个月付款,那所有的客户都可能这样。永远储备能支撑60天的资金。
  • 严重延迟的项目永远不会竣工。通常,任何一个项目,如果它150%的超出了预定的工期,那它就是有严重的管理上的问题在永久的阻拦它完工。
英文原文:20 Rules of Software Consulting / 译文:外刊IT评论
  • 大小: 38.5 KB
来自: 外刊IT评论
6
0
评论 共 3 条 请登录后发表评论
3 楼 bhq10000 2013-03-19 13:11
基本上接不到什么单子了
2 楼 geminiyellow 2013-03-19 12:31
小伙子,挺牛的嘛。
1 楼 clxy 2013-03-19 10:57
引用
技术层面问题是管理层面问题的折射

引用
三种情况你永远遇不到

引用
客户的记性很差


绝.对.赞.同!

引用
所有的会议都要收费

如果可以,早就可以住着海景房退休了......

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 测试BUG流程管理规范

    BUG单描述模板,开发和测试工作配合流程。

  • bug的处理流程是什么?一文教你快速学会bug的处理流程

    这个应该是我们重现bug的一个前提,如果没有这个前提,我们可能会无法重现问题,或者跟本就无从下手。

  • 【软件测试】bug以及测试用例的设计方法

    本文对于测试方法以及设计测试用例的方法进行了简要的讲解。

  • Bug管理的一般标准流程

    1、测试人员提交新的Bug入库,错误状态为New。 2、高级测试人员验证错误,如果确认是错误,分配给相应的开发人员,设置状态为Open。如果不是错误,则拒绝,设置为Declined(拒绝)状态。 3、开发人员查询状态为Open的Bug,如果不是错误,则置状态为Declined;如果是Bug则修复并置状态为Fixed。不能解决的Bug,要留下文字说明及保持Bug管理为Open状态。对于不能解决和延期解决的Bug,不能由开发人员自己决定,一般要通过某种会议(评审会)通过才能认可。 4、测试人员查询状态为F

  • 如何保证测试质量之Bug管理规范及流程

    目录 Bug属性规范及流程1 1.目的2 2.范围3 3.工具3 4.角色和职责3 5.Bug属性定义3 5.1.bug类型4 5.2.bug严重性4 5.3bug优先级5 6.Bug管理流程6 6.1提交bug6 6.2分配bug6 6.3解决bug7 6.4验证bug7 6.5遗留bug7 6.5.1跟踪遗留bug7 6.5.2产品发布后发现的bug8 6.6bug分析8 目的 本文档定义bug的整个生命周期,...

  • (四)Bug的生命周期

    Bug的属性 Bug重现环境 这个应该是我们重现bug的一个前提,如果没有这个前提,我们可能会无法重现问题,或者跟本就无从下手。 操作系统 这个是一般软件运行的一大前提,基本上所有的软件都依赖于操作系统之上的,对于一个软件来说,要想在某个操作系统上运行,必须要对这个操作系统支持,这就需要有真对性的设计与开发。对于不同的操作系统,其可能存在差异(如:win xp 与 win 7)或本质的区别(如 win 7 与 CentOS linux ),所以,操作系统环境是重现问题的一个重要前提。 浏览器 对于

  • 软件测试——Bug管理流程

  • 软件测试哪个环节最重要性,软件测试环境的重要性

    经历了几个项目,对测试环境对软件测试的影响深有感受。一个良好的软件测试环境对软件测试人员进行测试是个很好的保障,提高软件测试效率,也是对项目质量的一种保障。同时软件测试环境适合与否会严重影响软件测试结果的真实性和正确性。在设计软件测试环境阶段根据客户的需求进行环境设计,当然期望测试环境无限接近于客户所需软件运行的真实环境,这样能够测试出真实环境中的所有问题,同时也需要理想环境以便找出问题的真正原因...

  • 软件测试BUG篇

    研发收到BUG会进行修复,该过程测试只需要将bug产生的具体流程步骤讲解给研发听,如果bug描述的文字详细,该部分测试是无需介入的,研发修复好后会将BUG再次指派给对应测试。在IT软件行业里面,BUG代表的是研发在开发软件的过程中,编写过程产生的缺陷、错误,或与产品提出的需求不符合的功能点等的泛指,在测试过程之中,测试的任务便是找出这些BUG~一般优先级代表该BUG研发需要修复的优先,比如一个研发收到10个BUG,他会优先将优先级为最高的BUG优先看,优先级一般分为:最高、高、中、低、最低五个个等级;

  • 软件测试过程中对bug的处理流程

    又属于一篇普及文,希望自己在被各种技术吸引的同时,能时常来整理和总结软件测试最基本的知识。   从刚工作时接触的第一个缺陷管理工具禅道,到redmine、JIRA、bugzilla ,再到现在的QC,当然还有其它种的开源的或商业的缺陷管理工具,它们的本质是一样的,就是来管理缺陷的生命周期。   其实,你理解任意的一款工具,其它的工具也一定能无师自通。这不...

  • 软件工程师解决测试人员测试出的bug流程

    软件工程师在工作过程中,难免要解决软件中的各种bug,但是经常由于各种问题导致一个bug反反复复修改,甚至引出更多的bug。纠其原因,更多的是处理bug过程不规范导致的。笔者总结了工作中遇到bug的处理流程,如下:   一、bug确认 分配到一个bug后,要根据bug单号到bug管理系统查看该bug的详细信息。 1. 查看问题现象,了解问题 2. 查看软件版本和操作流程,检查当前版本和操作...

  • 测试流程和bug流程

    文章目录一、软件测试的生命周期(测试流程)1、需求分析2、测试计划:3、测试设计/开发:4、测试执行:5、 报告评估二、描述 bug 要素三、bug 的级别1、崩溃2、严重3、一般4、次要(建议性)四、bug的生命周期 一、软件测试的生命周期(测试流程) 首先软件开发的生命周期: 需求分析----计划----设计----编码----测试----运行维护 软件测试的生命周期:1、需求分析 深入了解需求,参与需求评审会议,阅读理解业务需求,分析需求点,验证需求,从中提取中测试点; 2、测试计划:

  • 测试bug的管理流程

    软件测试中Bug管理的一般流程 软件测试的主要目的在于发现软件存在的错误(Bug),对于如何处理测试中发现的错误,将直接影响到测试的效果。只有正确、迅速、准确地处理这些错误,才能消除软件错误,保证要发布的软件符合需求设计的目标。在实际软件测试过程中,对于每个Bug都要经过测试、确认、修复、验证等的管理过程,这是软件测试的重要环节。         错误跟踪管理系统

  • 测试中Bug的管理流程和禅道

    一、Bug的定义 软件的bug,狭义概念是指软件程序的漏洞和缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节,或与需求文档存在差异的功能实现等。 我们的职责就是,发现这些bug,并提交给开发,让开发去修改。 二、bug的类型 要确定一个bug的类型,需要对项目或产品有比较深的理解,这个划分对于开发定位问题影响很小,但对于问题类型的统计就比较重要了。 常见的bug类型划分(...

  • 软件测试流程及BUG的定位(个人学习笔记,勿喷)

    软件测试流程 需求分析阶段 1.需求:产品原型,思维导图/需求文档,口述(超级坑) 2.对需求进行熟悉学习,弄明白每个功能是怎么样子的,软件业务操作流程是什么样子的,不懂就问 3.画业务流程图 4.提取功能点 5.需求分析说明书 6.特殊情况:没有需求文档,没有产品经理时: ①根据自己的惊颤,自己当产品,自己定需求。 ②参考市面上同类型的软件的设计。 ③和同事讨论,商量着做,但是一定要有自己的想法,有理有据 7.测试设计阶段 ①测试计划: 写清楚要做什么事情,写清楚每个人负责的内容是什么,写清楚为什么要去做

  • 软件测试之BUG处理流程

      什么是软件测试缺陷? 测试行业的习惯名称是bug管理。 在软件或程序开发过程中,程序员不合理的编码和不合理的系统设计结构都会导致报错,影响系统程序的正常运行。 而软件测试的目的之一就是通过手动测试或自动测试工具进行操作,测试发现这些bug,修复代码。   一、软件测试缺陷分类   1、网络环境; 如果在测试过程中外网不稳定,也可能造成软件测试缺陷。 比如性能测试对网络环境的配置要求比较高,网络延迟和卡顿都会影响测试结果。   2、硬件环境; 磁盘空间和内存不足、CPU运行速度等造成的系统瓶颈。对操

  • 软件测试之BUG的生命周期

    作为一名测试人员,重要的工作内容之一,就是找BUG,提交BUG,验证BUG,推进BUG的解决,直至软件达到发布的标准,提高软件的质量,及研发的工作效率和质量。 要找BUG,那么,就要先了解一下BUG的定义是什么? BUG的定义: 软件的BUG,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与...

Global site tag (gtag.js) - Google Analytics