作为对所有职位描述的审查的一部分,我公司决定将以下内容作为关键输出:
网站开发按时完成,符合规范且无错误
鉴于规范会定期更改,因此没有正式的更改控制流程,而且我们要说的环境有些不可预测,该KPI有多现实和合理?
作为对所有职位描述的审查的一部分,我公司决定将以下内容作为关键输出:
网站开发按时完成,符合规范且无错误
鉴于规范会定期更改,因此没有正式的更改控制流程,而且我们要说的环境有些不可预测,该KPI有多现实和合理?
Answers:
对于大多数答案,我将采取相反的立场,并说这是绝对合理和现实的。
所有开发都会按时完成吗?当然不会,并非总是如此。
所有开发都将在规格范围内完成吗?您希望如此,但有时根本不可能,并且您必须标记与不可能或自相矛盾的规范的偏差。
并且所有开发都会没有错误吗?从不。
但这就是KPI的目的。这是可以衡量的,可以用来跟踪绩效和进度。
如果规范定期更改,没有正式的更改控制流程,并且环境是不可预测的,那么使该数字接近“无错误”将是一个挑战。但这挑战是您的工作,并且希望您会做得很好-明年更好,因为您将在管理公司自身特殊的混乱局面方面获得更多实践。
反问题:您将为程序员建议哪些KPI ?这是一个艰难的过程。我们所做的许多事情很难衡量。
如果是职位描述,那么我就不必担心,因为为实现无错误代码而进行的工作是典型程序员的工作(即使我们永远无法实现)。
但是,作为关键绩效指标,它影响范围太广,但是如果他们不是程序员,也不要怪罪建议它的人。只需解释一下,该声明设定的目标对于组织而言可能是不可取的。也就是说,“无错误”是软件的极高标准,需要花费大量金钱才能真正交付。说明一个运行良好的软件项目需要就每个缺陷是否值得花费宝贵的开发人员时间做出决策。
这是一个很好地说明这一点的示例。
程序员发现我们的软件存在“ 3000年”错误,并将在12月31,2999日停止运行。解决此问题将需要6到8个月。尽管对公司没有实际价值,但仍鼓励基于KPI的项目继续进行。
好的,这个例子有点极端,但是在任何软件项目中,实际上都会发现许多小缺陷,它们同样不会产生修复它们所需的投资回报率。如果相反,KPI的意图是暗示程序员永远不会引入缺陷,那么将任何员工坚持不犯错误的工作标准是否合理?
不仅不合适,而且很可笑
测试只能证明错误的存在,而不能证明错误的存在,因此在此约定下编写的每个程序都必须包括严格的正确性证明... 以及 100%的测试覆盖率
“当心上面代码中的错误;我只是证明了它是正确的,没有尝试过。” -D.克努斯
当然,编写无错误的代码是每个程序员的工作和职责。这是一个完全合理的期望。如果发布不起作用的代码,如何成为专业程序员?如果您发布不知道有效的代码,您如何认为自己是一名专业程序员?
如果您雇用画家,您会期望他做得很好。您期望他的工作结果没有错误。如果有错误,您希望他对这些错误负责并免费修复。更重要的是,如果错误使您付出了金钱,那么您希望他偿还您的费用。为什么会有这些期望?因为画家是专业的。
程序员喜欢将错误归咎于其他所有人。“由于需求,日程安排或月球在第八宫,我的程序存在错误。”但实际上没有人要怪。如果您的程序有错误,请把它们放在那里。
除非程序员意识到自己的责任不高,否则我们的职业永远不会成为职业。那他们是负责其方案的质量。
您知道为什么公司创建软件质量检查部门吗?因为程序员没有做他们的工作!程序员发布了很多废话,公司不得不组建全新的部门来对其进行检查。
错误列表多长时间?在错误数据库中包含数千个错误是专业的吗?显然不是。这反映了不良的行为,纪律不清以及坦率地说是不诚实的。
除非我们意识到确保质量检查没有发现是我们的工作,否则我们永远不会成为职业。
令人遗憾的是,这听起来像是他们“覆盖所有基础”的一种方式,显然不建议这样做,并且可能会使开发人员失望。
但是话虽如此,这仅在您查看其在审阅期间对文本的处理后才真正重要。因此,不要反应太快-隧道尽头可能还会保持理智。
“完美无缺”中的“无错误”?如“上帝和天使写的,不是人类?” (我们这里所说的是程序逻辑错误,也许是硬件逻辑错误)
我什至不能说出哪一行代码都没有错误。那是因为我们人类,好吧,我们不能证明没有负面假设!
我能说的最好的是,错误的可能性是介于0到1之间的数字。我通过定义明确或理解不充分,理解程度不高的软件开发和测试原理达到了这个数字。根据所讨论的源软件系列;通过了解我候选的杂种狗的好坏,在编写这些代码行时运用了这些原则;和更多。
我只能将这种理解表示为一种可能性。因此,术语“无逻辑错误”几乎没有意思。
如果我看到某广告的软件工程师产生了“无错误”的代码,那么我要么立即申请,要么马上就运行:该公司对开发,测试和交付软件的方式并没有考虑太多。因此,这将是一个巨大的机会,或者是一场无尽的噩梦。
但是,在所有软件中,我都可以轻松而且必须说出我期望的代码没有任何错误超出了那些笨拙,晦涩,符合逻辑的东西:可以编译且链接没有错误或警告的代码;那是“有效的HTML”或“有效的CSS”;无法产生无法解释的错误消息或浏览器错误的JavaScript(例如)。我可以直接测量该部分,并在图形上用黑白标记。
这部分很容易做。任何人都可以做那个。
嘿,祝您好运:-)
我是愚蠢的,还是“错误”并不意味着“致命的编译器消息等于不可编译的代码”?
根据这个定义,这是一个非常合理的要求。