阅读更多

6顶
0踩

研发管理

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

2013-03-19 10:32 by 副主编 WnouM 评论(3) 有7392人浏览
本文来自著名的关系型开源数据库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的一个前提,如果没有这个前提,我们可能会无法重现问题,或者跟本就无从下手。 操作系统 这个是一般软件运行的一大前提,基本上所有的软件都依赖于操作系统之上的,对于一个软件来说,要想在某个操作系统上运行,必须要对这个操作系统支持,这就需要有真对性的设计与开发。对于不同的操作系统,其可能存在差异(如:win xp 与 win 7)或本质的区别(如 win 7 与 CentOS linux ),所以,操作系统环境是重现问题的一个重要前提。 浏览器 对于

  • Bug流程规范

    本文档定义bug的整个生命周期,规范bug的解决方案及管理流程。Bug在流转的过程中有章可循。规范bug严重等级使开发人员与测试人员能根据此文档准确判断bug的严重程度并加以解决。

  • Bug的管理流程以及Bug的生命周期或状态

    问题,确保软件质量。Bug 生命周期(Bug 状态)描述了 Bug 从被发现到最终关闭的完整过程。Bug 生命周期描述了 Bug 在整个管理流程中的状态变化。Bug(缺陷)管理是软件测试过程中重要的一环,合理的 Bug 管理流程可以。→ 在 Bug 管理系统中记录 Bug(描述、严重程度、重现步骤)→ 如果 Bug 修复并通过验证,则关闭 Bug;→ 测试人员验证修复是否成功,并测试相关功能是否受影响。,避免修复一个 Bug 产生新问题。,确保高优先级 Bug 及时修复。,找出系统薄弱点,提高代码质量。

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

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

  • Bug管理的一般流程

    软件Bug的状态 新信息(New):测试中新报告的软件缺陷 打开(Open):被确认并分配给相关开发人员处理 修正(Fixed):开发人员已修正,等待测试人员验证 拒绝(Declined):拒绝修改缺陷 延期(Deferred):不在当前版本修复的错误,下一版修复 关闭(Closed):错误已被修复 Bug管理的一般流程 测试人员提交新的Bug入库,错误状态为New。 高

  • 测试bug的管理流程

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

  • 测试主要环节

    测试的主要环节需求分析→测试计划→测试设计→测试环境搭建→测试执行→测试记录→缺陷管理→软件评估→RTM 测试开发人员的工作范畴:测试用例的编写,测试环境搭建和测试执行普通测试人:测试执行和缺陷提交测试负责人:负责整个测试各个环节的跟踪、实施、管理等说明: 1.以上流程各环节并未包含软件测试过程的全部,如根据实际情况还可以实施一些测试计划评审、用例评审,测试培训等。在软件正式发...

  • 浅谈测试流程(摘)

    【摘要】软件测试从哪里开始到哪里结束?中间经过哪些环节以及各个环节要注意哪些事项。 【关键词】测试流程、需求分析、测试用例、测试计划、缺陷管理 一、概述   一般而言,软件测试从项目确立就开始了,前后要经过以下一些主要环节:   需求分析 -> 测试计划 -> 测试设计 -> 测试环境搭建 -> 测试执行 -> 测试记录 -> 缺陷管理 -> 软件...

  • 软件测试——bug提交及跟踪流程

    Bug的跟踪管理 指派bug: 优先看bug是不是某需求的,指派给对应需求的开发负责人 如果无法区分是哪个需求的问题,项目老大指派 常见的笔试面试题: 公司的bug是如何进行跟踪的? 遗漏bug?遗留bug? Bug的生命周期?(笔试题) 你提交一个bug,开发说不是,如何处理? 你在发现bug并确认不该的过程中,对于复现率不高,偶发bug如何处理? 有没有你印象深刻的bug,bug的原因/bug当时怎么解决的? 测试工具:禅道 禅道中生成报表用来写测试报告 如何提交一个高效.

  • 浅谈bug描述

    引子 清楚准确的描述BUG,这是测试人员的必备的基础。针对各种问题,我们如何使自己提交的BUG让开发人员看一遍就明白呢?我相信大部分人都会碰到以下这种情况: 我们提交上去的BUG在某些特定的环境下存在,这时候如果没有写清楚具体产生BUG的前提条件的话,BUG难以重现,这个时候开发就会说: 为什么我测试的时候没有出现这个问题呀? 为什么在我的机器上没有出现这个问题呀? ...

  • 软件测试培训之bug管理

      bug信息不完全   某些信息,例如项目、模块、指定操作人员,也就是说,由谁负责处理,等等,这些信息用于统计分析,用于统计分析、项目、模块、谁的 bug多、谁发现的 bug多、谁修改的 bug多等等,根据这些信息可以大致看出工作量和工作质量。因此,别为了麻烦,把 bug的信息全部写完。   所提供的信息不准确   有些 bug描述一带而过,措辞含糊不清,只是说出有错误,但有错误现象,提示信息是什么,如何操作,也不清楚,这样的 bug交给开发人员,只会给开发人员增加负担,因为他自己需要再做测试,

  • 20.软件缺陷管理流程(2)

    管理过程/缺陷管理 编辑 处于CMM第一级(或称为初始级)的软件组织,对软件缺陷的管理无章可循。工程师们只是在发现缺陷后,修改相应的软件。通常,没有人会去记录自己发现的缺陷。也没有人知道在新的软件版本里,究竟纠正了哪些缺陷,还有哪些缺陷未被纠正。而且,只有在下一轮测试中才有可能知道那些所谓已被纠正了的缺陷是否真的被纠正了,更重要的是纠正过程是否引入了新的缺陷。 所以这样的软件组织的项目

  • Bug管理的流程和几个重点

    软件测试的主要目的在于发现软件存在的错误(Bug),对于如何处理测试中发现的错误, 将直接影响到测试的效果。只有正确、迅速、准确地处理这些错误,才能消除软件错误,保证 要发布的软件符合需求设计的目标。在实际软件测试过程中,对于每个Bug都要经过测试、确 认、修复、验证等的管理过程,这是软件测试的重要环节。 错误跟踪管理系统  为了正确跟踪每个软件错误的处理过程,通常将软件测试发现的每个错误作为一条条记录 输入制定的错误跟踪管理系统。  目前已有的缺陷跟踪管理软件包括Compuware公司的TrackReco

  • 测试流程图

    1: 过程决定质量, 测试过程贯穿整个软件开发声明周期; 2: 测试过程和开发过程在整个开发周期相辅相成; 3: 测试过程是对整个开发过程的验证, 二者互相依赖 4: 测试过程是整个测试活动中一个至关重要的环节; 5: 标准的软件测试流程包括六大阶段 项目启动>计划与控制>分析和设计>实现和执行>评估和报告>结束活动 项目...

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

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

  • 4.软件缺陷(BUG)管理流程

    一、简介 1. 背景 如果公司bug管理混乱,bug未划分优先级,将会导致许多优先级高的bug未能及时解决,同时研发部门会花费大量的时间处理非紧急bug,将会严重影响研发中心、产品中心、运营中心、商务中心的工作效率。 2. 影响范围 研发中心、产品中心、运营中心、商务中心。 二、软件缺陷分类标准 1. 缺陷类型定义 表2-1 缺陷类型定义表 缺陷类型 描述 FC-功能问题 影响了重要的特性、用户界面、产品接口、硬件结构接口和全局数据结构,并且设计文档需要正式的变更。如:逻辑、指针、循环、递归

  • 史上最全测试流程详解----超详细

    前言----- 对于测试流程基本很多做过测试的大牛,小哥哥,小姐姐都能说出个十之八九,但是对于细节,可能还需要一些整理文件,这不,我整理了一些测试的全部流程,希望能给大家带来帮助,有不妥的地方,请大家指正。 测试准备阶段 一.测试需求文档 1.产品需求文档、产品原型图、接口说明文档以及设计说明文档等应齐全 ---重点:需求文档分析 了解熟悉业务,分析需求测试点 (1)确认功能(业务功能,辅助功能,数据约束,易用性需求,编辑约束,参数需求,权限需求,性能约束) (2)场景分析(考虑场景...

  • 测试流程梳理

    目的: 梳理整个测试流程,从管理的角度去分析每个环节的耗时、要做的事情,方便在项目初期做到整个测试流程的人力分配、时间分配,做到临危不乱。 测试流程: 初期的测试计划制定: 1、用例数估算:前期的用例数估计准确与否,会影响到后面的测试设计环节、执行环节和版本结束的分析环节。 2、版本bug估算:这个需要会影响到后面执行环节里面的bug回归消耗人力和时间安排。估算可以按照不同公司不同的情况来估算,例如版本结束bug的数量一般是bug数量的60%左右,或者如果有设计到老功能的,可能会发现10%左右的历

  • Bug管理的一般标准流程

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

Global site tag (gtag.js) - Google Analytics