我一直在思考这个问题。当您计划新项目/维护组织中的现有项目时,您如何选择一种技术(我不是在谈论 Java、.Net 和 PHP)。
选择最新技术的论据
- 它可能会克服现有技术的一些限制(Think No SQL vs RDBMS 在可扩展性方面)。有时最新的技术是向后兼容的,只有在不破坏旧功能的情况下才能获得新功能
- 它将提供更好的用户体验(可能是用于视频的 HTML 5,只是一个想法)
- 将减少开发时间/成本并使代码库的维护相对容易
选择现场测试技术/反对选择前沿技术的论据
- 它没有经受住时间的考验。可能会出现无法预料的问题。复杂的解决方案可能会在维护阶段导致更多问题,并且应用程序可能会成为白象
- 标准可能还没有到位。标准可能会发生变化,并且可能需要大量返工才能使项目符合标准。选择经过现场测试的技术将节省这些努力
- 组织可能不支持新技术。支持新的(或就此而言不同的技术)将需要额外的资源
- 使用尖端技术可能很难获得合格的资源
从开发人员的角度来看,我认为没有理由不使用一些新技术(在您的业余时间),但他/她可能仅限于开源/免费软件/开发人员版本
从组织的角度来看,它看起来像是一把双刃剑。在“经过现场测试”的技术中坐得太久,好人可能会离开(更不用说总会有人喜欢熟悉的技术而拒绝更新他们的知识)。尝试一种非常规的方法,您可能会超出预算/时间,更不用说不可预见的风险
TL;博士
底线。您何时认为一项技术足够成熟,可以被组织采用?