我目前工作的组织似乎正朝着向软件开发人员发出必须使用工具,语言,框架等的方向前进。然而,没有人相信我这是件好事。我听到的主要论点是,它将使培训更容易。但是,在开发软件超过10年后,我从未依赖培训来学习如何使用IDE,编程语言或其他任何东西;所以我无法联想到。
随着技术的快速发展,以及我知道标准将适应的缓慢,我担心我的客户会有我无法轻易实现或无法实现的要求尽可能高效地实施。例如,如果Web应用程序中存在自动完成功能的UI要求,并且尚未批准API,我需要自己实现自动完成,而不是使用提供的众多API之一开箱即用。
更为激进的例子是,如果我的客户希望拥有Google Wave功能。在这种情况下,我希望能够灵活地配置我的开发环境(包括IDE)并选择适当的框架(例如:GWT)来使用。
请提供反馈,说明您是否认为软件开发人员工具,语言等应该标准化,以及支持您的论点的几点。
答案 0 :(得分:10)
标准化有很多好处。我的组织已经对我们将使用的技术制定了相当的标准。我们在以下领域实现了强大的利益......
招聘。我们很容易描述我们正在寻找的技术,并确保我们的招聘人员正在寻找合适的人才。
许可证/软件费用。我可以轻松购买企业许可证。它让我有机会通过让我在少数供应商中花更多钱来降低成本,从而获得更大的杠杆作用。
交付的一致性。我们的团队非常清楚将要构建,推出和维护哪些项目,因为他们之前已经成功完成了(并且他们也知道了陷阱)。
敏捷。由于标准化,我可以让一个团队接管另一个或一个人更容易接管另一个团队。
质量。我们对各个团队进行同行评审,并对各个团队进行质量保证。
如果不一致使用技术堆栈,工具,语言和框架,这些类型的好处将更难以实现。我并没有关闭新技术,但必须有一个具体的理由超越“如果我想要......”
答案 1 :(得分:2)
标准化的一个主要问题是,一旦标准出现,它们就会被标记为具体而难以改变。这就是为什么我们的企业IT环境停留在IE 6上,我们可以访问的最佳变更控制系统是CVS。鉴于这种情况,一些开发商违反规定,一些开发人员在更具创新性的公司找到工作。
答案 2 :(得分:2)
你这里有一个混合包。
我不会对IDE进行标准化,因为每个开发人员的工作方式都不同。如果被迫使用Visual Studio,那些精通emacs的人可能会看到他们的表现受到影响。我使用30英寸显示器优化了我的Visual Studio体验,并发现它非常高效。
然而,标准化某些工具,例如SCons或make或构建产品的东西是完全合理的。
禁止某些图书馆并拥有一个新图书馆获得批准与否的流程也非常合理。我知道有很多公司禁止提升,或JQuery,或者禁止一般的开源库等等。他们有很好的理由去做。我知道当一名实习生在互联网上找到一个随机的“安全”库而没有任何人运行它时,我感到非常沮丧。
最终每家公司都不同。您必须足够标准化,以避免人们来来往往,或者随着新产品的形成和组织结构的变化而出现严重的并发症和问题。但是你必须足够灵活,以避免重新发明你需要的每一个轮子。
重要的是要有明确的理由采用某种工具或禁止其他一些工具或库。如果没有咨询工程团队并做出有充分理由的决定,你不能只让管理层决定你使用这个而不是那个。一旦做出决定,就应该记下这些理由并明确沟通。
而且,如果最终没有采用您最喜欢的工具或库,请不要抱怨它。适应并做好自己的工作,或者找一个让你更快乐的新工作。
答案 3 :(得分:2)
我曾经为一位经理工作过,他觉得有必要在的每个级别的软件开发操作中进行创新。每个开发工具都必须是最前沿的(最好是测试版)。他要求我们使用的许多工具没有很好的文档,也没有培训。最终,我们尝试的大多数技术都无效。我们浪费了大量时间来研究新技术,只有当它变得明显无法取得进展时才抛弃它们。
我试图证明创新在value proposition所在的区域是完美的。在标准技术失败的情况下,也可以明智地使用创新。但对于大多数平凡的任务,使用经过验证的工具和方法应该是默认的。降低风险,降低成本,减少管理需求。因此,您可以将时间和精力集中在创新最有利的领域。
所以我认为标准化具有重要作用。但盲目地说一切都必须是标准的,就像我的经理认为一切都必须具有创新性一样肯定会失败。
答案 4 :(得分:1)
标准化的一个令人不快的后果是它往往会扼杀创新。
创新是可怕的。它涉及成本和风险。
标准化并不可怕。它可以在短期内降低成本和风险。直到你的竞争对手创造了改变游戏规则的创新。然后标准化成本很高。
答案 5 :(得分:1)
支持标准化的首要论点是,它最大限度地发挥整个组织使用共同知识体系的能力。不知道如何在ASP.NET / C#中构建自定义Web控件?请向拥有知识的大厅询问比尔。如果你使用不同的工具,这种组织智慧就会被切断。虽然不很好地限制在最小公分母(并希望您的管理层会意识到这一点),但您不应忽视共享体验的好处!
更新:我不同意创新和标准化是两极分化。事实上,如果我们仍然拥有20世纪80年代特有的网络标准,那么我们是否会接近网络创新的水平?不,我们不会。当然,我们可能会对新的低级网络协议进行更多创新,但这真的值得吗?取而代之的是,我们在TCP / IP和Web标准(http,html等)的范围内爆发了创造力。
诀窍是知道如何标准化而不用它作为关闭所有新探索的论据。例如,我们公司只使用ASP.NET / C#/ SQL Server,但我完全乐于在此框架内使用新工具(我们最近采用了DevExpress报告包,例如,取代了早期的标准)。
答案 6 :(得分:1)
无论您是为内部客户开发操作软件,还是为外部客户开发产品,都没有令人信服的理由 标准化。你当然没有给一个。 如果你看到公司如何努力将异构产品保持在一起已经维持了10年或更长时间,并且现在是开发人员在某些方面认为合理的各种技术的集合,你就不会问这个问题。
从我的头脑中,我可以说至少有2家知名软件公司因为维护成本太高而无法再竞争而被淘汰出局(但我不会)
我认为这里的误解是压制个人主义会抑制创新。那明显是错的。抑制创新的技术领导力很差。
答案 7 :(得分:1)
标准化是高效开发团队的必备条件。然而,这并不意味着您不能不时地将标准调整为适应新技术和新趋势。
答案 8 :(得分:0)
这取决于我认为的组织。像微软一样,是的,应该有一点标准。有一个IT部门的小型企业,没有。一个规模较大的企业,在世界各地设有多个办事处......也许。
一切都取决于:-P
答案 9 :(得分:0)
假设组织有一套广泛的企业应用程序需要管理,我会因为以下原因拒绝,但我可能会将所有内容相同的消息过于字面化:
妥协使用同类最佳系统,例如:如果所有数据库都是MS-SQL,那么任何Oracle数据库解决方案都会被抛弃。这也适用于这样一个事实:使用IDE的每个人都必须使用同一个,无论他们是在进行数据仓库报告开发,Web应用程序,控制台应用程序还是winForms。我正在考虑ERP,CRM,SCM,CMS,SSO和各种其他TLA,FLA和SLA等系统。 (如果需要,LA =解码提示的字母缩写词)
委员会升级是另一个有趣的问题。如果每个团队可以选择他们的工具并且让一个人决定升级的话,例如开始使用Visual Studio 2008而不是Visual Studio 2005,现在必须确定在什么阈值下同时升级所有人是值得的,如果有多个开发人员可能会非常头疼。例如,在过去10年中何时会有IDE更改,框架更改等?
标准的例外情况。承包商是否可以带来组织中未使用的东西,如果他们认为这有助于他们构建更好的软件,例如一些承包商认为,Resharper或其他附加组件非常值得组织不想花钱来获得?遗留系统可能会使标准变得有点笨拙,例如这是在ASP.Net 1.1中构建的,所以每个人都必须安装VS 2003,即使大多数人永远不会使用它吗?
我对此的想法。
答案 10 :(得分:0)
标准化有几个很好的理由。
首先,如果每个人都或多或少地熟悉相同的事情,它可以让企业更好地组织灵活性。它还允许人们更好地互相帮助。我无法解决ASP.NET中的问题,并且没有那么多人可以在C ++方面帮助我。
其次,它减少了支持问题和费用。 Oracle和SQL Server都是不错的产品,但是使用它们来实现类似的功能只会导致问题。更不用说我一直在商店里使用几个不同的平台来做类似的事情,这并不好玩。
第三,有些事情必须标准化。我们无法在VS 2005和VS 2008中运行一半,因为我们将项目文件保留在源代码管理之下。我们不得不选择一个时间并转换过来。
第四,在一些企业中,它简化了监管问题。我不知道你在做什么生意。我现在在一个我们可以逃避犯错误的地方工作,但我也在一家银行和一家公用事业公司签约,这里有必要能够向审计师展示一切都以标准的方式进行。第五,如果您正在处理花钱的软件,它可以简化采购。
这并没有特别限制我们,因为如果我们需要的东西没有标准化,我们就可以继续前进或者去做。
如果您想针对标准化制定业务案例,则需要提供与业务相关的参数。您的论点似乎是您无法实现用户想要的功能,这是一个考虑因素。还有另一个论点吗?
答案 11 :(得分:0)
标准化IDE足够丰富,无法为个别开发人员配置,这没有任何问题。
但是,请确保不要阻止个别开发人员使用其他工具,只要这些工具获得许可并且一个开发人员使用该工具不需要所有其他开发人员使用它。 / p>
例如,我碰巧使用NORMA来帮助我设计数据库。输出是SQL Server DDL(或我想要的任何其他内容)。我可以将DDL作为项目的一部分,而不是将我的NORMA源代码部分。后来的开发人员不需要使用NORMA来处理该项目。
另一方面,如果我决定使用Configuration Section Designer来创建配置部分,那么未来的开发人员也必须使用它。需要决定是否使用该工具。
答案 12 :(得分:0)
我工作的公司使用C#,ASP.NET,JavaScript并生成HTML。除了上述优点之外的优点是存在改进的维护速度和适应性变化的感觉。缺点包括为技术娴熟(令人讨厌)的人产生一些无聊,并且喜欢使用混合和匹配的语言,这取决于他们喜欢什么更适合,或者出于“表现原因”。
当您尽可能快地开发以满足紧迫的期限并在高度饱和的Web开发市场中竞争时,技术和个人监督总是很好。