我是一家小型软件公司的开发经理,负责生产主要使用Java编写的产品和一系列与Java相关的Web技术和框架(当我们需要更低级别的东西时,C ++的奇怪之处)。
当其中一位开发人员来找我并说“我想要在Perl / Python / Ruby / Visual Basic / Fortran / 6800汇编程序(基本上不在我们的核心技术列表中的任何内容)中使用内部工具”时,我的立即回应是我不想要那些人离开时我们可能无法支持的东西 - 内部工具有一种变得至关重要的方式,你需要能够独立于特定的个体来维护它们。
我的观点是,我并不是要求他们用C编写网络应用程序,我们的核心技术列表通常包含适用于所讨论工作的工具(如果可能不如某些替代方案那么好) ),但在这些情况下应该严格应用标准吗?
(Marker as community wiki,因为我知道它是主观的 - 虽然不是,但我希望有争议 - 但我相信如果他们认为这是不合理的,人们会关闭)。
答案 0 :(得分:6)
根据定义,标准是对潜在解决方案的任意限制。从本质上讲,它们并不总是包含给定工作的“最佳”工具(当然不是对“最佳”的所有解释)。但是,遵守标准可以让您保持合理的成本,并保持灵活性(避免由于技术人员不熟练的非标准技术而不敢触摸您的工具链的情况)。所以一般来说,要坚定自己的标准:你有一个很好的案例。
然而,考虑到整个世界和特别是IT的流动,标准也需要发展。 那是你应该为实验留下一些摆动空间:允许你的开发人员聚集在一起一个Ruby工具,可以感受它,但是使用经过批准的技术替换它的预算,并且不允许原始开发人员维护它,以获得第二意见并降低锁定原始开发人员的风险。 (在紧急情况下,这会受到伤害。)如果新技术成功并且显着超过了您现有的标准(关键点!),请考虑逐步实施。但不是没有逐步淘汰否则(至少九个案例中):你不希望你的标准组合无法控制地增长。
答案 1 :(得分:0)
你的立场似乎非常合理,也就是说,你能够解释你告诉别人的原因。
他们不能用自己喜欢的语言做更快,也许更好的事情的原因是因为你会疯狂地管理它。除了,如果你没有怎么办?
理智的管理策略可能(可能是!)通常对这些事情说不,但是时不时地说,是的。并尝试学习。
以下是我的建议:内部工具编写得很好,使用您通常不会使用的语言构建,只是可能会让您进一步使用该工具。 Python和Django,Ruby和Rails以及列表一直在继续。所以你是一个Java人。对你有好处。
但是,当您放弃任意限制时,您的开发团队,组织可能会超出预期,并将限制放在真正拥有100%可靠业务和财务案例的限制之上。
学习新编程语言的恐惧是平庸和组织中的优秀人才之间的差异。人为限制他们的生产力,及时,会导致你失去那些吱吱作响的车轮。他们会去其他地方。你的问题应该是“如果我勾掉这些家伙他们离开,我是否会失去一些好东西,值得保留的东西,做我现在拥有的人,他们都用Java编写所有东西,有能力建立我的下一个大当我需要它解决时,产品,或解决我的下一个大问题?或者他们都是一个集体思维团队的平等主义成员,而不是其中一个能够有原创思想?“
我提交被殴打以下提议:
我。对Visual Basic和C#说不,理由是Java和JVM提供了.net托管代码环境优势的超集。迁移到.net意味着保留第二个虚拟机技术,运行时和竞争框架,同时失去Java的可移植性和开源JVM平台,这对您的组织来说是一个净损失。
II。对Ruby和Python说“是”,因为它们位于初创公司用来改变世界的语言列表中。他们是处于优势地位的明星。
III。如果您有明确的商业案例,请说“不”,如果是六个月或更短的时间,则会给您更好的答案,以便为您的软件团队提供最佳结果和功能。你有什么不能用Java做的吗?没有。在Python和Ruby中,你有什么不能做得更快,也可能做得更好的吗?你们有些人说是吗?给他们一个证明它的机会。
IV。另外,对使用辅助语言的主要Java产品的扩展和改进说不。如果使用,Python和Ruby用于独立的内部工具,而不是“使用第一类语言而不是Java来扩展主要的现有Java应用程序”,而不是作为完全重写的目标,而不是放弃的方式Java的。