我猜可能是因为,有了太多太多的最佳实践了吧
我曾经有个面试,问到了过往项目为什么使用某框架,我给出的答案是“因为那是当时我们团队的leader使用最熟练的框架。他有能力解决这个框架的所有问题,然而事实上他也做到了”。
他期待一个合理的技术选型的原因。然后面试官对这个回答表示不屑。
但其实这就是一个很真实的回答。很多时候,为什么使用xxx?为什么在A和B之中选择了B?这种问题其实没那么复杂,A和B使用起来差距其实没那么大。就是因为自己用的最多,最熟练仅此而已。
我相信,作为开发人员的你,有过这样一个场景:今天写了一个xxx功能,结果到另一个项目,发现也需要xxx功能,你就把之前写的代码复制过去。然后过两天,又双有一个项目用到,只是改了小部分业务,你又复制过去,改了改,拿去用了。然后又过了很久,又双叒有一个项目,用到了这个,你又复制过去了。然后,你觉得,这个功能,你会经常用到。所以进行了业务抽象,和封装。以后直接引用,然后少量修改配置文件就可以实现这个功能。
现在,你封装的这个功能就是你的最佳实践。我有理由相信阿里巴巴,有太多太多太多这样的最佳实践。换Go可以吗?当然是可以的,甚至换任何语言都是可以的。但是,在Java这个领域,自己内部有足够多的技术专家,自己的代码库里有足够多的最佳实践。技术团队有自信可以解决100% Java技术栈带来的挑战。所以java学习现在开始
好,现在你是老板,你愿意让你的团队用哪一种语言,或者说技术栈呢?
而且说实话,现在的后端,大方向基本上是一致的。已经很少有说是,个别特性,A语言有B语言没有。A框架能实现,B框架实现不了。根本上,决定用哪一个,根本还是靠团队成员的技术栈情况。团队里100个Java工程师,你要让他们全都转型去写Go,那岂不是疯了?我朋友的游戏公司,多年前有个技术合伙人,是从某大厂挖出来的主程序,特别喜欢研究各种语言,并应用到各个项目中。
常玩手游的朋友知道,很多游戏一旦盈利,就会保留玩法,换一套美术素材,直接上线再割一波韭菜。俗称换皮。换皮项目一般代码改动都不大,短平快,趁着这类游戏火的时候能捞点算点。
这位技术大佬操作就很迷了。第一个版本用c++语言。第二个版本换了套皮,大佬要求开发组改用lua,可以热更新嘛,所以这个要求也合理。第三个版本又换了皮,这次大佬要求用js。程序们都没有意见,花1到2周带薪学习嘛,这有什么不好,但是制作人和主策划绷不住了,这时间成本花在这种地方还得了?但是人家是联创,是老板,自己是打工的,也不好说什么。第四个版本,好家伙,前端不动了,开始折腾后端,c语言改java,整个框架都要变,后端程序也表示有压力......这次我那个朋友坐不住了,找大佬谈,被大佬说得云里雾里,最后没办法,妥协了。
由于稳定性问题,后两个项目亏损,美术成本都没回来。后来我朋友和大佬意见分歧很多,加上游戏行业寒冬已至,公司也不做了,一别两宽各自欢喜。
不说游戏公司了,在大多数互联网公司,技术是要为业务服务的。没有业务需求和明确技术目的,反复更迭语言没有意义。对于用户,不会因为你换了一种开发语言就有全新的体验;对于公司,只会增加不稳定性、开发成本、商业风险。
所以阿里这么做可以说一点毛病都没有。