阅读更多

6顶
0踩

研发管理

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

2013-03-19 10:32 by 副主编 WnouM 评论(3) 有7330人浏览
本文来自著名的关系型开源数据库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的一个前提,如果没有这个前提,我们可能会无法重现问题,或者跟本就无从下手。

  • 4.缺陷管理流程

    探索测试:在随机测试的基础上,预先制定一些目标,然后围绕这个目标进行有规范随机测试。3. 概要设计:在设计阶段把各项需求转换为技术系统结构的过程。4. 详细设计:对每个模块要完成的工作进行具体的描述。4. 回归测试:把原来执行过的用例再执行一遍。

  • 软件测试是软件开发过程中的一个重要环节,主要目的是发现并修复软件中的错误,确保其功能正确无误,性能稳定

    功能性测试作为黑盒测试的一部分,主要目的是验证软件系统是否能够执行既定的功能,并确保这些功能满足用户的需求。在功能性测试中,测试人员不需要了解软件内部的代码和结构,而是侧重于软件的输入与输出。为了提高软件测试的效率和质量,可以使用各种测试工具和技术,如自动化测试、压力测试、性能测试等。软件测试是软件开发过程中的一个重要环节,主要目的是发现并修复软件中的错误,确保其功能正确无误,性能稳定。黑盒测试、白盒测试和灰盒测试是软件测试中的三种主要方法,它们在测试的侧重点和技术手段上有所不同。

  • 从0到1创建高效的产品缺陷管理流程(3):如何选择一款Bug管理工具?

    我在前面两篇文章中对缺陷管理的流程,缺陷的处理的优先级做了介绍: 《从0到1创建高效的产品缺陷管理流程(1):缺陷是什么? 如何建立缺陷管理流程?》 《从0到1创建高效的产品缺陷管理流程(2):如何设置合理的Bug处理优先级》 之前的两篇文章更多是在理论层面进行比较多的探讨。 在第三篇文章中,我要介绍如何选择一款Bug管理工具。Bug管理工具可以说是将之前的管理策略与流程结合在日常工作中的一...

  • 软件测试流程总结

    软件测试流程总结,每一个互联网公司都会有的测试流程。

  • 软件测试——bug处理流程图,让你上班少走弯路

    前言 梳理好一个完整的bug处理流程图,不仅仅可以事半功倍也能处理好同事关系,列如(开发小哥) bug处理流程图 上图就是bug处理的正常流程图,在使用缺陷管理工具的时候,这个流程图有助于我们正确了解缺陷的处理过程,帮助我们如何跟踪bug. 接下来我们来说说,bug的定义: (在读下面的内容之前,我们首先来说说为什么要 这么详细的的了解bug,甚至得记住。软件测试的工作就是围绕发现bug而展开的,在日常的工作中发现bug的数量是我们工作的重点,因此,记住bug的来源或者产生的原因能够帮

  • 软件测试(基础)· 软件测试的生命周期 · 如何描述一个 Bug · Bug 的级别 · Bug 的生命周期 · 争执 · Bug 评审

    Bug 的定义每个公司都不一致,定义级别之前需要查看公司规范。以下为示例:Blocker(崩溃)阻碍开发或者测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等(该问题在测试中较少出现,一旦出现应立即中止当前版本测试)。Critical(严重)系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。

  • 如何保证测试质量之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篇

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

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

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

  • 测试流程和bug流程

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

  • 软件测试之bug管理

    开发人员与测试人员齐心协力,相爱相杀, 荣辱与共,方能打造出优秀的产品。 若是bug描述不知所云,bug修复仓促随意,bug管理如同儿戏,则金玉其外已是造化,败絮其中当属必然。

  • 测试bug的管理流程

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

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

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

  • BUG处理流程说明

    一、        BUG处理流程图: 流程描述: 1、  测试人员发现bug提交给开发。 2、  开发人员判断是否是bug。 3、  如果是bug,进行修改,修改完成后更改bug状态为已解决。 4、  如果不是bug,退回给测试人员并描述退回原因,或为设计如此,或为外部原因,或者不能重现。 5、  开发人员修改完成的bug,由测试人员进行验证,确认修改正确,关闭bug。 6、 ...

  • 测试中发现Bug后的处理过程

    一般测试员首先发现bug,然后提交bug,开发人员确认是否是bug,如果不是就拒绝修复,如果是就修复bug,测试员再对修复的bug进行验证,如果确实修复了就关闭bug,如果bug还存在就reopen。

  • 软件测试及Bug管理经验谈

    1、写在前面的话   本人从事软件工作多年,对如何作测试、如何管理Bug上有一些体会和想法;正好看到网上关于这方面的讨论较多,不妨简单地写出来。本文就测试工作的组织及工具的选用介绍一下主要的思路,供大家参考。   2、如何作好软件测试   (1)清晰的质量概念   常言道没有规矩不成方圆,产品交到您手上,各方面质量标准您要心中有数。安装卸装、功能性能、用户界面、出错与恢复......等等,

Global site tag (gtag.js) - Google Analytics