题
.NET 3.5、.NET 4.0、WPF、Silverlight、ASP.NET MVC - 这些天确实有很多新的 Microsoft 技术发布/即将试用。(我给出的示例都是 Microsoft 技术,但这可以适用于任何语言或平台)。我很好奇你工作的公司是如何处理这个问题的。举几个例子:
- 您是否有一位 CTO 来决定公司使用什么技术?
- 开发团队可以自由选择他们使用的技术吗?例如:框架版本,经典 ASP.NET 与 ASP.NET MVC、ADO.NET 实体框架与 Linq2Sql 或 NHibernate?或者这些的混合?
- 您所在的公司正在尝试哪些新技术 为什么?
- 您的公司是否有专门的资源(时间)来尝试 WPF 或任何技术,只是为了研究,或者您是否在业余时间尝试一些东西并尝试将它们介绍给您的公司?
这些只是让我的问题更清楚的例子。总而言之,我想知道这个过程是什么样的,谁负责,谁做决定。您的公司是否赶上潮流,或者不愿意尝试新技术?您对这种情况感到满意吗?
在我工作的公司,我们仍然使用.NET 2.0(尽管我们现在正在慢慢切换到.NET 3.5),没有认真研究过ASP.NET MVC,根本没有尝试过WPF,等等。而且,有些人发现很难说服人们这样做。否则的话公平吗?
解决方案
在我的公司,我们有一个架构小组来确定使用哪些技术。欢迎人们阅读替代技术并提出建议,但最终还是由架构小组做出决定。
虽然这看起来可能具有限制性,但它确实确保所有开发小组都使用相同或相似的技术,并且从一个小组转移到下一个小组相当容易。此外,通过让一个小组完成所有研究,您可以确保不会因为让多个小组重复研究工作而浪费时间。
其他提示
由于我在一家小公司工作,而且我通常是唯一的开发人员,或者是一个非常小的团队中的首席开发人员,因此我通常可以说服我的老板使用我认为最适合特定项目/情况的任何东西。
对于公司内部的主要和关键项目,我们坚持我们所知道的。
对于任何新出现的“迷你”项目,我们都会在学习曲线上遇到困难,尽可能尝试使用最新技术来构建它们。
这使我们能够加快了解这些事情,然后在我们认为合适的情况下在我们的重大项目中舒适、安全地使用这些技术。
我工作的地方 有一个架构师团队从高层次上审视技术并向各个实际团队提出建议。架构师团队的一部分实际上采用了他们的技术和实验以及产品
- 内部 1 小时概述会议
- 为期一周的新兵训练营
- 白皮书/海报
技术越重要,列出的内容就越多。所有这些都只提供给团队,结合客户对技术的要求,实际上可以决定团队应该使用什么。
我对这个问题有一个混合的答案。在我工作的地方,较低级别的技术经理通常是选择某种技术的人,有时甚至开发人员也可以自由地尝试新的东西。例如,我真的很想在网站工作时了解 JavaScript 的 Prototype。我向我的老板提出了这个问题,他一开始很不情愿,因为没有其他人知道它或以前使用过它,但还是让我继续。能够学习 Prototype 并利用它的许多内置功能对我来说真是太棒了。其他更大的项目来自高层管理人员,我们实际上没有太多选择。现在,我的公司正在采用 SAP,所以一切都在朝着这个方向发展。我不一定想成为一名 SAP 专家,但如果我想留在这里,我至少需要学习如何使用它。
每家公司都有自己的创新步伐,这首先取决于管理者的舒适度,其次取决于是否有人真正致力于研究和提出使用新事物的工作。当管理者开始感到不舒服时,创新就会减慢或停止,直到他们再次感到舒服为止。有些创新他们永远不会满意。
记住这一点,我不知道如何回答你的问题,即期待比现在更多的创新是否公平。当然,你想要更多也是合理的;同样,一旦达到组织的创新速度限制,就不太可能改变,即使改变,也可能需要很长很长的时间。
过去,不同的经理给了我相当大的自由来改变事情,我利用了它。我也经常遇到极限,最后通过创办自己的公司来解决我的挫败感。(这可能被认为是有点严厉的措施;当然,通过这样做,您可以减少研究和开发您创办公司的目的的时间。)
这些天我正在用 Haskell 开发相当重要的应用程序,我很高兴。一年后,我开始掌握它的窍门,而且我当然还有几年的时间来学习我可以用我现在拥有的工具做什么。
我想我的回应摘要是:如果你想比周围的人更有创新精神,你就需要改变你的同龄人群体。
我认为任何为了新技术而尝试新技术的公司,因为它的前沿和“创新”都是疯狂的。建立一个正式的“让我们尝试新技术部门”简直是疯了......除非他们从事向其他企业提供技术咨询的业务。
对于其他所有人来说,技术是为了帮助企业完成工作。不是为了帮助开发人员用听起来很酷的 TLA 来排列他们的简历。
我现在工作的公司规模相当大,有一个选择“战略平台”的CTO。但我不得不说,如果你可以选择一种技术,他们很可能正在使用它。他们太大了,无法用公司大棒击败所有人,但他们尝试了。如果该技术能够在项目中发挥作用并按时引入,那么它就会被使用。
我们需要可靠且经过验证的平台来存储我们的产品。而且,我们不需要任何花哨的东西。因此,我们可能会在 5-10 年后转向 .NET,希望那时它已经准备好了。另一方面,Java 已经足够成熟,因此我们将它与 C++ 和一些 Jython 脚本一起使用。这些决定几乎是自主的(我们是一家小商店)。
我并不是要嘲笑最前沿的开发人员,但您是否需要可靠性或最新功能显然取决于您正在从事的工作。许多科学家仍然乐于使用 Fortran 77。