选择有趣还是无趣的技术方案

与大概五年前不同的是,如今一些看似比较无聊的成熟技术方案开始重新变得被青睐。比如在互联网圈,越来越多团队开始回归到PHP,Python,MySQL和Postgres这些比较传统的技术栈上(曾经某个时候,这些也属于前沿有趣的技术方案)。这不是个坏现象,这开始说明选择技术方案从狂热变得务实成熟,同时也说明技术与实际业务的结合越来越紧密,人们对业务的关注更多,而不是追逐纯粹的技术热情。

选择较新的技术方案对公司来说是有成本的,这取决于公司发展的情况和业务。对于技术人员来说,较新的技术方案总是看起来比较有趣,而那些较老的技术方案则比较无聊。然而我们并不能以有趣或者无聊来决定技术方案,看起来无聊的技术方案,并不一定就是一个坏方案。比如MySQL,Python,Memcached,Cron,Squid等等这些,以今天来看,确实无趣,但仍然足够好。

无趣主要是因为缺乏新鲜感,但这也正是无趣的好处。无趣代表容易理解,无论是好的一面还是不好的一面。这似乎是人的认知天性,我们觉得无趣的都是我们熟知的人。或许这种追求趣味的冲动是鼓励人类探索未知的原动力,但应该提防它带来的风险。

选择流行的新技术,最大的风险是有太多的未知,而对于存在了十几年的无趣老技术,这块未知的部分要少的多。另一方面,在公司的技术栈中增加技术方案是有成本的,尤其是在已经有老项目存在的情况下。针对业务上的各种问题,往往不同的技术栈都能提供解决的方案和工具,这时的原则应该是用尽量少的技术栈去解决尽可能多的业务问题。除非在新技术方案确实有着核心的商业竞争力时,才考虑增加。

然而这不意味着我们总得遵循保守的策略,采用新技术有时候是必要的,只是需要认识到,这是一件对公司整体都会有影响的事情,需要适当的流程和沟通以规避风险。另外有一些时候,我们需要加入一些新技术方案来解决眼前紧急的问题,这种情况其实很好分辨,因为问题很明确,能提供快速低成本的解决方案范围也很少,在这样的情况下可以果断地做出决定。任何技术栈的组合方案都会有缺陷和比较难以适应解决的问题,在最初规划整体技术方案时将潜在的短板记录下来,能帮助更快速决策合适加入新技术。

所以整体的核心原则应该是,技术只是支持解决问题的工具,关注的重点应该是能否更好解决问题,而不是本身是否更有趣。