it-swarm.cn

给开发人员较慢的开发机器会导致更快/更有效的代码吗?

假设我给开发人员一个尖叫的快速机器。基于WPF的VS2010加载非常快。然后,开发人员创建一个WPF或WPF/e应用程序,该应用程序可以在其盒子上正常运行,但在现实世界中运行得慢得多。

这个问题分为两个部分...

1)如果我给开发人员提供较慢的计算机,这是否意味着生成的代码可能更快或更高效?

2)我该如何给开发人员快速的IDE)体验,同时提供“典型”的运行时体验?

更新:

作为记录,我正在准备对管理层的公正回应。这不是我的主意,你们正在帮助我纠正客户的错误要求。感谢您给我更多的弹药,并提及何时何地采取这种行动。我已经为+1的有效用例+1:
-特定的服务器端编程优化
-测试实验室
-可能会购买更好的服务器,而不是购买顶级显卡

130
goodguys_activate

绝对

经理们也应该在Pig-Latin举行所有会议,这也是事实。总体而言,这使他们的沟通能力得到提高,使他们在说简单句子时处于不利地位。他们将不得不更多地依靠面部表情和肢体语言来表达自己的观点,而且我们都知道,无论如何,至少有70%的交流是这种交流。

首席财务官应仅使用算盘和粉笔。否则,他们最终会过多地依赖“原始数据”,而对他们的“直觉”则不够。

而且,应该要求副总裁及更高级别的主席在半醉人的高尔夫球场等分散注意力的环境中举行所有重要的商务会议。哦,快点...

234
Jay Beavers

答案是(我会大胆地说)总是

[〜#〜] no [〜#〜]

根据预算获得最大的收益,并测试将部署到的设备的最小-最大规格范围。

有模拟器,虚拟机,带有测试仪的实际计算机,它们都可以测试性能以查看是否是一个因素。

376
Steven Evers

1) 非常非常不可能.没有, 开发人员可能会在您的咖啡中添加一些令人讨厌的建议。开发人员花费的时间等待代码编译或IDE)执行其所做的工作或所花的时间  花费使代码更好。也会打乱他们的智力。专注于问题,他们将更加有效地解决该问题。

2)给他们每个人第二台PC,代表您希望他们实际支持的最低规格,并通过KVM)切换到该PC与实际工作站之间。

70
BlairHippo

我喜欢较长的编译时间。它给了我更多的时间来处理我的简历。

43
Wonko the Sane

这是一个可怕的主意。您希望您的开发人员尽可能多地工作,这意味着给他们尽可能快的一台机器,这样他们就不会整天坐在那里等待编译。 (稍加OT,但是它也不会阻止使用WebSense等访问可能有用的网站。)如果您的用户仍然在使用Stone-Age技术,那么您将需要一台测试机具有相似的规格,并确保尽早进行测试,并确保您在技术选择方面不会走错路。

33
o. nate

开发应在可行的最佳环境中进行。测试应在可行的最恶劣环境中进行。

32
Yevgeniy Brikman

如果给我一台速度较慢的机器,我会花一天时间优化开发流程,而不是优化交付的代码。所以不行!

27
user6015

嵌入式系统程序员经常遇到这种情况!有两个部分的解决方案:

  1. 您的需求需要在Y硬件上指定X性能。
  2. 在Y硬件上进行测试,当您没有获得X性能时,会出现文件错误。

然后,开发人员使用哪种硬件都没有关系。

完成此操作后,可以说,更快的设备每天可以为程序员节省半小时,或者一年节省125个小时。假设他们每年花费10万美元的福利和管理费用(对于硅谷来说太低了),或者说每小时50美元。那125小时* $ 50 /小时为$ 6250。因此,如果每个程序员每年在Rockin的开发硬件上花费的费用少于6250美元,那么您将节省金钱。

那就是您应该告诉管理层的内容。

蒂姆·威利斯克罗夫特(Tim Williscroft)在评论中几乎说了一半,而在一个公正的世界中,他将得到该答案获得的任何分数的一半。


添加10月24日:

我的前雇主有这样的理论,它帮助他们付出了大约1亿美元。

他们是一家总部位于日本的企业集团,过去曾在日本,韩国和中国聘用程序员。那里的人们使用development脚的开发硬件,13小时的工作日,在办公桌前睡觉,没有生命,这很酷。因此,他们想出了当他们收购一家著名的硅谷公司来制作基于Linux的手机操作系统时,那些想要现代装备的愚蠢的加利福尼亚人只是一头雾水,实际上并没有充分的理由(例如生产力)。

四年后,该操作系统像废话一样运转,所有时间表都被取消了,客户大为恼火,左右合同终止。最终,OS项目被取消,并且该集团在全球范围内的大批员工在去年被解雇。坦率地说,我不想成为必须向股东解释所有金钱和精力去向何处的高管之一。

造成这种惨败的不仅是缓慢的开发机器。还有许多其他的战略和战术失误-但是它们是同一类东西,在战es中工作的人可以看到火车残骸来了,并且想知道为什么决策者不能这样做。

减速器无疑是一个因素。毕竟,如果您愿意按时交付,故意拖延工作真的很聪明吗?

26
Bob Murphy

在编程中,有一句老话:“ 过早的优化是万恶之源 “。我认为您已经成功地创建了所有邪恶的另一个“根”(或至少是第一个分支)。从现在开始,我们可以说“过早的开发人员去优化是万恶之源”。

简而言之,答案是,这只会减慢您的开发时间,并使进一步的维护更加困难。编译时间将花费更长的时间,在磁盘上搜索代码的速度将变慢,在线查找答案的时间将更长,并且最重要的是,开发人员将开始过早地优化其代码以甚至能够测试所需的功能。

最后一点是最关键的问题,许多其他答案都没有提到。您可能会获得第一个版本,但是当您以后希望更新代码时,您会发现开发人员过早的优化使代码的重点从良好的设计上移开,并使其更加接近“一定要在最少的工作来保持我的工作”的代码风格。添加附加功能将变得更加困难,因为此时可能不需要进行优化,并将您的代码锁定在其他半优化黑客之上的半优化黑客路径上。

例如,假设您当前版本的最低系统要求是速度稍慢的单处理器计算机。您将开发人员放在此框上,他们提出了一个复杂的单线程解决方案,该解决方案依赖于许多黑客,因为他们想快速开发产品。现在5年后,您有了该产品的新版本,该版本最低要求使用双处理器计算机。您希望能够干净地分离出可以并行运行的程序部分,但是您5年前做出的决定迫使开发人员制作hacky软件,现在该决定阻止您使用新的最低要求的全部功能。 。

您应该做的是在开发周期结束时添加一个阶段,在此阶段对下限框进行验收测试。当然,由于开发人员的计算机速度更快,某些代码会太慢,但是您可以隔离该部分并在那里进行优化。您的其余代码保持整洁和可维护。

我看到您的问题是在说:“我可以通过给我的开发人员差的开发人员机器,让他们仍然获得良好的代码来强迫他们进行早期优化吗?”答案是否定的。

20
EntropyFails

有趣的阅​​读,所有这些答案。

但是我认为大多数在这里回答问题的人都没有抓住重点。在我阅读本文时,问题不仅仅(至少是)真正为开发人员提供了一个P1以使代码更快。

关键是,尽管计算机功能强大得多,但当今许多软件的速度甚至比我们上个世纪使用的安全软件还要慢,甚至更慢。从这里的答案来看,大多数开发人员没有得到该提示。这在Web应用程序中非常明显。这个站点是一个非常好的例外,但是许多站点的首页都在1 mb之内。我等待下载什么呢?我不知道。我认为这似乎是开发人员的无知,而不是尊重用户需要花费的时间,或者如果您按每mb的价格付费,则更糟。问题是所有这些网页甚至都没有包含高分辨率图片。通常,这只是某些开发环境提供的一些废话代码。好吧,我想当然不是废话,但作为用户我却没有收获。

通常,这不仅与优化代码有关,而且与选择不包括速度慢于其所提供的东西一样重要。

几周前,我从1995年开始使用笔记本电脑。Windows3.x可以立即启动并运行。在完全释放Enter键之前(至少是至少),我应该从数据库中获取一些数据。

我知道我们今天从我们的软件中获得了很多收益,但是我们的计算机速度也提高了很多倍。开发行业为什么不决定从1995年开始保持软件的速度,并因为人们想要新的功能而使人们购买新的硬件。如今,它更像是日常程序和网站,迫使人们购买新硬件来完成与之前完全相同的操作。但是,当然以更奇特的方式。

我不得不说,我认为Linux开发似乎可以更好地解决这一问题。多年来,Linux发行版一直遥遥领先于Windows,即使在幻想中也有很多动画窗口之类的东西。事实是,尽管如此,他们仍然可以在今天甚至昨天的计算机上工作。不仅在Edge硬件上。

到目前为止,我想许多开发人员的肾上腺素水平都不健康。是的,我找到了一种方法,可以使所有人在前面的等待中感到沮丧:
办公室sql服务器(启动管理控制台)arcgis(启动和使用)acrobat reader(启动)agresso(至少用作Web应用程序)windows(正在启动和使用,我还没有尝试过7 .net网页(下载)

等等

我感觉很好 :-)

干杯
Nicklas

15
Nicklas Avén

1)如果我给开发人员提供较慢的计算机,这是否意味着生成的代码可能更快或更高效?

在过去的六十年中,我们一直在开发软件,但是仍然遇到类似的问题吗?似乎更像是在偷工减料。没有冒犯,但请问,您认为这个问题甚至合乎逻辑吗?用以下术语(如果可以的话)考虑一下:您想要制造一种4x4的车辆,该车辆可以在恶劣的条件,雨水,泥泞等任何条件下运行。您是否打算将您的工程师和装配线放在这些元素的下面,以确保最终的车辆可以在它们上面操作?

我的意思是,耶稣基督!有发展,有测试。测试是在不同,更苛刻的环境中完成的,或者开发人员知道如何以适合压力测试的方式在自己的开发环境中组装测试台。如果他做不到,请用更好的开发人员代替他。

2)我该如何给开发人员快速的IDE)体验,同时提供“典型的”运行时体验?

您应该向开发人员询问。而且,如果他们不能给您客观有效的答案,则需要用实际的开发人员来替换它们。

但是要解决这个问题,请为您的开发人员(假设您有好的开发人员),好的工具和好的硬件,提供您力所能及的最好的东西。然后设置您的软件必须在其中运行的最低通用基准环境。 那是应该在哪里进行测试的。在开发环境中拥有测试环境这是截然不同的(最好是允许您进行压力测试的环境)是更好的工程实践。

如果您的开发人员有什么好处,他们应该已经将此告知您(假设您已经问过他们。)

10
luis.espinal

这导致了很多bitchin的开发人员。这些东西已经足够难了,我们不要让体验变得更糟。

我鼓励您在测试或质量检查环境中拥有与用户相似的硬件,以消除任何性能问题。好主意。

6
bigtang

我会打破常规,并且只有在他们正在编写服务器软件的情况下才是。笑所有您想要的,但是我见过的最高效的团队是一群带有Wyse终端的Perl团队。这是1990年代后期,当时是一家大学分店,他们正在编写空间网格化软件(基本上只是计算)。但是,他们正在与一些功能相对强大的新型RS/6000进行交谈。

只是为了增加对该事件的兴趣,那里有一个盲目的程序员。我印象深刻。

alt text

6
Jé Queue

这不是一个坏主意-但您希望开发人员拥有一个快速的编程环境。

您可以通过为程序员提供两台计算机来实现此目的-快速的开发箱和较慢的商品箱(可能是虚拟箱)进行测试。

VS构建过程的一些调整可以使通过远程调试将部署到测试箱的工作规范化。

还有其他方法可以考虑迫使编码人员开发更有效的代码-例如,您可以在单元测试中包括性能和内存使用目标。设置内存使用预算也是一个出色的目标。还要为html代码设置页面权重预算。

5
damien

问题不是开发人员在快速的机器上构建低效率的代码,而是问题是您尚未定义必须衡量的性能指标。

作为产品要求的一部分,应定义一个特定的目标,该目标可以根据所需的客户体验在所有计算机上进行测量。有许多网站(检查SpecInt)可让您将计算机与其他类型的计算机关联。

这有很多方面的好处。它使您可以更轻松地定义最低支持的硬件,从而可以减少客户投诉的数量-我们都知道大多数软件都可以在大多数计算机上运行,​​这仅是性能问题-如果我们设定规格以使最低要求范围内的人员具有合理可接受的性能,您可以限制客户的投诉-然后当客户打来电话时,您可以使用基准来确定是否确实存在问题,或者客户是否对该产品的工作方式不满意。

5
Mike Glasspool

我深信使用较慢的计算机进行开发会导致更快的代码,但这是有代价的。理由是我亲身经历过:通勤时间长,我买了一台上网本在火车上工作,上网本比我过去5年内购买的任何计算机都要慢。因为一切都太慢了,所以我很快就会看到这本上网本出现了令人难以忍受的慢速变化,而且我知道慢速变化要快得多(不需要一直进行基准测试)。上网本的工作确实改变了我的开发方式。

话虽如此,我不主张这样做,特别是在专业环境中。首先,它令人沮丧。几乎每个人都说这个想法甚至没有道理的事实表明,程序员对这个想法反应很差。

其次,让所有东西变慢意味着由于懒惰等原因,您可能想要在快速机器上完成的事情(耗时1分钟)实际上不再能在缓慢的机器上完成。这是激励的问题。

最后:产生的代码可能更快,但几乎可以肯定需要更长的时间来产生。

5
David Cournapeau

点1,不! Studio可以在合适的机器上运行,并且每个版本的要求都变得越来越强大。如果您打开智能感知并使用单核非HT盒,则实际上可以锁定Studio的某些版本。

要指出第二点,测试项目中有一些功能可以让您节流一些资源。它们并不完美,但是它们在那里。 VPC或低规格VM图像也受到很好的约束。我让用户偶尔坐在坏的机器上进行测试,以便他们可以看到其功能的含义已要求。

4
Bill

不,事实上,这将导致更多的错误,因为它们不会进行过多的测试,并且不会像分析器那样使用过多的工具。给他们提供最好的价格合理的机器(如果您是游戏开发或图形商店,则包括图形加速硬件),并让它们在VM中进行测试。 VM规格可以根据需要扩大或缩小。

4
JohnL

我认为这是一个有趣的问题,我不会很快就拒绝。我的看法是:这取决于我们正在谈论的开发团队。示例:如果您领导的团队正在参加一年一度的ICFP编程竞赛,那么在HPC集群上经过少量开发时间后可能取得良好的成绩,并不一定意味着您找到的解决方案是好的。如果您正在编写某种科学算法或数值算法,也可以这样说:在具有64 MB内存的旧AMD Duron 600 MHz上,您必须谨慎对待完成工作的方式,这甚至可能影响某些设计选择。

另一方面,聪明的程序员/科学家/无论如何都应该小心。但是当我没有计算机AT ALL且不得不在纸上做笔记时,我发现自己写下了一些最好的代码。当严格需要IDE时,这可能不适用于涉及大型框架的大型项目。

可以肯定的一件事是:快速的机器和良好的即时结果使(糟糕的)程序员变坏了,这可能是我们在计算机上发现的一些废话的原因之一。

4
Lorenzo Stella

我使用的软件包需要大约一个小时才能在我的8核8G机器上构建(完全干净的构建)。我还有一台相对低端的笔记本电脑,可以测试。低端笔记本电脑在一个工作日内无法管理两个完整版本。

通过在笔记本电脑上进行一些刻意的测试,我是否在快速计算机上效率更高?还是应该在笔记本电脑上完成所有构建工作?

请记住,这些不是由数字组成的。

这是一个装配式演示,因为我通常不需要每天都进行干净的构建(我可以在单个模块上进行大量测试),但是即使是部分构建,其编译/链接时间也存在大约一个数量级的差异。 。

因此,真正的问题是在较慢的机器上,典型的构造足以让我喝杯咖啡,而在较快的机器上,我只能喝一点咖啡。

从完成工作的角度来看,我更喜欢在快速的机器上进行开发。我可以更可靠地按时完成任务。另一方面,我想像是如果管理使我能够在速度较慢的机器上进行开发,那么我将完成更多的网络浏览,或者至少是读书。

4
Stripes

有趣的是,我在一家初创公司工作,但最终还是这样做了。我认为它实际上工作得很好,但这只是因为我们所处的特定情况。在mod_Perl商店中,类自动重装实际上可以正常工作。所有开发人员都将vim用作他们的IDE=)(或使用了一些远程编辑软件)。最终结果是,几乎没有(如果有的话)时间浪费在等待代码编译/重新加载/等等.

基本上,我喜欢这个想法,即IFF对所有开发人员的开发周期影响都可以忽略不计,并且仅影响代码的运行时操作。如果您的代码无论如何都经过编译,预处理等,那么您将为开发人员正在使用的“修复错误;测试;下一步”循环增加时间。

从人际关系的角度来看,人们从不被强迫来使用慢速服务器,但是,如果您使用慢速服务器,则不必进行任何自己的维护或设置。此外,这种设置从一开始就存在,我无法想象将其出售给已建立的开发团队。

重新阅读了您的原始问题之后,我发现永久困扰我的一件事是与生产环境不同的开发环境。为什么不使用VM)来执行代码,您可以在不影响开发人员工作站的情况下降低运行时间呢?]最近,我一直在使用/喜欢VirtualBox。

3
user6041

我也将在这里逆潮流。

轶事:我曾在一家荷兰软件开发公司工作,该公司将286台计算机升级到486-es(是的,我那年老了)。在几周之内,我们所有内部库的性能下降了50%,错误增加了。。。一点研究表明,人们在调试过程中不再思考代码本身,而是求助于“快速”连续代码->编译->测试->修复(代码)等循环。

相关:当我为美国同一家公司成立子公司时,我最终雇用了俄罗斯程序员,因为他们习惯于功能/功能更少,编码效率更高的PC。

我意识到这些时代是不同的时代,资源比今天要稀缺得多,但是,这在硬件方面所取得的所有进步中,最终的结果似乎是,前进的每一步都是被要求更高的最低规格的草率编程否定...

因此,...我觉得程序员应该被迫在不超过'Average Joe'计算能力和硬件规格的机器上测试他们的应用程序。

3
John SMythe

硬件的成本低于开发时间。

大多数瓶颈都在数据库中,而不是在客户端PC中,但这并不能成为在比开发人员慢的计算机上进行测试的借口。使用测试工具测试优化。

3
Brian

绝对不。为您的程序员提供可以买到的最好的笔记本电脑,他们选择的键盘,多个大屏幕,私人办公室,没有电话,免费的软饮料,他们想要的所有书籍(都是相关的),年度关键技术会议和您会得到很好的结果。然后在上下边界硬件/软件/浏览器/带宽组合上进行测试。

3
addictedtoswdev

对于许多应用程序而言,问题在于使开发人员在“完成”之前对真实数据集进行测试。对于交互式应用程序,将需要基准测试机/ VM。

2
user6043

我在运行缓慢的Windows95机器上工作,它使我可以高效地用Forth和JavaScript编写MindForth人工智能。

2
Mentifex

这是一个有趣的想法(给开发人员慢的机器可能会使他们进行更多优化)。

但是,该解决方案的框架更好-将响应时间放在程序要求中,并且具有可用于测试的低端计算机。

另外,如果您有一个真正的奇妙的编译器/语言,它可能能够设计出不同的方法来生成代码并选择最佳方法。只有更快的计算机才能帮上忙。

2
Paul Nathan

其他人则回答说,通常您希望开发人员拥有快速的机器。我同意。不要跳过RAM-您需要尽可能多的内存-一些构建过程非常占用磁盘空间。

您可能要考虑摆脱的问题是构建驱动器上的防病毒!这只会减慢速度,并且可能是极强的减速因素。

如果可能,您可能希望让开发在Linux上进行开发。那里的工具可以更好地完成各种额外的任务(对于文件中的某些东西,只需grep等)。这也摆脱了反病毒。

2
user1249

问程序员是否应该获得好的硬件,就像问一个胖男人是否喜欢食物。我知道这是主观交流,但是...这个问题值得我们问吗? :P

就是说,我当然同意多数意见:[〜#〜] no [〜#〜]

2
Matthew Read

我很想明确地说出“否”,但让我分享一下最近的经验:我们项目中的某人正在编写一些代码以将数据导入数据库。当时,他拥有我们集团中最古老的PC,甚至可能是整个组织中的PC。它在VS 2008上可以正常工作,但是当然,更快的机器可以使体验更好。无论如何,有一次他正在编写的过程在测试时遭到了轰炸(那是在功能全面之前)。他内存不足。在轰炸之前,该过程还花了几个小时才能执行。请记住,据我们所知,这是用户必须使用的。

他要求更多的RAM。他们拒绝了,因为他要在3-4周内购买一台新机器,而旧机器将被丢弃。

请记住,这家伙的优化理念是:“我们有很多RAM的快速机器”(无论如何,他和一些机器都被排除在外),那么为什么要浪费宝贵的程序员时间来优化呢?但是这种情况迫使他将算法更改为更高的内存效率,以便可以在他的2Gb机器(运行XP)上运行。重写的副作用是该进程的运行速度也比以前快得多,而且要快得多。 。同样,当导入更多数据时,即使使用4Gb,原始版本最终也会受到轰炸-这是一种简单,简单的内存消耗。

Soooo ...虽然我通常会说“ No”,但是在这种情况下,具有较低性能的计算机的开发人员会产生更好的优化模块,结果用户会受益(因为这不是需要由于经常运行,他最初无意对这两种方法进行优化,因此,如果计算机具有足够的RAM)来运行一些大型测试,则它们将被原始版本所困扰。 。)我明白他的意思,但是个人不喜欢这样的想法,即用户只需要等待8个小时即可完成一个流程,而该流程可以在短时间内运行。

话虽如此,一般而言,程序员应该拥有功能强大的机器,因为大多数开发工作都非常密集。但是,应格外小心,以确保在“最低公分母”机器上进行测试,以确保该过程不会爆炸,并且用户不会整天看着Paint变干。但这已经有人说过了。 :)

2
MetalMikester

在阅读问题和答案时,我对NO案例的热情感到惊讶。

我从事软件开发已有25年了,我可以毫不犹豫地说,程序员需要很多东西来开发好的代码:

  • 合理的开发环境。不是恐龙。它也不需要流血Edge。足够好,不要沮丧。

  • 一个好的规格(没有书面规格要做什么?)

  • 良好和支持性的管理。

  • 合理的开发进度。

  • 对用户和用户所拥有的环境有很好的了解。

此外,在最后一点上,开发人员需要牢记用户将使用的内容。如果用户拥有超级计算机并且正在进行原子分裂模拟或性能花费很多钱的事情,并且计算要运行多个小时,那么考虑性能就很重要。

如果用户拥有286台Steam供电的笔记本电脑,那么在最新的47 GHz Core i9000上进行开发并让开发人员进行开发测试将导致一些问题。

那些说“给予开发人员最好的东西并进行测试”的说法部分正确,但这对开发人员来说是一个很大的心理问题。他们没有意识到用户体验,直到为时已晚-测试失败。

当测试失败-架构已承诺,管理已作出承诺,花了很多钱之后,就变成了灾难。

从第一天开始,开发人员就需要像用户一样思考,理解并处在用户体验领域。

那些哭泣“哦,不,它不会那样工作”的人在说他们的话。我已经多次看到这种情况。开发人员通常的反应是“很好地告诉客户购买更好的计算机”,这实际上是在指责客户。还不够好。

因此,这意味着您有几个问题:

  • 保持开发人员对管理的满意和愤怒,增加项目失败的机会。

  • 使用较慢的机器进行开发,可能会伤及开发人员,但要让他们专注于真正重要的事情。

  • 将2台机器放在开发人员的办公桌上,并强迫他们在CRUNKER上进行测试(因为它们处于轻视中……所以他们不会这样做,但是至少在测试中是否存在性能问题时,它非常清楚)。

还记得批处理系统和打孔卡吗?人们等待一个小时或一天进行周转。事情完成了。

还记得带有5 MHz处理器的旧的Unix系统吗?事情完成了。

技术怪杰喜欢追逐流血的Edge。这鼓励修补而不是思考。这些年来,我一直在与更多的初级开发人员争论……当我敦促他们将手指从键盘上移开并花更多的时间阅读代码和思考时。

在代码开发中,没有什么可以代替思考。

在这种情况下,我的感觉是-找出真正重要的事情。项目成功了吗?这是公司的制作/杀人活动吗?如果是这样,您将承担不起失败的责任。您无法承受无法通过测试的费用。由于测试在开发周期中为时已晚,因此发现故障的影响为时已晚。

[在测试中发现的错误修复成本大约是开发人员在开发过程中发现的错误的10倍。

在测试中发现的bug的修复成本是在体系结构设计阶段设计出来的bug的大约100倍。]

如果这不是破坏交易的方法,并且您有时间和金钱要花钱,那么请使用不断发展的Edge开发环境,并遭受测试失败的困扰。否则,找到另一种方法。下端硬件,或每张桌子2台机器。

2
quickly_now

我工作的Macbook Pro已有几年历史了。在Linux和Windows之间(要测试IE=怪癖)vms,以及几个Web浏览器和终端打开),OSX旋转轮出现了很多。在这种情况下,速度慢的机器会降低生产率。

2
Thierry Lam

我说开发人员需要最好的开发系统-但这并不一定意味着最快的开发系统。例如,这很可能意味着采用全被动冷却的现代但相对较慢的系统,以将噪音降至最低。

一件事-开发系统应该是相当新的,并且绝对应该具有多个核心。

老式PC听起来可能很早就具有表演性能,但是例如Pentium 4实际上(每核)可能比某些当前芯片快。这意味着通过限制开发人员使用P4系统(实际上是我现在正在使用的-尽管这是我的个人预算问题)...

  1. 您鼓励开发不会从当前主流多核系统中受益的非并行软件。
  2. 即使开发了多线程软件,也可能不会注意到(或至少至少不会尽早发现)错误,因为与并发相关的问题可能不会在单核系统上进行测试。
  3. 多线程软件可能会导致严重的性能问题,而使用多核处理器可能会变得更糟。一种可能会导致磁盘磁头抖动(这可能导致对数据的访问速度减慢数千倍),其中各个线程进行顺序访问,但每个线程都对磁盘的不同部分进行访问。例如,这甚至可以在较慢的较旧PC上消失。如果有两个旧的160GB驱动器而不是一个1TB的驱动器,则这些线程可能不再为争用同一磁盘而互相争斗。

PC还存在一些问题,这些问题太局限了,无法很好地支持虚拟机-例如用于在多个平台上进行测试。

1
Steve314

答案就在中间。

有一个快速框可以运行开发环境(例如Eclipse)

另一个用于测试输出的慢速盒子。这对于Web应用程序尤其重要。

并排屏幕,每个框一个。

如果输出框中的代码是可接受的,则对于大多数用户而言,它将超出可接受范围。

快速的开发人员使程序员变得懒惰。例如,每次需要时在DOM中搜索元素。找到它一次并缓存结果。

您会真正注意到运行IE 6。

1
David Semeria

这个理论很简单,而且已过时。过去确实如此。

我记得在奔腾之前的计算机上花了更多时间对我的Turbo Pascal进行微优化。在Y2K出现之前这才有意义,此后再没有了。如今,您无需针对使用了10年的硬件进行优化。测试软件来查找瓶颈就足够了。但是,随着每个人的到来,这并不意味着开发人员(以及优化)的生产力与为他们提供过时的硬件进行开发相关。

1
mario

1)如果我给开发人员提供较慢的计算机,这是否意味着生成的代码可能更快或更高效?

不,好的开发者会宠坏。如果他们发现他们在您的公司中使用了不良工具,那么他们将在其他地方工作。 (优秀的开发人员通常可以选择其他地方)

1
Sean Patrick Floyd

不管您问谁,这个问题的答案是否都是响亮的“否”?

询问图形美术师是否应该给他们慢速的机器。

询问您的作家,他们是否会选择速度较慢的机器而不是速度更快的机器。

询问您的行政助理,他们是否希望使用速度更快或更慢的计算机。

他们所有人都会说,使用更快的机器将会提高生产效率。

1
Barry Brown

我只能想象使用慢速机器时的个人资料体验。 kes.

简而言之。一定不行。

还至少要有4GB的内存,因此您的主机上可以有2GB,1个用于VM,另外1个用于额外的内存,VM让你有记忆的余地。

同样,必须有两个处理器,因此,如果应用程序锁定/占用CPU,开发人员不必费劲地按ctrl-alt-del命令。

0
user2528

让我们与这里的流程相反:是的。或至少这几十年来一直是该行业的普遍智慧(当然,对于开发人员而言,当开发人员在不被视为特许使用权并获得最新的小工具和计算机时总是会生气)。

当然,有一点会降低开发人员的机器,这将不利于他的工作绩效,因为它太慢了,无法运行完成任务所需的应用程序。但这一点与一台价格超过10000美元的计算机(带6GB RAM,2个4GB视频卡,高端声卡,4个屏幕等)相距很远。

我从事的工作从来没有一台高端机器,只要它还不错,它就不会让我失望。(而且,当我展示它们如何使我减速时,很少会更换真正的次标准机器)。

0
jwenting

除非您要报复或惩罚开发人员编写缓慢的代码以及对目标部署环境的无知,否则开发人员计算机上的运行时速度是如此无关紧要。

作为经理,您应确保开发人员了解项目的目标,并始终确保他们按计划进行。关于我们正在讨论的目标机器问题,可以通过在慢速机器上进行早期且频繁的测试来预防,而不是通过使它们慢速使用和遭受痛苦来预防。

慢的运行速度也会减慢开发速度,因为大多数程序员都在使用代码测试方法。如果运行时很慢,他们的任务也将很慢。

0
tia