阅读更多

6顶
0踩

研发管理

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

2013-03-19 10:32 by 副主编 WnouM 评论(3) 有7376人浏览
本文来自著名的关系型开源数据库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管理的必要性,详细描述了Bug状态流程图、Bug处理流程以及在Bug管理过程中所涉及的关键角色。Bug状态流程图概述了Bug从报告到解决的各个阶段,包括新建、确认、分配、处理中、修复、验证和关闭等。Bug处理流程包括了报告Bug、分类和优先级设置、问题分析、修复和测试、代码审查、合并与部署、回归测试以及监...

  • (四)Bug的生命周期

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

  • 【软件测试专栏】软件测试 — BUG篇

    ⼀个计算机bug指在计算机程序中存在的⼀个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault),这些bug使程序⽆法正确的运⾏。Bug产⽣于程序的源代码或者程序设计阶段的疏忽或者错误。bug级别⼀般分为:崩溃、严重、⼀般、次要New:新发现的Bug,未经评审决定是否指派给开发⼈员进⾏修改。Open:确认是Bug,并且认为需要进⾏修改,指派给相应的开发⼈员。Fixed:开发⼈员进⾏修改后标识成修改状态,有待测试⼈员的回归测试验证。

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

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

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

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

  • 软件测试--概念篇(什么是软件测试、需求、bug、测试用例)

    一、什么是软件测试? 验证软件功能是否满足用户的需求。 在了解了软件测试之后,我对于软件测试有了更多的认识,它也有很多的分类,所从事的工作也有很多,总之,是一个非常值得我们去学习的课程。 一个优秀的软件测试人员需要具备一些必要的素质,例如:要具有发散性的思维模式、要有好奇心、不浮躁、快速学习的能力、开发能力、责任感等等。 二、软件测试的目的和原则 目的:验证软件有或...

  • 为什么要提bug单?bug单的要素

    为什么要提bug单? 1、bug容易漏掉,导致bug遗漏到客户那里 2、把bug录入系统,给开发提供bug解决的依据,哪些bug 要优先改、哪些bug可以先不修改、 3、把bug录入系统,方便开发定位这个bug,因为bug会记录重现步骤 4、把bug录入系统,方便测试知道哪些bug 需要修改但是未修改,哪些bug已经修改可以回归 5、提交bug,测试人员有成就感 6、把bug录入系统,是研发过程改...

  • 软件测试Bug(缺陷)

    1.缺陷: 不满足用户确定的需求 不符合设计要求 2.产生缺陷原因: 人员之间沟通交流不够,交流上有误解,不进行交流 文档不完善 需求不断变化 3.确定缺陷的方法: 通过参考需求文档来确定缺陷 通过了解软件产品的行业背景 通过沟通来确认和识别缺陷

  • 测试BUG相关字段表格

    所属模块 所属项目 相关需求 相关任务 Bug标题 关键词 严重程度 优先级 Bug类型 操作系统 浏览器 重现步骤 Bug状态 激活次数 是否确认 抄送给 由谁创建 创建日期 影响版本 指派给 指派日期 解决者 解决方案 解决版本

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

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

  • 软件测试中什么最重要_为什么软件测试如此重要

    软件测试中什么最重要 这不是关于勤奋。 这是因为我们忘记了所知道的。 Bizarro世界软件开发 任何阅读有关软件开发的公开讨论的人都可能甚至不知道主要目标是生成可执行文件。 人们可能会以为软件开发的唯一目标是单元测试的印象是可以原谅的。 关于编码实践的文章很少,偶尔也有。 有关测试策略的文章不胜枚举。 而且他们要么要么异常兴旺(一个快乐的团队坐在彼此的膝盖上并进行测试)要么被责骂(...

  • Bug管理的一般流程

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

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

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

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

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

  • 测试bug的管理流程

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

  • 测试主要环节

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

  • 软件测试的几个关键步骤,你需要知道

    记得2年前刚毕业的时候听说了软件测试这个行业,当时也去百度仔细进行了一番搜索,评价基本千篇一律的看好。看好的原因在于,专家认为未来的互联网市场用户体验至上,而产品质量与用户体验有紧密的联系,自从近年产品经理岗位火了之后,人人都是产品经理的概念深入人心,但其实人人也都要具有质量观念,出色的产品质量可以提供更好的用户体验。但做软件测试的几个关键步骤,你知道吗?一、目标 制定完整且具体的测试路线和流程,为快速、高效和高质量的软件测试提供基础流程框架。最终目标是实现软件测试规范化、标准化。二、测试流程说明 三、需求

Global site tag (gtag.js) - Google Analytics