你有没有用一些新的和不成熟的技术来焚烧你的手?

时间:2009-05-24 17:24:50

标签: roadmap

我经常听到有人说你不应该急于采用新技术,直到它们变得稳定,经过试验和测试。关于如何正确使用3个版本甚至还有一个笑话。这可能是现实生活体验的声音,但至少有时这种姿势是自满,抵制变革和学习新技能所需的努力的结果。

但是,在我看来,软件行业的成功与创新保持同步至关重要。虽然大公司的整个部门都专注于研发,但在较小的公司中,开发团队必须跟上。即使在正式推出之前就开始使用新技术 - 这将为您提供一些启动,并帮助您跟上其他技术。

这是我尽可能遵循的策略:

  • 积极采用新技术
  • 使用早期测试版进行实验和原型以及用于开发的RC
  • 在您提前采用的技术正式发布时,解决产品的最新更改
  • 不要依赖一些带有0活动的模糊开源项目
  • 一定要学习,但要采取一系列盐官方产品路线图。

到目前为止,我从来没有付出过于热衷于跳上一些新技术列车的代价,但仍然获得了收益。我想知道这只是巧合,还是早期采用者毕竟不是那么危险?

不仅仅是邀请早期采用这个问题的讨论,因为这个问题肯定是有争议和主观的,我想听听现实生活经验,采用早期新技术被证明是一个严重的错误和可怕的价格必须得到报酬。

42 个答案:

答案 0 :(得分:25)

我可以编写一个非常好的Java Applet。所有技术最终都会被淘汰,但这一技术的兴衰会非常明显。

答案 1 :(得分:24)

我目前正在使用Microsoft Office Word 2007的CustomXML支持进行刻录。

CustomXML允许文档具有可以为业务数据建模的自定义元素等。例如,您可以使用自定义元素定义XSD,将其与docx文件关联,然后将占位符生成为CustomXML标记并导航/修改使用C#(或其他.NET语言)和OpenXML SDK的文档。 OpenXML的好处在于它解决了在服务器机器上安装Office以实现自动化的需求,并且是购买第三方库的替代方案。

简而言之,有一项关于Word 2007能够使用自定义XML打开文档的诉讼。来自this article

  

8月11日,公司收到了   Office Word销售禁令......

     

“此禁令仅适用于   Microsoft Word 2007和   Microsoft Office 2007在美国销售   在禁令发布之日或之后   2010年1月11日。这些副本   在此日期之前销售的产品不是   影响。“

微软的回应是从未来版本的Word中删除对CustomXML的支持,并发布一个完全删除此功能的补丁。这是link to the official update。根据{{​​3}}:

  

需要以下补丁   美国。补丁会起作用   使用所有Office 2007语言。

     

安装此修补程序后,Word   将不再阅读自定义XML   DOCX,DOCM中包含的元素,   或XML文件。这些文件会   继续打开,但任何自定义XML   元素将被删除。能力,技能   处理自定义XML标记是   通常与...联合使用   基于自动服务器的处理   Word文档。自定义XML不是   通常由大多数最终用户使用   字。

我想一小部分最终用户和开发人员都会使用它,所以我认为最后一句话是准确的。问题是目前没有任何关于如何推进利用这项技术的项目的文字(没有双关语)。 CustomXML是我目前正在开展的大型项目的基石。这一决定的影响并不是积极的,它有效地阻止了任何向前兼容性,因为没有等效的替代方法来维护CustomXML提供的结构。

我的一些同事和我对这个主题有很多知识......我想我们没有按照我们的计划编写关于它的博客文章很好:)我们已经完成了一些令人印象深刻的壮举有了这个和VSTO,但这个消息令人失望。

如果有人对此主题感兴趣,请查看以下文章:

ZDNet文章:

BNet文章:

Softpedia文章:

编辑:添加了官方更新的链接。

答案 2 :(得分:21)

几年前,我们大量使用了名为Notification Services的新SQL Server 2005功能。令我们失望的是,SQL Server 2008中已经停止使用。这是一个严重的问题,导致软件架构师质疑所有新的Microsoft技术。

以下是一些detail和一些more以及一些more

Microsoft's Entity Framework.

也存在问题

答案 3 :(得分:14)

其他人还记得OpenDoc,Apple关于如何编写所有新Mac应用程序的想法?不这么认为。

答案 4 :(得分:10)

Scala中。

它看起来很棒,所以我用它写了一个项目,同时确保我的Scala版本保持最新。版本号(2.7.x)及其开发年份使我感到相对安全。

好吧,我犯了一个错误。问题?严重缺乏文档和代码示例,以及不断变化的类库(在我工作期间两次,以前工作的代码开始得到“弃用”警告..​​....而且我正在谈论几个月和类似版本的范围号码)。

我不能说我失去了很多(这是一个私人项目),但我不会在不久的将来接触Scala。不过,我仍然认为这是一种非常好的,有前途的语言。

答案 5 :(得分:9)

当我10时,我的父亲试图以全新的Elektronika BK-0010-01为我播放新年歌。

毋庸置疑,合成器无法从磁带上加载,直到邻居带上吉他才有歌曲。

答案 6 :(得分:8)

是的,我有!使用JSF 1.0!看起来Sun在发布之前没有对它进行过很好的评论。

我们一直在努力使事情有效,但有一段时间我们发现我们的错误是由JSF错误引起的,我们不得不使用变通方法。直到JSF 1.1和使用myfaces-tomahawk实现,项目才开始有一定的速度。

答案 7 :(得分:7)

QBASIC从未真正起飞过。我花了数年时间学习它。

好吧,公平地说这是我的第一语言和学习的好方法。后来它被Visual Basic取代,然后是VB.NET。所以这并不是完全浪费我的时间。 ;)

大多数情况下,即使某种语言没有完全“起飞”,它仍然是一种可以应用于其他东西的良好学习体验。

答案 8 :(得分:7)

Delphi.NET。我听到的时候仍然有一个抽搐!

答案 9 :(得分:7)

是。我是一名Lisp程序员:一切对我来说都是新的和不成熟的。 : - )

答案 10 :(得分:7)

最糟糕的情况是当你使用新产品获得80%的项目并且遇到一个showstopper bug时。

早在80年代中期,我的老板建议我尝试一种名为KnowledgeMan的新dBase替代品。当我意识到我认为是我的一些重要错误实际上是他们的时候,它还远远不够。整件事必须从头开始重做;这让我失去了工作。

答案 11 :(得分:6)

毫无疑问,它会削减两种方式。当我们第一次开始在Windows上开发一个基于Web的大型应用程序时,.NET已经开始测试 - 不久之后最终发布了.NET 1.0。

然而,因为它是新的,我们不知道会发生什么,它会有多受欢迎,以及MS是否会在六个月后放弃它。所以我们坚持使用久经考验的VB6。

我们仍然需要保留VB6的遗产,并且暂时受到限制。虽然它没有在任何地方列出,但我们越来越偏执,对VB运行时的支持将在给定版本的Windows中被撤销。

也就是说,走向.NET路线可能有其自身的痛苦:1.0,1.1和2.0相继出现相当快,每个都与前一版本(某些)不兼容。因此,不得不迁移.NET平台会带来不同的风险。更少或更多?无法回答那个没有经历过的人: - )

最后,如果你这样做,你可能会被诅咒,如果你不这样做,你该死的。如果有人可以阅读内脏以确定某项技术是否会在任何时间取得成功,那么他们就不应该在软件中找到工作,而应该进入对冲基金管理,赚取大量现金并提前退休: - )

答案 12 :(得分:6)

AzMan(Microsoft授权经理)

我们开始在公共网站/网络应用程序中使用它,被单点登录的梦想所吸引,并声称能够“利用您现有的基础架构”或者现在的营销说法。系统管理员可以管理的ASP.NET插件解决方案,无需开发任何工具或编写任何代码。这是双赢的,对吗?

由于我们的决定,我们学到了很多东西,我们都不想学习:

  • 对于为公共网站提供服务的身份验证机制,Active Directory本身不是一个很好的选择。并不是说它没有能力 - 它很有能力,但它就像聘请博士写一个“Hello World”应用程序一样。它过于合格,在这样的环境中它比你需要的更多方式,它比普通的旧SQL表更难以使用 ,并且需要很多更多维护。

  • AzMan很慢。非常非常慢。角色提供者必须维护缓存,它应该告诉您我们正在谈论的性能类型。我从来没有完全理解为什么它这么慢,但我想它与大黄蜂的COM嵌套和它依赖的网络协议有关。

  • 当你几乎无法控制它时,缓存(见上文)可能是一件非常危险的事情。当我们手动添加新用户时(即通过管理应用程序而不是站点本身),这些用户最终将获得“未授权”屏幕,直到缓存过期并且他们退出。有时这甚至会发生在网上自我注册的用户;我们从来没有找到原因。

  • 这些工具太可怕了。如果你不相信我,请选择brief look at the AzMan console,或者如果你真的想要头疼的话,请阅读一些documentation。为什么要这么复杂?

  • 这是片状的。很多时候,提供商会停止工作,吐出神秘的COM错误(每次都是不同的错误!),我们不得不重新启动IIS甚至整个Web服务器以使其再次合作。我们还设置了域信任 - 因为很明显我们不希望在内部企业域上有50,000个公共用户帐户 - 只有问题是,管理员必须登录到辅助域上的管理帐户管理角色,因为如果您尝试从主服务器使用它,控制台会以神秘的方式失败(即使是在辅助域上具有域管理员权限的企业管理员)。

  • 几乎不存在支持。如果您使用基本的SQL Server角色提供程序(我们没有,但仅作为示例),有1000万个教程,您可以在Google上查找任何错误消息或在任何论坛上提出任何问题。每当AzMan出现问题或者我们想要做一些新的事情时,找到好的信息都是一直在努力。

  • 代码集成很尴尬。你不得不经历一堆凌乱的COM层,界面很糟糕。如果我没记错,就没有办法只进行简单的授权检查 - 你必须下载整个应用程序/角色注册表。这是很久以前的事了,所以我的记忆在这方面可能会模糊不清。

最终我们不能再拿它了,并且决定根据几个SQL Server表扯掉整个系统以获得一个本土的系统,这可能是我们应该从一开始就做的。迁移是痛苦的(见上面的两点),但我们完成了,从未回头。

答案 13 :(得分:5)

好吧,是的

我现在感觉成为早期采用Fortran 2003的痛苦: - )

标记

答案 14 :(得分:5)

Mozilla XULRunner。

在AIR之前是Adobe AIR。我们使用它编写了人力资源管理系统。当时XULrunner“即将”作为FireFox的底层引擎发布,所以我们希望我们所要做的就是确保我们的用户安装了FireFox。

项目进行了2年,在部署之前,一个新的XULrunner出现了,完全打破了我们的所有代码,并且Firefox部署无处可见。我们最终使用专用的桌面安装程序在我们的旧版本上部署,并且从那时起一直在使用它,没有安全性或性能更新的好处,因为我们必须重新编写太多的代码才能兼容。尽管这对我们的客户来说是一个非常成功的项目。

我们现在正在重新编写应用程序以在Ext上运行,这对我们来说是新的热点,但似乎有更多的社区支持,并且如果我们真的陷入困境就提供商业支持。

答案 15 :(得分:5)

<强>爪哇

我非常渴望在1996年开始研究并将其用于多个项目。但是对于Web开发我总是喜欢Perl,而现在是PHP。 GUI开发我最终主要使用.NET。对于无法通过脚本处理的少数命令行程序,我更喜欢使用Perl,Python甚至是PHP。

我编写的Java程序很少使用很长一段时间,而我的一些pre-java应用程序仍在使用中。

我认为这样做的主要原因是,使用Java开发内容比使用其他编程语言花费的时间更长:因此生成的应用程序包含的功能更少,更容易替换。

由于开发速度通常是我的客户的问题,Java往往最终成为第二选择。

答案 16 :(得分:4)

由于缺乏市场占有率:

  • Google的Go
    • 糟糕的工具链,缺乏与流行编译器和C的集成。
  • Python3000
    • 缺乏必备功能:迭代器,清理内部设备和更整洁的界面对我们的核心用户来说很不错,但大多数人都希望获得性能,而且还没有提供。
  • 的C ++ 0x
  • C99
    • 已经12年了,没有主流编译器完全实现这一点。 C89上受欢迎的项目和小众架构仍然是安全的。

质量差:

  • Windows Vista
    • '努夫说。
  • Perforce的
  • C ++

落后于上游:

  • Windows上的PyGTK
  • MSVC C支持

请注意,我列出这些技术绝不表示它们不好,我是所有这些技术的忠实粉丝(除了质量差的那些)。我对被这些技术焚烧的看法是第一手的(通常我会试图将它们作为现有技术的替代品,或者在已经进行了大量投资之后直接陷入障碍。

答案 17 :(得分:4)

作为早期的MonoTouch采用者,我每天都非常接近火焰。我永远不知道接下来这个框架会发生什么。但值得赞扬的是,Novell团队大约每周7天,每天24小时使用灭火器:)

答案 18 :(得分:4)

有人注意到这里的趋势吗?这里的大部分技术都是由微软创建,取消或修改的......

我也被微软烧毁了实体框架的变化。

答案 19 :(得分:4)

Mac OS X上的64位Carbon API:我没有亲自为此而烦恼,但我有一位朋友为一家大型软件公司工作,该公司花费了一年的时间将其几乎所有代码转换为使用64位Carbon API只是在WWDC上发现那些API不再可用。

答案 20 :(得分:3)

没有编程,但仍然是一个新的技术错误 - 我几乎失去了我的第一个迷你ATX构建的乳头,这个故事的道德是永远不会倾向于一个案件,而当它被卡住时强行关闭它...... / p>

答案 21 :(得分:3)

  

但是,在我看来,软件行业的成功与创新保持同步至关重要。

这不能回答您的具体问题,但有一本名为Crossing the Chasm的书可能让您感兴趣。

答案 22 :(得分:3)

我曾被迫使用witango,但我已经克服了它。

答案 23 :(得分:3)

对我来说,Delphi的IntraWeb就是它。

答案 24 :(得分:2)

True Basic

在20世纪80年代中期,我们一直在寻找一种可以在各种DOS实现上运行的开发平台,而不是像C那样“笨拙”的语言。

我们发现True Basic,宣传为由BASIC的原始创作者在1964年创建。这是一种“编译”到p代码的语言。它不仅可以在DOS机器上运行,还可以在GEM(Atari-ST)和Amiga盒子上运行。

它的附加组件与我们习惯使用的VAX / VMS机器上的开发环境非常相似。像Forms软件包,“ISAM”附加组件(在PC上可调用数据库之前)等等。

不幸的是,多平台能力从未出售过足够的语言。根据维基百科的说法,有一个Mac OS版本(虽然不是OS X或Snow Leopard)。我甚至在写这个笔记的时候找到了'当前'的TrueBasic页面。

最终,Visual Basic 1.0问世了,所有BASIC程序员都像我一样,检查了它,因为它上面有微软的名字。当然,现在有10个版本,我们已经被引导到.Net平台,而TrueBasic则是V5.5。

答案 25 :(得分:2)

VBA - 我们花了很多时间将它集成到我们的产品中。我们仍然花费大量时间在每个新版本上,以确保我们不会破坏任何东西。 VB6和VBA也是基于COM的,如果你想以标准用户身份运行而没有对注册表的写访问权,这就是一个问题。

答案 26 :(得分:2)

黑鸟。

为MSN创建交互式内容的精彩开发环境。

答案 27 :(得分:2)

我可以算上很多。当我想到它时仍然受到伤害的是WLPI(旧的BEA工作流程产品)。从未解决供应商放弃它。叹息......

无论如何,我会说跟上最新的事情(知道那里有什么,考虑到它)是非常值得的,但是只有在以下情况下生活在最前沿:

  1. 你准备好切割和流血(金钱/时间/资源)
  2. 它提供了重要的战略优势/竞争力。
  3. 这方面的一个很好的例子是AJAX。它现在已经足够成熟,每个新网站都应该这样做,除非它们有令人信服的理由不这样做,但是当它首次成为可能时,与传统的替代方案相比,建立在它上面的网站将非常昂贵。

    有些网站需要最新的外观和感觉以保持竞争力,甚至到网站的功能本身是次要的,他们需要是AJAX早期适配器。其他人没有。知道你是谁,并采取相应的行动。

答案 28 :(得分:1)

Windows开放服务架构(WOSA): http://en.wikipedia.org/wiki/Windows_Open_Services_Architecture

ODBC,MAPI,TAPI等的基础

答案 29 :(得分:1)

TurboGears网络框架

我有一个Web应用程序可以编写并跳转到此(从朋友那里听说过)。我并没有真正意识到其他选择,没有正确地了解MVC,也没有意识到各种“标准”组件的替代品(例如SQLAlchemy而不是SQLObject)。虽然项目的文档和一般状态比我弄脏的时候要好得多,但我最终得到了一个巨大的应用程序,依靠“技巧”来绕过一些神奇的功能并且在其中有很多未记录的功能满足最后期限。它变成了维护的噩梦,我真的希望如果需求发生变化,我会花时间构建更简单的计划重写。

这是1.x系列,现已推荐用于基于Pylons的2.x系列。你可以想象,核心团队本身决定重新研究,但我仍然坚持使用我必须维护的遗留应用程序。

答案 30 :(得分:1)

MongoDB的。我在新产品的核心使用它,然后发现它不会与每次写入磁盘同步。因此,如果服务器断电,它有可能破坏数据。

答案 31 :(得分:1)

这比您的问题更能解决您的讨论。我认为您假设采用新技术的成本效益是给定的。对于一个非常大的公司来说,不断变化的技术可能会花费数亿美元。如果没有成本效益,那么可以节省数亿美元。大多数公司使用技术制造其他东西,而不能仅仅因为存在而消费新技术。如果有成本效益,那么这样做是有道理的。

答案 32 :(得分:1)

Windows Azure的.NET服务......他们取消了它。

答案 33 :(得分:0)

Web推送,J2EE CMP

答案 34 :(得分:0)

iBatis的。

我们最终实现了很多Hibernate已经完成的工作。从本质上讲,我们使用iBatis开发了非标准的内部JPA提供程序。这项技术已被选中,因此我们无能为力。

为了减轻这种打击,我们重构了代码以避免重复工作。

答案 35 :(得分:0)

我对Model Driven Developpement非常感兴趣,所以我曾经使用过一次可以免费下载的Leonardi软件的代理工作。

在使用这个软件一段时间后,我注意到缺少文档,绝对没有支持(没有任何免费)。

我必须在Leonardi完成我的应用程序,提供非常便宜的工作!

所以,除非你确定你有提供高质量的文档和技术,否则不要使用新技术。支持 - 你能负担得起

答案 36 :(得分:0)

是的,来自团队的其他程序员“测试了库”。 “它将完全满足您的需求!”。然后我开始使用它似乎真正的库崩溃而不是我的代码。这种情况几乎在一个月左右发生一次。

在我们的团队中,我们是TDD的初学者,所以也许这是正常的,但无论如何它都会燃烧很多:)

答案 37 :(得分:0)

更糟糕的是当你的公司采用你自己开发的新/不成熟的软件时。起初,当我是唯一的开发人员时,my nifty HTML GUI framework在构建我们的RIA时工作得很好。但是,一旦我们得到了更多的开发人员,我就看到了当没有使用经过验证的平台以及强大的社区背后,开发人员的工作效率会降低多少。由于这一点,以及我最终意识到HTML 4对于RIA来说是不合适的事实,我们转换为Adobe Flex 3.我对此举感到非常满意。

答案 38 :(得分:0)

我被烧伤了:

  • gcc在遇到驼峰之前,以及之后的MSVC ++
  • 专有的sun c ++编译器
  • Microsoft Developer Network

答案 39 :(得分:0)

C ++,但不是我的采用者:早在80年代末期/ 90年代早期,当时C ++开发人员很少而且很少。在这之间,我找到了一个项目前端的工作。负责该项目的经理带来了她的伙伴作为合同程序员来做后端。当时,我对C ++或OOP一无所知。尽管我们使用的UI包不能用C ++,但他仍坚持使用它。后来,当程序员和经理都早已离开时,发现了一些错误;我很容易在我的代码中修复它们,但是做不了多少但是对另一个人的C ++代码中的错误耸了耸肩。当时的管理层没有对我进行培训,而是向我展示了大门。

答案 40 :(得分:0)

作为一名java网络开发人员,2010年加入Adobe Flex的潮流现在似乎是一件愚蠢的事情。 (我希望Flash能快点死掉!)这种体验让我在接近新技术时会更加谨慎和周到,但有时候对新事物做出真正评价的唯一方法就是双脚跳进去并且真的尝试一下。

答案 41 :(得分:0)

<强> WinDev

虽然我很幸运没有用这个烧手,但这款产品在法国(它的原产国)非常受欢迎,我认为它应该得到它的答案,以便其他人不会燃烧他们的手(和他们的钱包)遭受了这场灾难。

  • 它有自己的语言&#34; W-Language&#34;这是默认的法语,但也有英文和中文版本......我不知道,对我来说,拥有多种版本的编程语言对我来说并不是一个好主意。

  • 关于每年,他们发布了IDE的新版本,并修复了IDE和语言的错误,当然它是付费升级但是他们总是将错误修复作为新功能宣传,所以他们可以提供&#34; 919新功能&#34;在他们的广告上。

  • 文档很差 - 我没有购买他们的软件,所以我可能没有随附的任何手册 - 但我尝试搜索网页(为了好奇)并且没有找到太多的代码样本,更不用说教程了。我想英文文档会更难找到。

  • 他们的广告和营销很奇怪且性别歧视... see for yourself(不完全是NSFW但如果有人看着你的屏幕,可能仍然很尴尬,请自行承担风险)。

    < / LI>
  • 是否有论坛帖子谈论他们的产品(特别是如果他们应该购买它),突然有一些具有20年经验的程序员#34;到达并发布一条长信息产品如何改变了他们的生活,使他们的工作效率提高等等......有趣的是,这些&#34;程序员&#34;在论坛上有任何历史记录...正如您可能已经猜到的那样,该公司的广告/营销团队泡沫论坛。

  • 至于他们自己的论坛,他们会审查所有负面评论/意见。

  • 他们还有一个名为Webdev的姐妹产品,它允许您使用相同的W语言创建网站和Web应用程序;这是用它创建的网站的example。查看页面的来源会让你的眼睛流血;当然,以上所有内容也适用于此产品。