今天,当我启动Visual Studio 2008来完成我的工作时,我在Start页面上看到了一篇关于Visual Studio 2010和.NET 4.0的新博客文章.
我不禁感到有些不知所措.我刚刚开始掌握微软在.NET 3.0和3.5中添加的所有东西(LINQ,WPF,lambda函数等等)....我知道这些东西不再是新的,特别是对于这里的人们但是我一直忙于为客户解决实际问题......虽然使用像.NET 2.0这样的"老旧"技术,但没有时间继续跟上.
对不起,我的问题是非技术性的,但我认为它与程序员,员工和独立顾问以及软件业务(我希望有一天能开始)非常相关:如何应对这种快速变化,并保持相关性?在你需要它之前你是否忽略它,或者你是否试图保持领先?我希望保持领先并保持相关性(阅读:保持我的房子和食物在桌子上),而不是坚持做旧的东西,但它似乎是一个无尽的跑步机.特别是MS ......似乎他们有这么多钱和人,他们只是不断抽出新东西......更糟糕的是,渲染以前的技术已经过时且不受支持(比如VB6 ......来自我以前的生活).
您无需不断更新生产工作即可使用最新最好的技术.但是你应该对那里有什么以及正在创造什么保持知识.有一段时间适合开始使用新技术,但这一切都在很大程度上取决于您的项目和时间表.
但在某些时候你需要继续前进.某些技术变得不受支持.您应该知道何时会发生这种情况,并规划您的生产工作的未来以匹配.
个人而言,我希望微软能够在发布任何新的小部件,框架或者whizbang thingamajigs之前先修复bug..NET中仍存在已知的错误,从1.1版本开始到2.0版本早期版本 - 五年或更早的错误,MS显示无法修复.来吧,MS,花一年时间修理一下,然后带上新东西.
咆哮>
从好的方面来说,如果你在使用MS的最新产品之前等了一两年(或者说SP2已经更长),它往往会非常好.
编辑:为了实际提供问题的"答案",我倾向于学习我需要的东西(谷歌是你的朋友!),并且不要对微软或任何人的最新闪亮小部件感到兴奋其他.在一个全新的包装中,它往往只是旧的东西.当罕见的宝石出现时,它很难被忽视(嗡嗡声响起互联网!).
不要通过您最喜欢的框架的10.8版本的酷炫功能来衡量您的相关性.
您的客户将根据您是否解决问题来衡量您的相关性.他们不知道您是使用ForEach而不是Linq查询,还是代理而不是lambda表达式.
作为经理,我积极为我的开发人员寻求使用新技术的机会.我们是一家.NET商店,但"跟上琼斯"是一种范式 - 从我们曾经拥有的一些旧政策转变.直到去年,我们仍然在使用1.1框架.这非常痛苦,既受到旧版本框架的限制,又受到必须使用Visual Studio 2003的限制.
我们开始将业务请求与Framework中提供的功能相对应.经过几天"我们目前的基础设施需要十个开发人员日,或者您可以投资五天让我们解决我们的框架限制 - 那么这些请求需要两天",我们不仅鼓励升级框架,但也保持最新,并采用可用的功能.
虽然微软并不完美,但它们确实为其产品的CTP提供了很好的可用性,允许人们在游戏中保持领先地位,因为可以在组织内部实现这一目标.这些类型的产品也非常适合包含在概念验证项目中.
随着正在取得的进步,无论您可以立即投入多少资金,都很难将它们全部吸收.您需要确定哪些功能,功能和工具可以提供最大的积极影响,并专注于此.当您扩大使用范围时,您会惊讶地发现其他部分的速度有多快.Lambda表达式就是一个很好的例子.使用LINQ提供了一个合理的进展,而不是我们试图实现的重点.
经过近二十年的发展,我觉得自己很有信心说这是一款无尽的跑步机.好吧,差不多......
您注意到的第一件事是某些技术比其他技术更持久.一般来说,这是设计得更好的东西,但并不总是那么一致,有时废话会赢,至少会持续一段时间.显然,学习好东西是明智的选择,而忽略其余的东西.如果我试着学习多年来出现的每一项技术,我的脑袋就会爆裂,而且其中很多都不值得学习.
你注意到的第二件事是这些东西大部分是回收的.这只是一遍又一遍的废话,只是这次有了不同的名字和更新的声音.最终,事实证明,没有那么多方法可以做,虽然它每五年左右重新引入一次,但相同的基本概念浮出水面.我会进入它们,但现在它并不值得,我认为现在几乎所有的领先技术都只是在过去二十年中存在的早期版本中旋转.几十年来,这个行业还没有看到任何真正的创新,它只是以更快的速度推出了更多的东西,这就是全部(好吧,它也有点闪光,但并不多).
第三个也是最重要的一点,就像很久以前告诉我的那样:"这些东西都没有真正起作用!" 这可能是最好的节省时间.很多东西可能很酷而且有潜力,但令人遗憾的是,它没有做足够的广告宣传,使其可用于某些真正的应用程序.我们是假货行业.这可能是由于认识到制作光滑的外观演示非常容易,但很难产生正常工作的东西.随着我们越来越多的垃圾散落在水域,我们的基础变得越来越弱.因此,学习如何使用其最佳位置之外的东西是没有意义的.大多数技术做得很好,其余的只是炒作.弄清楚那是什么,并记住它,但不要
多年来,我不得不跳过不同的语言和不同的操作系统.我的编辑环境已经演变,我用来自动化项目的工具变得越来越不可靠.技术发生了变化,但是由于我们已经超过了一些门槛,虽然它们具有更多的功能,但它们不再可靠,所以以一种奇怪的方式它变得越来越慢,越来越容易.过去我们真的必须了解事情是如何运作的,现在你只是将代码拼凑在一起,然后当它行为奇怪时责备其他人.
选择一些优秀的技术,并将大部分路上的波浪带回海滩.每隔五年跳一次,游回去再做一次.幸运的话,你会在合适的时间出现在正确的位置.如果没有运气,你最终会像大多数其他前程序员一样转向其他职业生涯.
保罗.
飙升吧!定期花费大量时间并使用新技术编写解决方案.它不一定是花哨或有用的 - 只是足以让您学习基础知识以及何时在实际项目中使用它.
关心它.我不同意一些答案 - 坚持这些东西是非常重要的.如果您对学习新技术不感兴趣并不断提高自己的技能,那么您可能还会关注另一项工作.我并不是说丑陋,但通过继续使用旧技术,你没有利用你所面临的问题得到解决的事实.你无视成千上万人和社区的工作.例如,如果您使用WebServices而不是WCF编写新服务,则无法利用安全性方面的改进 - 最好的是,您通过自己再次解决这些问题而浪费时间和金钱.在最坏的情况下,你做错了,对你的公司/客户来说是一个风险.
知道什么时候说不.在更新旧代码时有一个平衡的行为.每当新技术出现时,您都不能只重写所有内容.如果您专注于编写质量,"面向未来"的代码,这将有所帮助.例如,如果您编写了一个结构良好的WinForms应用程序,那么应该可以在WPF中重用您的逻辑.如果你写了一个不错的数据层,你应该能够放入一个linq数据层.这个级别的代码很难掌握,但重构工具,单元测试和静态分析将有所帮助.
我的感觉几乎一样.很多时候,我担心技术变化的速度比我掌握当前工具集的速度要快.我总是尝试提出一些我可以应用该技术的项目.例如,我真的想要在MVC上达到最高速度,所以我决定使用新框架编写一个应用程序,即digg,stackoverflow和dotnetkicks之间的交叉.我已经进入了3天,我已经学会了TON.
关于我们工作的困难部分是很难保持相关性.然而正是这种挑战让它如此令人兴奋.