有时感觉技术选型就像个伪命题,胜出的技术占据绝对的主流,就像 java 领域中 ejb 被 ssh/ssi 框架取代。 大部分项目使用近似的模式搭建,选型在工程中变得似乎可有可无。 时间上胜出的开源技术帮助开发者在客观上做出了选择,我们先了解下影响选型的客观因素。
客观因素
客观因素包括如下:
1. 广泛性
我们都倾向于选择更广泛应用的开源技术以规避未知性风险。
2. 质量
质量我们会参照广泛性作一个侧面证明,使用更广泛可能质量更有保障,不过这对开源技术的新生儿就显得有些不公平了。
3. 文档
完备并及时更新的文档。想想 sourceforge.net 上如今已是代码的坟墓,没有文档的代码生命周期通常都不长。
4. 社区
活跃的社区,让人感觉更安心。出了问题搞不定总还有人可问,对吧?
主观因素
主观因素总结下就一条:技术与团队的适配度。
技术是死的,人是活的,团队的技术背景与驾驭能力则十分关键,否则再好的技术也可能被用成悲剧。
理想的选择
通常,同时具备了上述`客观因素`和`主观因素`考虑的因子,并符合工程需求的开源技术已经所剩不多,按此选择基本不会是太错误的选择。 但这是否是最理想的选择,其实很难说。这就像面试人一样,不管面试过多少人作出了多少次判断和选择,都无法保证这是你想要的理想人选。 出类拔萃的候选人会让你快速而有信心的做出选择,这就是理想的选择,虽不能保证就是理想人选,但成功的信心和概率要高很多。 而平庸的候选人会让你面临纠结的选择,充满怀疑,感觉可能行也可能不行。 我们通过试用人来验证选择,其实同样的道理,我们也是在通过试用技术来验证选择,都存在一样的选择成本和风险。
因此,理想的技术选择就是选择那些能够让你快速而有信心作出判断的技术产品。 注意,我在技术后面加了`产品`二字来强调:技术如果没有赋予产品的灵魂,可能很难达到理想的选择的层次。 关于这块目前想的还不是很清楚,也许以后再另写文章来谈谈`技术产品`。