前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >优劣重要,还是标准重要No.186

优劣重要,还是标准重要No.186

作者头像
大蕉
发布2020-04-21 16:27:26
4720
发布2020-04-21 16:27:26
举报
文章被收录于专栏:一名叫大蕉的程序员

社区还是公司里,经常会有人讨论,A实践比B实践好。比如下面这样的讨论。

A:我用 Go+Go-xorm+Grpc+Gorouting 搭建框架,开发效率非常高,真的超好我跟你讲。balabala

B:我用 Spring

A:我跟你讲,SVN 的代码一致性最好,所有人的代码都是一样的,真的超好我跟你讲。balabala

B:我用 Git

A:我跟你讲,我用 JMI 协议和Dubbo协议,用得超舒服我跟你讲。balabala

B:我用 Grpc

于是就引发了一个问题,究竟某一些技术在某一些场景某些团队里面,孰优孰劣,经常是争得死去活来。孰优孰劣,真的那么重要吗?在一个集体里面,永远使用最佳的实践,与大家尽量使用一个统一但是可能没那么好的实践,哪个更有利于团队?

我们都知道技术栈统一的重要性,如果一些人总是急着自己造轮子,每个人都搞出一套自以为是最佳实践的套路,这样对于团队来说是好是坏?我觉得某种程度上来说,是一件好事,可以让团队里的人提高自己的见识,知道在自己的做法之外其实还有其他做法,也在实现着一样的目标。但是如果团队的其他人并不认可这种新的做法,那又怎么办呢?

我的答案是,在大规模协作里,统一比优劣重要。

我们都知道 HTTP 协议存在着大量的问题,比如显而易见的安全问题。

通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所以有可能已遭篡改

如果我创造了一种新协议,叫 dajiao.HTTP 协议,在 http 的基础上解决了上面的问题,可以说我的协议比 http 更加优秀,全世界人民,都应该使用这个协议吗?显然是不可能的。你还觉得优劣比统一重要吗?

众所周知,HTTP 协议被诟病的还有 head 很重的问题,如果在超大规模集群里,我需要压缩每个请求的量,我自己创造了一种 mini.dajiao.http,整个请求的网络传输量只有 HTTP 的 10%,可以说我的协议比 HTTP 更加优秀,大家都用我这个协议吗?显然,在一定程度的团队内是可行的,但是要推广到全世界,抱歉,你还得付出比你预想要更加巨大的代价。

还是回到 mini.dajiao.http 的问题,在一定程度的团队内,在工具不完善的情况下,所有人跟你的系统交互,都要理解你第一个字节代表什么,第二个字节代表什么,要背诵下来,每次对接都要小心翼翼,对接一个接口可能需要花掉2个工程师10天的工作。在这个场景下,你还觉得你的协议比较好使吗?

我理解每一种方案都有它适应的地方,单纯讨论孰优孰劣,意义其实仅仅在于学术讨论阶段。到了大规模协作实战层面,谁能把一种方案做到大规模统一,就算它比其他方案要差一点点,必然是做了某些 trade-off,只要是统一的,就是好的。

因为毕竟,只要统一了,就可以投入更多更多的精力,对它进行重点优化了,会出现很多的周边工具,出现很多的配套设施,出现更加完善的文档,出现更加完善的兼容性设计。到最后,未必比你以为的好方案,表现更差。

一个和尚挑水喝,两个和尚抬水喝,三个和尚没水喝。扁担的设计就是一个人一组效率最高,标准做法就是一个人挑两桶水,非要来个人说,两个人挑那就是 1/2,一百个人挑每个人就是 1/100,更省力了,必然更好。

你品,你细品。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一名叫大蕉的程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档