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

2024-05-15 08:18
文章标签 重要 标准 优劣 no.186

本文主要是介绍优劣重要,还是标准重要No.186,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

社区还是公司里,经常会有人讨论,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,更省力了,必然更好。

你品,你细品。

这篇关于优劣重要,还是标准重要No.186的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991294

相关文章

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

C 标准库 - `<float.h>`

C 标准库 - <float.h> 概述 <float.h> 是 C 标准库中的一个头文件,它定义了与浮点数类型相关的宏。这些宏提供了关于浮点数的属性信息,如精度、最小和最大值、以及舍入误差等。这个头文件对于需要精确控制浮点数行为的程序非常有用,尤其是在数值计算和科学计算领域。 主要宏 <float.h> 中定义了许多宏,下面列举了一些主要的宏: FLT_RADIX:定义了浮点数的基数。

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

研究生生涯中一些比较重要的网址

Mali GPU相关: 1.http://malideveloper.arm.com/resources/sdks/opengl-es-sdk-for-linux/ 2.http://malideveloper.arm.com/resources/tools/arm-development-studio-5/ 3.https://www.khronos.org/opengles/sdk/do

平时工作学习重要注意的问题

总体原则:抓住重点,条理清晰,可回溯,过程都清楚。 1 要有问题跟踪表,有什么问题,怎么解决的,解决方案。 2 要有常用操作的手册,比如怎么连sqlplus,一些常用的信息,保存好,备查。

标准IO与系统IO

概念区别 标准IO:(libc提供) fopen fread fwrite 系统IO:(linux系统提供) open read write 操作效率 因为内存与磁盘的执行效率不同 系统IO: 把数据从内存直接写到磁盘上 标准IO: 数据写到缓存,再刷写到磁盘上

matlab一些基本重要的指令

重点内容 运行MATLAB的帮助demo,在Command Window 输入 “demo”,或在Launch Pad 选项卡“demos” 任何时候都可以: 清除Command Window内容:clc 清除Figure Window(图形窗口) clf 清除workspace 变量内容: clear 注意:M脚本文件和输入指令中的变量都在workspace中,为避免变量冲突,一般在

通信工程学习:什么是AM标准调幅

AM标准调幅       AM标准调幅,即Amplitude Modulation(振幅调制),是一种在电子通信中广泛使用的调制方法,特别是在无线电载波传输信息方面。以下是关于AM标准调幅的详细解释: 一、AM标准调幅的定义与原理 AM标准调幅的定义:        AM调幅是通过改变载波信号的振幅(即信号强度或电压幅度),使其与信息信号(如音频、视频等)同步变化,从而实现信息的传

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340