2000年的强大软件提示100%有效

2021-04-06 13:57:19

你有没有听说过sema?它是一个相当深度的系统,用于测量软件团队有多好。不,等待!不要跟随那个链接!只需要六年来才能了解这东西。所以我已经提出了自己的,高度不负责任的,邋r的测试来评估软件团队的质量。关于它的很大一部分是大约需要3分钟。随着你节省的所有时间,你可以去医学院。

关于joel测试的整洁的事情是,对于每个问题来说,很容易得到一个快速的是或否。您不必弄清楚每日码线或平均误差点。为每个“是”答案给您的团队1分。关于joel测试的虚拟是你真的不应该用它来确保你的核电厂软件是安全的。

得分为12是完美的,11是可忍受的,但10或更低,你有严重的问题。事实是,大多数软件组织的得分为2或3,他们需要认真的帮助,因为Microsoft等公司在全职12次运行。

当然,这些不是决定成功或失败的唯一因素:特别是,如果您有一个伟大的软件团队,那么在没有人想要的产品,嗯,人们不会想要它。有可能想象一个“枪手”的团队,这些东西并没有做任何这些东西,仍然可以管理改变世界的令人难以置信的软件。但是,其他一切都是平等的,如果你得到这12件事就是正确的,你将有一个可以一直送达的纪律团队。

1.您是否使用源控制?我已经使用了商业源控制包,我用过的CVS,这是免费的,让我告诉你,CVS很好。但如果你没有源码控制,你会强调试图让程序员一起工作。程序员无法知道其他人所做的事。错误不能轻易回滚。关于源控制系统的其他整洁的事情是源代码本身被检查在每个程序员的硬盘上 - 我从未听说过使用源控件的项目丢失了很多代码。

你能在一步中建立一个建设吗?由此我的意思是:从最新的源快照制造运输建设需要多少步骤?在良好的团队中,有一个单个脚本,您可以运行完全结帐,从头开始,重建每一行代码,使前任,在所有各种版本,语言和#ifdef组合中,创建安装包,并创建最终媒体 - CDROM布局,下载网站,无论如何。

如果该过程需要多个步骤,则易于错误。当您更接近运输时,您希望拥有一个非常快速的循环,可以修复“最后一个”错误,使最终的出口等。如果需要20个步骤来编译代码,运行安装构建器等,请您“疯了,你会犯愚蠢的错误。

因此,由于这个原因,我在从WISE切换到InstallShield的最后一家公司过夜,所以我们把它扔掉了。 (明智的那种人士向我保证,他们的最新版本确实支持夜间构建。)

你每天都建造吗?当您使用源代码控制时,有时一个程序员意外地检查打破构建的东西。例如,他们添加了一个新的源文件,一切都在他们的计算机上编译很好,但他们忘了将源文件添加到代码存储库。所以他们锁定了他们的机器,回家,忘记和快乐。但没有其他人可以工作,所以他们也必须回家,不开心。

打破构建是如此糟糕(且很常见)它有助于日常建造,以确保没有破坏不受表发。在大球队上,确保破损的一个好方法是立即修复的,是每天下午进行每日建造,比如,比如午餐时间。每个人都在午餐前尽可能多的木制。当他们回来时,建造完成了。如果它有效,很棒!每个人都会检查源的最新版本并继续工作。如果构建失败,则修复它,但每个人都可以继续使用预构建,不间断版本的来源。

在Excel团队上,我们有一项规则,无论是违反其“惩罚”,谁都是负责保佑建筑物,直到别人打破它。这是一个很好的激励,不要打破构建,以及通过构建过程旋转每个人的好方法,以便每个人都学会了它的工作原理。

你有一个bug数据库吗?我不在乎你说的话。如果您正在开发代码,即使在一个团队中,如果没有组织的数据库,则在代码中列出所有已知的错误,您将运送低质量代码。很多程序员认为他们可以将错误列表置于他们的头脑中。废话。我记得一段时间超过两三个虫子,第二天早上,或在匆忙的运输中,他们被遗忘了。你绝对不得不正式跟踪错误。

错误数据库可以复杂或简单。最小的有用BUG数据库必须为每个错误包含以下数据:

如果错误跟踪软件的复杂性是唯一阻止您跟踪错误的东西,只需使用这些关键字段制作一个简单的5列表并开始使用它。

5.在编写新代码之前修复错误吗? Microsoft Word for Windows的第一个版本被视为“死亡3月”项目。它永远采取了。它保持滑倒。整个团队正在运作荒谬的时间,该项目再次推迟,再次,再次,压力令人难以置信。当Dame的事情终于发货时,很晚时间,微软将整个团队送到坎昆的假期,然后坐下来为一些严肃的灵魂搜索。

他们意识到的是,项目经理如此坚持保持“安排”,程序员简直通过编码过程,编写极度不好的代码,因为错误修复阶段不是正式计划的一部分。没有尝试将错误计数保持下来。恰恰相反。这个故事是那个程序员,谁不得不编写代码来计算一行文本的高度,只需写入“返回12;”并等待错误的报告来谈论他的功能如何并不总是正确。计划仅仅是等待变成错误的功能的清单。在后验尸中,这被称为“无限缺陷方法”。

为了纠正问题,微软普遍采用称为“零缺陷方法”的东西。公司中的许多程序员都咯咯地笑了,因为它听起来像管理层认为他们可以减少执行菲亚特的错误计数。实际上,“零缺陷”意味着在任何给定时间,最高优先级是在编写任何新代码之前消除错误。这就是为什么。

一般来说,你在修复错误之前等待的时间越长,肋价师(及时和金钱)它是解决。

例如,当您制作编译器捕获的拼写错误或语法错误时,修复它基本上是微不足道的。

当您在您的代码中有一个错误时,您看到第一次尝试运行它时,您将能够在任何时间内修复它,因为您的脑海中的所有代码仍然是新鲜的。

如果你在几天前写的一些代码中找到了一个错误,那将需要一段时间才能追捕它,但是当你重读你写的代码时,你会记得一切,你可以解决一切在合理的时间内的错误。

但是如果您在几个月前写入的代码中发现错误,那么您可能会忘记大量关于该代码的事情,并且修复了很多东西。到那个时候,你可能会修复别人的代码,他们可能会在休假,在这种情况下,修复了这个错误就像科学:你必须慢,有条不紊,细致,你无法确定很长时间会发现治疗方法。

如果您在已经发货的代码中找到了一个错误,那么您将引起令人难以置信的费用来解决它。

这是修复错误的一个原因:因为它需要更少的时间。还有另一个原因,这涉及它更容易预测编写新代码的时间比修复现有错误更容易。例如,如果我要求您预测编写代码来排序列表需要多长时间,您可以给我一个非常好的估计。但是如果我问了如何预测修复您的代码在安装的代码不起作用的情况下需要多长时间,如果安装了Internet Explorer 5.5,则无法猜测,因为您不知道(根据定义)导致的内容错误。可能需要3天才能跟踪它,或者可能需要2分钟。

这意味着,如果您有一个剩下很多错误的计划,则计划不可靠。但是,如果您已修复所有已知的错误,并且所有剩余的都是新代码,那么您的日程计划将令人惊叹更准确。

保持错误计数为零的另一个伟大的事情是您可以响应竞争更快。一些程序员认为这是保持产品随时准备发货。然后,如果您的竞争对手引入窃取客户的杀手新功能,则可以在现场实施该功能并运送,而无需修复大量累计错误。

6.您有最新的时间表吗?这将我们带来了安排。如果您的代码对业务一致,那么有很多原因,为什么何时要做代码何时要做的事业就会很重要。程序员是臭名昭着的关于制定时间表的crabby。 “它完成后会完成!”他们在商界人士尖叫。

不幸的是,这只是没有削减它。有太多的规划决定,即业务需要在运送代码:演示,展览,广告等方面做得好。以及唯一的方法是有一个时间表,并保持最新状态。

关于有计划的另一个关键的事情是它迫使您决定您要做的功能,然后迫使您选择最不重要的功能并切割它们而不是滑入特征性(A.K.A.范围蠕变)。

保持时间表不一定很难。阅读我的文章无痛的软件计划,它描述了一种制作大小时间的简单方法。

你有规格吗?写作规格就像用过牙线:每个人都同意这是一件好事,但没有人这样做。

我不确定为什么这是,但它可能是因为大多数程序员都讨厌写文档。结果,当小组组成的程序员攻击问题时,他们更愿意在代码中表达他们的解决方案,而不是文档。它们相当潜入并写代码而不是生产规范。

在设计阶段,当您发现问题时,您可以通过编辑几行文本来轻松解决它们。一旦代码被写入,修复问题的成本会显着更高,在情感上(人们讨厌抛弃代码)以及在时间方面,因此有抵抗实际上解决了问题。从规范内未构建的软件通常会迎接糟糕的设计,并且计划失控。这似乎是Netscape的问题,前四个版本在那里陷入如此混乱,管理愚蠢地决定抛出代码并重新开始。然后他们用Mozilla遍历了这个错误,创造了一个惩罚控制并花了几年才能获得alpha阶段的怪物。

我的宠物理论是,通过教导程序员通过向他们写入重症课程来宣传,可以通过教学程序来修复这个问题。另一种解决方案是聘请生产书面规范的智能节目经理。在任何一种情况下,您都应该强制执行简单的规则“没有规格的代码”。

8.程序员是否有安静的工作条件?通过提供知识工人空间,安静和隐私,提供了广泛的记录了生产力提高。经典的软件管理书籍人士文凭证这些生产力广泛利益。

这是麻烦。我们都知道知识工作者通过进入“流动”,也被称为“在区域中”,他们完全集中在他们的工作中并完全调整了他们的环境。他们丢失了时间,通过绝对浓度来产生很大的东西。这是他们完成所有富有成效的工作的时候。作家,程序员,科学家,甚至篮球运动员会告诉你关于在该区域的进入。

麻烦是,进入“区域”并不容易。当您尝试测量它时,它看起来平均需要15分钟即可以最大的生产率开始工作。有时,如果你累了或者已经做过了那天已经做了很多创造性的工作,你就无法进入区域,你花了剩下的工作日摆弄,读网,播放俄罗斯。

其他麻烦的是,被淘汰出局很容易。噪音,电话呼叫,出去享用午餐,不得不开车5分钟到星巴克喝咖啡,以及同事的中断 - 特别是同事的中断 - 所有人都会把你赶出来。如果一位同事问你一个问题,造成1分钟的中断,但这让你走出了足够的局面,足以让你半小时再次获得高效,你的整体生产力是严重的麻烦。如果您处于嘈杂的牛棚环境,像Caffeinated DOTCOMS喜欢创造的类型,随着营销人员在程序员旁边尖叫,您的生产力将暴跌,因为知识工作者在时间之后进行中断而且从未进入该区域。

通过程序员,特别努力。生产力取决于能够在短期内记忆中拼凑的很多细节。任何中断都会导致这些细节来崩溃。当您恢复工作时,您无法记住任何详细信息(如您所使用的本地变量名称,或者您在实现该搜索算法时的位置),您必须继续寻找这些东西,从而减慢了您在你恢复速度之前。

这是简单的代数。假设(因为证据似乎建议),如果我们中断程序员,即使是一分钟,我们就会吹走15分钟的生产力。对于这个例子,让我们在标准Dilbert小牛肉 - 肥胖农场中将两个程序员,杰夫和笨拙,彼此相邻的开放式隔间。 Mutt无法记住Strcpy函数的Unicode版本的名称。他可以看起来,需要30秒,或者他可以问杰夫,这需要15秒钟。因为他坐在杰夫旁边,他问杰夫。杰夫分散注意力并失去了15分钟的生产力(保存Mutt 15秒)。

现在让我们将它们移入与墙壁和门的独立办公室。现在,当Mutt不记得该职能的名称时,他可以查找,这仍然需要30秒,或者他可以问Jeff,现在需要45秒并涉及站立(没有鉴于平均身体健康程序员!)。所以他看起来。所以现在Mutt失去了30秒的生产力,但我们为杰夫节省15分钟。啊!

你使用最好的工具可以买到最好的工具吗?编译语言编写代码是仍然无法在花园品种家用电脑上立即完成的最后一件事之一。如果您的汇编过程需要超过几秒钟,请获得最新和最大的计算机将节省您的时间。如果编译需要15秒,程序员将在编译器运行并切换到读取洋葱时会感到厌倦,这将吸入并杀死工作效率。

如果不是不可能的,使用单个监视系统的调试GUI代码是痛苦的。如果您正在编写GUI代码,则两个监视器将使事情变得更加容易。

大多数程序员最终必须操纵用于图标或工具栏的位图,大多数程序员都没有可用的良好位图编辑器。试图使用Microsoft Paint来操纵位图是一个笑话,但这就是大多数程序员必须做的事情。

在我的最后一份工作中,系统管理员保留了向我发送自动垃圾邮件,抱怨我使用的是......得到它... 220兆字节的服务器上的硬盘空间。我指出,考虑到这些天硬盘价格,这个空间的成本明显低于我使用的卫生纸的成本。花费甚至10分钟清理我的目录将是一个很棒的生产力浪费。

顶级陷波的发展团队不会折磨他们的程序员。甚至使用支持工具引起的轻微挫折,使程序员脾气暴躁和不满。脾气暴躁的程序员是一个不生产的程序员。

要添加到所有这些......程序员通过给他们最酷的最新的东西很容易贿赂。这是让他们为您工作而不是实际支付竞争性薪水!

你有测试人员吗?如果您的团队没有专用测试人员,至少为每两个或三个程序员至少有一个,您可以运输BUDGY产品,或者您使用100美元/小时的程序员可以使用30美元/小时测试人员浪费金钱。杀了测试人员是如此令人发指的虚假经济,我只是吹走了更多的人不认识它。

阅读五个(错误)您没有测试人员的原因,这是我对此主题的文章。

11.新候选人在采访时写代码吗?你会雇用一名魔术师,而不是要求他们向你展示一些魔术伎俩吗?当然不是。

在没有品尝他们的食物的情况下,你会为​​你的婚礼雇用一个餐饮服务器吗?我对此表示怀疑。 (除非这是阿姨Marge,如果你没有让她让她“着名的”切碎的肝蛋糕),她会永远恨你。

然而,每天,程序员都是根据令人印象深刻的恢复雇用的,或者因为面试官喜欢与他们聊天。或者他们被问到Trivia问题(“CreateIrialog()和DialogBox()之间有什么区别?”)可以通过查看文档来回答。你不在乎他们是否已经记住了数千个关于编程的琐事,你会关心他们是否能够生产代码。或者,更糟糕的是,他们被问到“啊哈!”问题:当你了解答案时,那种似乎很容易的问题,但如果你不知道答案,他们是不可能的。

拜托,只是停止这样做。在采访中做任何你想要的东西,但是让候选人写一些代码。 (有关更多建议,请阅读我的游击指南面试。)

12.你做了走廊可用性测试吗?走廊可用性测试是您抓住走廊中的下一个人并强迫他们尝试使用您刚写的代码的人。如果您这样做到五个人,您将学习95%的关于代码中的可用性问题的内容。

良好的用户界面设计并不像你想象的那么难,如果您希望客户喜欢和购买产品,这是至关重要的。您可以在UI设计上阅读我的免费在线书籍,一个用于程序员的短底漆。

但是,关于用户界面的最重要的事情是,如果您向少数人展示您的程序,(实际上,五或六个足够),您将迅速发现人们所拥有的最大问题。阅读Jakob Nielsen的文章解释了原因。即使您的UI设计技能缺乏,只要您强制执行走廊可用性测试,您的UI都没有成本,您的UI会更好。