你有没有用一些新的不成熟的技术灼伤你的手?
我经常听到有人说你不应该急于采用新技术,直到他们变得稳定,经受考验。 甚至有一个笑话,它是如何采取3个版本才能正确。 这可能是现实生活经验的声音,但至less有时候,这样的姿势是学习新技能所必需的自满,抵制变化和努力的结果。
然而在我看来,软件产业的成功与创新保持同步是至关重要的。 虽然大公司有整个部门都致力于研发,但在小公司中,开发团队必须跟上。 甚至在正式开始之前就开始使用这项新技术 – 这将会给你一些启动,并帮助你跟上其他。
以下是我尽可能遵循的策略:
- 积极采用新技术
- 使用早期的beta版进行实验和原型,并使用RC进行开发
- 解决您早期采用的技术正式发布时对产品进行最后一刻的更改
- 不要依赖0活动的一些模糊的开源项目
- 一定要学习一下,然后拿一粒盐官方产品路线图。
到目前为止,我从来没有付出过于热心的代价去跳上一些新的技术列车,我仍然获得了好处。 我不知道这只是一个巧合,或者可能是早期采用者不是那么危险?
由于这个问题肯定是有争议和主观的,所以我不希望听到真实的经验,采用早期的新技术被certificate是一个严重的错误,可怕的代价是支付。
我目前正在被微软Office Word 2007的CustomXML支持烧毁。
CustomXML允许文档具有自定义元素,可以对业务数据进行build模等。例如,您可以使用自定义元素定义XSD,将其与docx文件相关联,然后将占位符生成为CustomXML标签并使用导航/修改文档C#(或其他.NET语言)和OpenXML SDK 。 OpenXML的好处是它可以解耦为了实现自动化目的而将Office安装在服务器上的需要,并且是购买第三方库的另一种select。
总之,有一个关于Word 2007能够使用自定义XML来打开文档的官司。 从这篇文章 :
8月11日,公司收到Office Word销售禁令
“此禁令仅适用于2010年1月11日禁令之日或之后在美国销售的Microsoft Word 2007和Microsoft Office 2007的副本。在此date之前售出的这些产品的副本不受影响。
微软的回应是从未来版本的Word中删除对CustomXML的支持,并且正在发布一个可以完全移除这个function的补丁。 这里是官方更新的链接 。 根据这个微软OEM合作伙伴中心网站 :
美国需要以下补丁。 该修补程序将与所有Office 2007语言一起使用。
安装此修补程序后,Word将不再读取DOCX,DOCM或XML文件中包含的自定义XML元素。 这些文件将继续打开,但任何自定义XML元素将被删除。 处理自定义XML标记的function通常与基于Word文档的自动化服务器处理关联使用。 自定义XML通常不被Word的大多数最终用户使用。
我想象一小部分最终用户和开发者会使用它,所以我认为最后一句是准确的。 问题是目前没有任何文字(没有双关语意)如何前进的项目,确实利用这种技术。 CustomXML是我目前正在开发的一个大型项目的基石。 这个决定的影响是不正确的,它有效地防止了任何向前兼容性,因为没有保持CustomXML提供的结构的等价替代方法。
我的一些同事和我在这个话题上有丰富的知识…我想这是好事,我们没有得到解决写博客文章,因为我们已经计划了:)我们已经完成了一些相当令人印象深刻的壮举, VSTO,但这个消息令人失望。
如果有人对这个话题感兴趣,这里有一些文章要检查:
ZDNet文章:
- 微软在2亿美元的定制XML专利侵权案件中失去了吸引力
- Microsoft从Office 2007中删除自定义XMLfunction
BNet文章:
- 微软移动速度很快,已经有Word的自定义XML补丁
- 微软可能从命令中获得优势或痛苦,不会销售Word
Softpedia文章:
- 微软不能再销售Office Word 2010,2007或2003
- 微软拒绝Office Word销售禁令 – 至less暂时
- 自定义XML诉求之后,新的Office 2007副本拒绝给微软 – 从2010年开始
编辑:添加链接到官方更新。
我可以写一个相当不错的Java Applet。 所有技术最终都会落到实处,但是这个技术的起伏非常大。
几年前,我们大量使用了称为Notification Services的新SQL Server 2005function。 令人沮丧的是,SQL Server 2008已经停止了这个。这是一个严重的问题,导致软件架构师质疑所有新的微软技术。
这里有一些细节和一些更多的一些
微软的entity framework也存在问题。
还有谁记得OpenDoc,苹果的想法是如何写所有新的Mac应用程序? 没想到。
斯卡拉。
它在纸上看起来很棒,所以我写了一个项目,同时确保我的Scala版本保持最新。 版本号(2.7.x)及其开发年代让我感觉相对安全。
那么,我犯了一个错误。 问题? 严重缺乏文档和代码示例,以及不断变化的类库(在我的工作中两次,以前的工作代码开始获得“不推荐”的警告… …我谈了几个月的时间和类似的版本号)。
我不能说我输了很多(这是一个私人项目),但我不会在不久的将来触及Scala。 不过,我仍然认为这是一个非常好的,有前途的语言。
10
Elektronika BK-0010-01
,父亲试图用全新的Elektronika BK-0010-01
为我播放新年歌曲。
毋庸置疑,合成器不能从磁带上加载,直到邻居拿着吉他,没有歌曲。
是的,我有! 使用JSF 1.0! 在发布之前,Sun似乎没有审查好它。
我们一直在努力让事情发挥作用,但是有一段时间我们发现我们的错误是由JSF错误引起的,我们不得不使用解决方法。 直到JSF 1.1和使用myfaces-tomahawk实现,项目才开始有一定的速度。
QBASIC从来没有真正起飞。 我花了几年时间学习它。
好吧,公平地说,这是我的第一语言,也是学习的好方法。 它后来被Visual Basic,VB.NET取代。 所以这不是完全浪费我的时间。 ;)
大多数情况下,即使一门语言没有完全“起飞”,仍然是一种很好的学习经验,可以应用于其他方面。
Delphi.NET。 当我听到时,仍然有一个抽搐!
最糟糕的是,当你通过一个使用新产品的项目获得了80%,并且遇到了一个不可思议的bug时。
早在80年代中期,我的老板build议我尝试一种叫做KnowledgeMan的新dBase替代品。 当我意识到一些我认为是我的重要错误的时候,我们的确是他们的。 整个事情必须从头开始重做。 这花了我的工作。
AzMan(微软授权经理)
我们开始在一个公共网站/networking应用程序中使用这个function,梦想着单点login,并声称能够“利用您现有的基础设施”,或者营销现在所说的任何东西。 系统pipe理员可以pipe理的ASP.NET插件解决scheme,无需开发任何工具或编写任何代码。 这是双赢的,对吧?
由于我们的决定,我们学到了一些东西,我们都不想学习:
-
对于为公共网站提供服务的authentication机制,Active Directory本身并不是一个很好的select。 这并不是说它没有能力 – 它的function很强大,但它就像是聘请博士写“Hello World”应用程序。 这是过分的资格,在这样的背景下,它比你所需要的要多得多,比使用普通的旧式SQL表更难处理,而且需要更多的维护。
-
阿兹曼慢。 非常非常慢。 angular色提供者必须维护一个caching ,这应该告诉你我们正在谈论什么样的性能。 我从来没有完全理解为什么它如此缓慢,但我想这与它所依赖的COM和networking协议嵌套有关。
-
当你无法控制它时,一个caching(见上)可能是一个非常危险的事情。 当我们手动添加新用户(即通过pipe理应用程序而不是网站本身)时,这些用户最终将拥有一个“未经授权”的屏幕,直到caching过期并退出。 有时甚至会发生在线自我注册的用户; 我们从来没有find原因。
-
工具太可怕了。 如果你不相信我,请简单看看AzMan控制台 ,或者如果你真的想要头痛的话,请阅读一些文档 。 为什么要这么复杂?
-
这是片状。 很多时候,提供程序会停止工作,吐出隐藏的COM错误(每次都是一个不同的错误!),我们不得不重新启动IIS甚至整个Web服务器来重新合作。 我们也build立了一个域名信任 – 因为显然我们不想在我们公司的内部域上拥有50,000个公共用户帐户 – 唯一的问题是,pipe理员必须login到辅助域上的pipe理帐户才能pipe理angular色,因为控制台会失败以神秘的方式,如果您尝试从主要使用它(甚至作为在二级域的域pipe理员权限的企业pipe理)。
-
支持实际上是不存在的。 如果您使用基本的SQL Serverangular色提供程序(我们不这样做,但只是一个例子),那么就有1000万个教程,您可以在Google上find任何错误消息或在任何论坛上提出任何问题。 每当AzMan出现问题或者我们想要做一些新的事情时,一直在努力寻找好的信息。
-
代码整合很尴尬。 你必须经历一堆凌乱的COM层,并且界面被吸引了。 如果我没有记错,没有办法只是做一个简单的授权检查 – 你必须下载整个应用程序/angular色registry。 虽然这是很久以前的事了,所以我的记忆可能会在这方面变得模糊。
最终我们不能再忍受了,决定把一个基于SQL Server表格的本地系统拆分出来,这可能是我们从一开始就应该做的。 移民是痛苦的(见上面的两点),但是我们完成了,并没有回头。
不幸的是,它削减了双方。 当我们第一次开始在Windows上开发一个基于Web的大型应用程序时,.NET已经发布了testing版,.NET 1.0的最终版本不远。
但是因为这是新的,我们不知道将要发生什么事情,它会是多么受欢迎,以及六个月后MS是否会放弃它。 所以我们坚持使用久经考验的VB6。
我们仍然不得不保持VB6的传统,而且这是一段时间的限制。 虽然它没有在任何地方列出,但是我们却越来越偏执于在给定版本的Windows中将会撤销对VB运行时的支持。
也就是说,走.NET路线可能会有它自己的痛苦:1.0,1.1和2.0相互之间相当快速地出现,每个都与之前的版本(一些)不兼容。 因此,不得不迁移.NET平台会带来不同的风险。 less或多? 不能回答没有经历过的人:-)
最后,如果你这样做,你可能会被诅咒,如果你不这样做,该死的。 如果有人可以阅读内容,以确定一个给定的技术是否会一次成功,那么他们就不应该有一个软件的工作,而应该可能进入对冲基金pipe理,而不是一个现金,并提前退休: – )
是。 我是一个Lisp程序员:对我来说, 一切看起来都是新的和不成熟的。 🙂
当然好
我目前感受到成为Fortran 2003的早期采用者的痛苦:-)
标记
Mozilla XULRunner。
在AIR之前是Adobe AIR。 我们用它写了我们的人力资源pipe理系统。 当时XULrunner“即将发布”作为FireFox的下层引擎,所以我们期望我们所要做的就是确保我们的用户安装了FireFox。
在项目进行2年之后,就在部署之前,一个新的XULrunner出来,彻底打破了我们所有的代码,Firefox的部署无处不在。 我们最终使用专用的桌面安装程序部署了旧版本,并一直使用它,没有安全性或性能更新的好处,因为我们必须重新编写太多的代码才能兼容。 尽pipe这是一个非常成功的项目与我们的客户。
现在我们正在重新编写应用程序来运行Ext,这对我们来说是新的热门话题,但似乎有更多的社区支持,如果我们真的被困在某些东西上,它们将提供商业支持。
Java的
我非常渴望在1996年开始工作,并将其用于多个项目。 但对于Web开发,我总是喜欢Perl和PHP。 GUI开发我最终主要使用.NET。 对于脚本无法处理的less数命令行程序,我更喜欢使用Perl,Python甚至是PHP。
我写的Java程序很less被使用了很长一段时间,而我的一些pre-java应用程序仍在使用中。
我认为这样做的主要原因是,在Java中开发一些东西比使用其他编程语言花费的时间更长:所以得到的应用程序包含的function更less,更易于replace。
由于开发速度通常是我的客户面临的问题,所以Java往往会成为第二select。
作为早期的MonoTouch采用者,我每天都非常接近火焰。 我不知道接下来这个框架会发生什么。 但是值得一提的是,Novell的团队几乎全天24小时都在备用灭火器:)
在Mac OS X上的64位碳API:我没有亲自在这上面烧,但是我有一个朋友在为一家大型软件公司工作,他们花了一年的时间将几乎所有的代码转换成使用64位Carbon API来发现WWDC决定不再提供这些API。
有人注意到这里的趋势? 这里的大部分技术是由微软创build和取消或修改的。
我也被微软烧毁,对entity framework做出了修改。
缺乏市场占有率:
- Google的Go
- 可怜的工具链,缺乏与stream行的编译器和C的集成
- Python3000
- 缺乏必须具备的特性:迭代器,清理内部接口和整数接口对于我们的核心用户来说都不错,但是大部分都需要性能,而这一点还没有实现。
- 的C ++ 0x
- C99
- 已经有12年了,没有主stream的编译器完全实现这个。 C89上stream行的项目和利基架构仍然是安全的。
质量差:
- Windows Vista
- “Nuff说。
- Perforce公司
- C ++
对于落后的上游:
- 在Windows上PyGTK
- MSVC C支持
请注意,我列出这些技术绝不意味着他们不好,我是所有这些(除了质量差的)的巨大粉丝。 我对被这些技术烧毁的看法是第一手的(通常我试图推动它们作为现有技术的替代品,或者在已经进行了大量投资之后,只是陷入障碍。
然而在我看来,软件产业的成功与创新保持同步是至关重要的。
这并没有回答你的具体问题,但是,有一本书可能会让你感兴趣。
我曾经被迫使用witango ,但我越过了。
对我来说,Delphi的IntraWeb就是这样。
不是编程,但仍然是一个新的技术失误 – 我几乎失去了我的第一个迷你ATX构build乳头,这个故事的道德是从来没有依靠案件,而试图强行closures时,它被卡住了… …
我可以算很多。 WLPI(旧的BEA工作stream程产品)在我考虑时仍然感到痛苦。 从来没有制定和供应商放弃它。 唉…
无论如何,我会说跟上最新的(知道有什么,考虑它)是非常值得的,但只有在下列情况下才能生存:
- 你准备好了切割和stream血(金钱/时间/资源)
- 它提供了重要的战略优势/竞争力。
一个很好的例子就是AJAX。 现在已经足够成熟了,每个新的网站都应该这样做,除非它们有一个令人信服的理由,但是当它最初成为可能的时候,build立在这个网站上的网站与传统的网站相比将是非常昂贵的。
一些网站需要最新的外观和感觉才能保持竞争力,甚至到网站本身的function是次要的,他们需要成为AJAX早期适配器。 其他人不。 知道你是谁,并相应采取行动。
黑鸟。
为MSN创build交互式内容的绝佳开发环境。
真正的基本
在二十世纪八十年代中期,我们正在寻找一个可以在各种DOS实现上运行的开发平台,而不是像C那样“一点点地”翻译一种语言。
我们发现了True Basic,它是在1964年由BASIC原创者创build的。这是一种“编译”为p代码的语言。 它不仅会在DOS机器上运行,还会在GEM(Atari-ST)和Amiga机器上运行。
它的附加组件与我们习惯使用的VAX / VMS机器上的开发环境非常相似。 诸如Forms包,“ISAM”附加组件(在PC上可调用数据库之前)等等。
不幸的是,多平台的能力从来没有足够的销售语言。 哎呀,根据维基百科,有一个Mac OS版本(虽然不是OS X或雪豹)。 我在写这篇文章的时候甚至find了“当前”的TrueBasic页面。
最终,Visual Basic 1.0出来了,所有的BASIC程序员和我一样,检查了它,因为它有微软的名字。 当然,现在有10个版本,我们已经被引导到.Net平台,而TrueBasic在V5.5。
VBA – 我们花了很多时间把它整合到我们的产品中。 我们仍然在每个新版本上花费大量的时间,以确保我们不会破坏任何东西。 VB6和VBA也是基于COM的,如果您想以标准用户身份运行而不具有对registry的写入访问权限,则会出现问题。
这比你的问题更能解决你的问题。 我认为你认为采用新技术的成本效益是给定的。 对于一个非常大的公司来说,不断变化的技术可能花费数亿美元。 如果不存在成本效益,那么可以节省数亿美元。 大多数公司使用技术来制造别的东西,因为它存在而不能消费新技术。 当成本效益存在时,那么这样做是有道理的。
TurboGearsnetworking框架
我有一个networking应用程序来写这个(从朋友那里听说过)。 我并没有真正意识到其他select,不了解MVC,也不知道各种“标准”组件(例如SQLAlchemy而不是SQLObject)的替代scheme。 尽pipe这个项目的文档和总体状况远远好于当我弄脏手的时候,但是我最终得到了一个巨大的应用程序,它依靠“技巧”来绕过一些魔术function,并且在其中有许多无证的function以符合最后期限。 这成了一个维护噩梦,我真的希望我已经花了时间来build立一个更简单的计划,如果需求改变重写。
这是1.x系列,现在已经不支持基于主机的2.x系列了。 你可以想象,核心团队本身决定了一个rearch,但我坚持一个遗留的应用程序,我不得不维护。