我一直在思考这个问题.当您计划新项目/维护组织中的现有项目时,您如何选择技术(我不是在谈论Java vs .Net与PHP).
挑选最新技术的论据
它可能会克服现有技术的一些局限性(在可扩展性方面,Think No SQL vs RDBMS).有时,最新技术是向后兼容的,只有在不破坏旧功能的情况下才能获得新功能
它将提供更好的用户体验(可能是视频的HTML 5,只是一个想法)
将缩短开发时间/成本并使代码库的维护相对容易
采摘现场测试技术/挑选尖端技术的争论
它没有经得起时间的考验.可能存在无法预料的问题.复杂的解决方案可能会在维护阶段导致更多问题,应用程序可能会变成白象
标准可能尚未到位.标准可能会发生变化,可能需要进行大量的返工才能使项目符合标准.选择现场测试技术将节省这些工作
该组织可能不支持新技术.支持新的(或者不同的技术)将需要额外的资源
使用尖端技术可能很难获得合格的资源
从开发人员的角度来看,我没有理由不用一些新技术(在业余时间)弄脏手,但他/她可能仅限于开源/免费软件/开发人员版本
从组织的角度来看,它看起来像是一把双刃剑.坐在"现场测试"技术中的时间过长,优秀的人可能会离开(更不用说总会有人喜欢熟悉技术的人拒绝更新他们的知识).尝试一种非传统的方法,你冒着超出预算/时间的风险,更不用说不可预见的风险了
TL; DR
底线.您何时认为技术足够成熟以便组织可以采用?
很可能你和一群人一起工作,这也应该考虑在内.测试/评估技术成熟度的一些方法:
您的团队和管理层是否愿意接受使用新技术?这可能是你最大的障碍.如果你觉得他们不接受,你可以尝试大型的正式演示来说服他们......或者只是去尝试一下(见下文).
做一些谷歌搜索人们对它的问题.如果你找不到多少,那么这就是你遇到问题时会遇到的问题
找一些风险很低的小型项目(例如你或几个人会使用的东西),以臭鼬工艺方式应用新技术,看看它是如何实现的.
尽量找到最成熟的未成熟者.例如,如果您正在考虑使用NoSQL类型的数据存储.当你与几十年来一直存在的像Oracle这样的RDBMS进行比较时,所有NoSQL的东西都是不成熟的,所以看看那些支持组织的最成熟的解决方案,无论是专业还是通过支持组.
最简单的项目就是重新编写现有的软件.你已经拥有你的要求:使它就像那个.只需选择一小部分软件来重新编写新技术,最好是通过单元/负载测试来确定它是如何站立的.我并不是主张重新编写整个应用程序来证明它,而是一个可测量的小块.