什么是为软件/系统工程师购买适当的桌面环境?

一些背景。 在一个拥有超过5万人的组织中,我有一个难得的机会来build议改变IT购买计算机的方式。 目前,不pipe一个人的angular色是什么,他们都会得到一台配备2GB内存和一个19英寸显示器的惠普英特尔酷睿2双核电脑,最近我们认为这是不合适的,因为不同的工作有不同的要求。需要更高质量的显示器,快速的磁盘驱动器和大容量的内存,软件开发人员通常需要有足够的内存来同时运行许多应用程序,经常编译代码并在本地进行debugging,并使用大量的屏幕空间。在多个平台上进行testing。

我正在寻找一个合理的硬件规格的build议,更直接地满足软件开发人员的需求。

1)给程序员至less24“的显示器(他们几乎没有花费在这里)这提高了生产力,或者如果你喜欢更好的2×19”显示。 如果您开发GUI应用程序,则开发人员必须具有用于testing的双屏configuration。 针对这个“为什么f ** k就是这样的对话框”的bug。

2)如果他们开发跨平台的应用程序并需要更多的虚拟机,他们至less需要4 GB的空间才能运行VMWare环境来testing更多的GB。 如果在跨平台上执行GUI应用程序,则还应该安装多重引导,因为您必须在不同平台上的多监视器系统上testing对话框问题。 目前没有可用的虚拟仿真系统以本地方式支持多监视。

3)开发者需要一个四核心机器。 这不是为了testing的性能。 如果他们做了multithreading的任何事情,他们需要它,核心和并发性越多,他们就越有可能陷入死锁问题。 也许是一款配备8个虚拟内核的i975 Intel CPU,看看软件规模是否会更好。 请记住,几年之后,如果你从零开始开发一个新的复杂软件系统,这将近乎像明天一样,这将在所有沃尔玛商店里花费400美元。

4)如果你的开发者需要大量的虚拟机,那么一定要去购买一个新的固态硬盘。 IO是VM的关键部分。 或者每个虚拟机购买一个磁盘。

5)买一个非常好的键盘,鼠标,桌子和椅子。

6)买工厂,并采取公司的猫。

我会推动开发商两个显示器。 如果您提供关于开发人员的更多详细信息,我们可能会给您更好的规格。 如果他们是Java开发人员并使用eclipse,请尽可能多地使用内存。 我会尽量spring至less4GB,它并不昂贵。 我不会担心CPU和内存一样多。

当你谈论他们如何在本地运行事情时,可能会带来更强大的工作站。 也许如果你有数据库等,钱可能会更好地花在他们可以访问的开发服务器上。

给开发者两台机器。

第一个应该是用于电子邮件,文档编写和其他常见任务的标准(甚至是低端)公司工作站 。 这使得他们不需要pipe理员访问公司设置,并防止发展事故导致他们的通信停滞不前。

第二台机器应该是一个有很多内存和双显示器的高端机器。 开发者应该拥有完整的pipe理权限{edit}以供其他人使用{/ edit}。 应该有足够的硬盘空间来存储一些完整的备份(或虚拟机),以便开发人员不必担心尝试可能会破坏环境的东西。 不断的安装/删除不同的库和试用版软件会使工作站在一段时间后变得非常不稳定。 开发人员应该尽可能无痛的备份和恢复这个盒子。

您可以使用KVM来限制单个工作区所需的监视器/键盘/鼠标的数量。

更可能适合超级用户….

高分辨率双显示器,如果可能的话,两个机器 – 一个在桌面上 – 另一个 – 更强大 – 在服务器机房,可能有一些虚拟化平台。

更多的内存和更多的核心。

raid1中的磁盘以避免停机。 那不会取代备份!

我也build议你从用户那里收集一些反馈。 build立一个内部公司论坛/民意调查,让用户抱怨他们缺乏的东西,并激励他们为什么要得到他们要求的东西。

毕竟,你的目标是让自己的工作更轻松,不是吗? 通过得到用户的反馈,在决定最终决定之前,你会错过一些重要的细节的机会会减less很多。

正如雇主所定义的那样,适当的机器是最有效地让他们完成工作的机器。 你应该真正与受影响的用户讨论这个问题,而不是我们。 一旦他们告诉你他们认为他们应该让他们certificate一切。 举个例子,以前一个工作的一个开发人员试图告诉我,他不可能用不到两台电脑工作,每台电脑有两台显示器,但是不能提出需要第二台电脑的单一真实原因,例如我们已经有了一个专用的构build机器。

我会build议改变你的设置,并采用集群方法。 如果拥有强大的服务器和高速networking支持,本地机器可能是最便宜,最笨的terminal。

在我的大学里,我看到了这样一个设置工作,学生们在公司捐赠的老旧和低端terminal上运行大量的工程devise工具和仿真软件。

该软件都启动和运行非常快。

提高构build速度的一个非常简单快速的方法是采用distcc来分发代码的编译。 如果每个开发人员的机器都运行它,那么每个开发人员机器都将成为编译节点,并帮助其开发人员快速编译