4

我一直在思考这个问题。当您计划新项目/维护组织中的现有项目时,您如何选择一种技术(我不是在谈论 Java、.Net 和 PHP)。

选择最新技术的论据

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

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

  1. 它没有经受住时间的考验。可能会出现无法预料的问题。复杂的解决方案可能会在维护阶段导致更多问题,并且应用程序可能会成为白象
  2. 标准可能还没有到位。标准可能会发生变化,并且可能需要大量返工才能使项目符合标准。选择经过现场测试的技术将节省这些努力
  3. 组织可能不支持新技术。支持新的(或就此而言不同的技术)将需要额外的资源
  4. 使用尖端技术可能很难获得合格的资源

从开发人员的角度来看,我认为没有理由不使用一些新技术(在您的业余时间),但他/她可能仅限于开源/免费软件/开发人员版本

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

TL;博士

底线。您何时认为一项技术足够成熟,可以被组织采用?

4

6 回答 6

5

您很可能与一群人一起工作,这也应该考虑在内。测试/评估技术成熟度的一些方法:

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

  2. 搜索一下人们遇到的问题。如果您找不到太多,那么这就是您遇到问题时会遇到的问题

  3. 找到一些风险非常低的新小项目(例如只有你或几个人会使用的东西),以臭鼬工厂的方式应用新技术,看看它是如何成功的。

  4. 努力寻找最成熟的不成熟。例如,如果您正在考虑 NoSQL 类型的数据存储。与已经存在了几十年的 Oracle 等 RDBMS 相比,所有 NoSQL 的东西都是不成熟的,所以看看最成熟的解决方案,这些解决方案有支持组织,无论是专业的还是通过支持小组的。

  5. 最容易开始的项目是重写现有的软件。你已经有了你的要求:让它就像那样。只需选择一小部分软件以使用新技术重新编写,最好是您可以通过单元/负载测试来锤击的东西,看看它是如何站起来的。我不主张重写整个应用程序来证明这一点,而是一个可测量的小块。

于 2010-06-29T20:52:43.857 回答
2

一些经验法则。

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

确保使用它有优势。如果那种很酷的新技术没有给你带来一些优势,你为什么要使用它?

规划学习曲线。新技术的某些方面你不知道。您和您的团队将不得不花更多的时间来了解它们,而不是您认为的。

如果可能的话,首先在一个不太重要的小项目上尝试新技术。您的公司会计系统不是试验的最佳场所。

有一个后备计划。新技术并不总是值得的。知道您何时处于“棺材角”,是时候出手了。

于 2010-08-09T14:56:00.943 回答
1

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

但我从未遇到过客户对经过现场测试的技术不满意。他们通常不知道或不关心用于生产产品的技术。他们的第一要务是它如何在他们与它的日常互动中发挥作用。

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

1) 我从新平台获得什么好处。如果它为我提供显着减少的开发时间或显着提高用户的性能,我将考虑采用半前沿技术。

2) 新平台有哪些风险。是否有可能我会遇到一些在新平台中没有完全解决的场景?对这个新平台的支持是否可能会失败,而我将不得不支持一个已弃用的环境?如果我在项目的关键时刻卡住了,是否有可用的支持渠道?

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

于 2010-08-11T22:19:15.243 回答
1

这取决于上下文。每个组织都必须做出自己的决定。关于这个主题的经典文献是Geoffrey A. Moore 的Crossing the Chasm

于 2010-08-14T22:17:23.717 回答
0
  1. 你只需要问自己一个问题……我觉得幸运吗?
  2. 钱在哪里?
    • 即使 tech X 失败了,你是否能够足够快地获利?
  3. 如果没有,新技术是否会长期带来更高的性能?
    • 像 64 位 CPU、Shader Model 4、重度多线程
  4. 你有没有看到很多围绕它的意识形态宣传
    • “范式转变”宣传等 - 等待 2-8 年,直到它冷却下来并被替换 :-)
  5. 它是否笨重并且需要 2 倍的东西才能运行?
    • 让你的敌人先付出代价:-)
  6. 你能在不冒险的情况下接受一些基础教育和一个试验项目吗?
    • 不妨试试,除非它看起来像一个不唱歌的 400 磅女士 :-)
  7. 此类问题没有一般性答案 - 请转至#1
于 2010-08-14T04:13:19.680 回答
0

如果开发该产品的公司/社区以优质产品而闻名,那么我很乐意对他们的新产品下注。

例如,我很乐意在 Rails 3 或 Ruby 1.9 上进行开发,因为我很确定它们在完成后会很好。

然而,我不会在 superNewLang 中编写太多代码,直到我确信他们有一个很棒的、支持良好的产品,或者他们有一个我不能没有的功能。

我会倾向于得到最值得信赖的产品,它适合我的所有需求。

于 2010-06-29T14:28:52.970 回答