代码之家  ›  专栏  ›  技术社区  ›  ram

出血边缘与现场测试技术。你将如何平衡

  •  4
  • ram  · 技术社区  · 14 年前

    我已经考虑了一段时间了。当你正在计划一个新的项目/维护一个组织中现有的项目时,你如何选择一个技术(而不是谈论Java VS.NETVS PHP)。

    选择最新技术的理由

    1. 它可能会克服现有技术的一些限制(在可伸缩性方面不要考虑SQL和RDBMS)。有时,最新的技术是向后兼容的,只有在不破坏旧功能的情况下获得新功能
    2. 它将提供更好的用户体验(视频可能是HTML5,只是一个想法)
    3. 将减少开发时间/成本并使代码库的维护相对容易

    选择现场测试技术/反对选择前沿技术的论据

    1. 它经受不住时间的考验。可能会有不可预见的问题。复杂的解决方案可能会在维护阶段导致更多的问题,应用程序可能成为 white elephant
    2. 标准可能还没有到位。标准可能会改变,为了使项目符合标准,可能需要进行大量的修改。
    3. 该组织可能不支持这项新技术。支持一项新技术(或另一项技术)需要额外的资源
    4. 使用尖端技术很难获得合格的资源

    从开发人员的角度来看,我看不出有什么理由不去沾染某些新技术(在您的业余时间),但他/她可能仅限于开源/免费软件/开发人员版本。

    从AM组织的角度来看,它看起来像一把双刃剑。在“实地测试”技术中坐得太久,优秀的人可能会离开(更不用说,总会有人喜欢熟悉的技术,拒绝更新他们的知识)。尝试一种非常规的方法,你会冒超出预算/时间的风险,更别提不可预见的风险。

    DR

    底线。你认为什么时候一项技术足够成熟,可以被一个组织采用?

    6 回复  |  直到 14 年前
        1
  •  5
  •   MattS    14 年前

    最有可能的情况是你和一个团队合作,这也应该考虑到。测试/评估技术成熟度的一些方法:

    1. 你的团队和管理层是否接受使用新技术?这可能是你最大的障碍。如果你觉得他们不接受,你可以尝试大型的正式演讲来说服他们…或者去试试看(见下文)。

    2. 为人们遇到的问题做些搜索。如果你找不到太多,这就是你遇到问题时会遇到的问题

    3. 找到一些风险很低的新的小项目(例如你或几个人会使用的项目),以skunkworks的方式应用新技术,看看它的效果如何。

    4. 试着找到最成熟的不成熟的。例如,如果您考虑的是NoSQL类型的数据存储。与几十年来一直存在的RDBMS(如Oracle)相比,所有NoSQL都是不成熟的,因此,请看一看最成熟的解决方案,这些解决方案有专业的或通过支持组提供支持的组织。

    5. 最容易启动的项目是重新编写现有的软件。你已经有了自己的要求:让它像 那个 . 只需选择一小部分软件来重新编写新技术,最好是通过单元/负载测试来测试它的性能。我并不主张重新编写一个完整的应用程序来证明它,而是一个小的可测量的块。

        2
  •  2
  •   Jim C    14 年前

    一些经验法则。

    一次只能使用一种“新”技术。你用的新东西越多,出现严重问题的可能性就越大。

    确保使用它有好处。如果新技术不能给你一些优势,你为什么要使用它?

    计划学习曲线。新技术的某些方面你不知道。你和你的团队,必须花更多的时间去学习他们,然后你认为你会。

    如果可能的话,先在一个不那么重要的小项目上尝试新技术。你们公司的会计制度不是最好的实验场所。

    有后备计划。新技术并不总是值得的。知道你什么时候在“棺材角落”了,现在是时候救出来了。

        3
  •  1
  •   Jason    14 年前

    “现场测试”和“过时”之间有区别,开发人员(包括我自己)通常更喜欢前沿的东西。在某种程度上,你必须让你的开发人员对他们的工作感到高兴和感兴趣。

    但我从未有过客户对现场测试技术不满意。他们通常不知道或不关心用于生产产品的技术。他们的首要任务是如何在日常与IT的交互中工作。

    当开始一个新项目时,在评估我是否应该移动到一个新的平台时,会想到两个问题:

    1)去新平台有什么好处?如果它能显著缩短开发时间或显著提高用户的性能,我将考虑采用半出血边缘技术。

    2)与新平台相关的风险有哪些。有没有可能我会遇到一些在新平台中还没有完全解决的场景?对这个新平台的支持可能会失败,而我会留下来支持一个不受欢迎的环境吗?如果我在项目的关键时刻遇到困难,是否有合适的支持渠道可以使用?

    像所有事情一样,这是一个成本/收益分析。一般来说,虽然我一直在学习和培训新技术,但我不会使用一种至少6-12个月没有被大量开发人员广泛采用的技术(环境、库、服务器平台等)为客户构建什么。

        4
  •  1
  •   Stephan Eggermont    14 年前

    这取决于上下文。每个组织都必须做出自己的决定。关于这个话题的经典文献是 Crossing the Chasm 作者:杰弗里·A·摩尔。

        5
  •  0
  •   thomasfedb    14 年前

    如果开发产品的公司/社区以良好的产品而闻名,那么我很高兴对他们的新产品下一个安全的赌注。

    例如,我很乐意在Rails3或Ruby1.9上开发,因为我确信它们在最终确定时会很好。

    然而,我不会在Supernewlang中写太多代码,直到我确信他们有一个伟大的、支持良好的产品,或者他们有一个我无法缺少的特性。

    我会得到最值得信赖的产品,这符合我所有的需要。

        6
  •  0
  •   ZXX    14 年前
    1. 你只需要问自己一个问题…我觉得幸运吗?
    2. 钱在哪里?
      • 即使科技X是一个大失败,你也能以足够快的速度大赚一笔吗?
    3. 如果不是,新技术是否能长期带来更高的性能?
      • 与64位CPU、Shader Model 4、重型多线程类似
    4. 你看到很多意识形态的鼓吹声围绕着它吗
      • “范式转换”Blurbs等-等待2-8年,直到它冷却并得到替换:—)
    5. 它体积大,需要2倍的东西才能运行吗?
      • 先让你的敌人付钱吧——)
    6. 你能得到一些基础教育和一个不冒任何风险的试验项目吗?
      • 最好试试看,除非它看起来像一个400磅重的女士不唱歌:—)
    7. 这个问题没有一般性的答案-请回答1
    推荐文章