在昨天的读书会上我分享了我是如何当上leader以及当上leader之后的体会。然后今天Sophie总结了我的发言,大家对此有些反馈。我根据大家的反馈写了这篇文章,主要针对几点:

  1. 大家如何当上leader?
  2. 关于那六千多个bug的系统。
  3. 关于其他人也来抢leader这个position.

在我简单描述提前一年布局当上leader的经过之后。可能大家会觉得我so lucky, 没有什么借鉴意义.

所以我在这里剥离出运气的成分, 用科学(数学)的角度来进行剖析, 希望对大家会有帮助.

数学中有一门学科叫概率论与数理统计, 里面有个贝叶斯概率(理论\方法).

贝叶斯概率承认运气的存在, 认为这个世界上没有100%的概率,所有人想要做成事,都需要一点点运气。

贝叶斯概率在承认运气的前提下, 通过科学的方法(数学)让你成功的概率能够接近100%。

贝叶斯(概率论与数理统计)是一门数学,我的运气大家不能复制,但是数学却是可以给大家复制的,毕竟数学最大的特点就是在我这里1+2=3,到了你那里1+2依旧是会等于3, 无论哪个国家哪个语言哪种性别, 数学都是通用和可复制的。

所以我认为它能够帮助到大家当上leader. 在后面我会介绍相关的一本书和一篇文章给大家.

第二点就是关于那六千多个bug还能得到客户认可的系统.

有些人会想, 几百个bug的系统都得不到客户的认可, 那六千多个bug的系统是如何得到客户认可的呢?

首先, 根据贝叶斯概率, 0 bug系统是不存在的,  系统只能够无限的接近0 bug, 但是永远不可能达到0 bug.

其次, 几千上万个bug的并且被大家认可的系统和产品不少, 比如windows, office都是, 我在2007年给微软提了一个outlook中文版的bug, 很多年了都还没有修复.

那么, 为什么windows和office存在几千上万个bug都能被大家认可, 而一些几百个bug的系统却不被认可呢?

答案是只要符合贝叶斯函数即可. 以下是书里的一段:

尽管你已是一个编程老手,但bug仍有可能在代码中存在。于是,在实现了一段特别难的算法之后,你决定先来一个简单的测试用例。这个用例通过了。接着你用了一个稍微复杂的测试用例。再次通过了。接下来更难的测试用例也通过了。这时,你开始觉得也许这段代码已经没有bug了。

如果你这样想,那么恭喜你:你已经在用贝叶斯的方式思考!简单地说,贝叶斯推断是通过新得到的证据不断地更新你的信念。贝叶斯推断很少会做出绝对的判断,但可以做出非常可信的判断。在上面的例子中,我们永远无法100%肯定我们的代码是无缺陷的,除非我们测试每一种可能出现的情形,这在实践中几乎不可能。但是,我们可以对代码进行大量的测试,如果每一次测试都通过了,我们更有把握觉得这段代码是没问题的。贝叶斯推断的工作方式就在这里:我们会随着新的证据不断更新之前的信念,但很少做出绝对的判断,除非所有其他的可能都被一一排除。

在代码测试的例子中,如果你问频率函数:“我的代码通过了所有测试,它现在没有bug了吗?”频率函数会给出“yes”的回答。但如果你问贝叶斯函数:“通常我的代码有bug,现在我的代码通过了所有测试,它是不是没有bug了?”贝叶斯函数会给出非常不同的回答,它会给出“yes”和“no”的概率,例如“‘yes’的概率是80%,‘no’的概率是20%。”

这和频率函数返回的结果是非常不同的。注意到贝叶斯函数还有一个额外的信息——“通常的我的代码有bug”,这个参数就是先验信念。把这个参数加进去,贝叶斯函数会将我们的先验概率纳入考虑范围。通常这个参数是可省的,但我们将会发现缺省它会产生什么样的结果。

更详细的信息大家可以看《贝叶斯方法:概率编程与贝叶斯推断》这本书.

结论:

一个系统如果是经过贝叶斯方法测试的, 即使它存在几千上万个bug, 这个系统依然可以得到客户的认可.

一个系统如果没有经过贝叶斯方法测试的, 几百个bug对于这个系统是相当严重的啦.

第三点就是关于其他人也来抢leader这个position.

首先当然是其他人意识到leader这个position有利益了, 有利可图大家才会来争.

然后就是其他人觉得和我能力差不了多少, 他们能抢到我这个位置.

这里就”其他人觉得和我能力差不了多少, 他们能抢到我这个位置.”进行数学分析吧.

假设其他人成功抢到leader这个position的概率是80%, 我成功抢到leader这个position的概率是95%.

那么是否他们只要再努力一下就可以提高这15%概率的差距, 从而抢到leader这个position呢?

他们认为是的, 所以他们才来抢. 然而这是一个错觉, 从数学的角度来看, 差距很大, 这里我贴一个例子, 让大家看一下差距有多大.

假如一件事情成功的概率是20%,是不是就意味着,我重复做这件事5次,就一定能成功呢?

很多人会这样想,但事实并不是这样。

如果我们把95%的概率定义为成功,那么这件20%成功概率的事,你需要重复做14次。

换句话说,你只要把这件20%成功概率的事,重复做14次,你就有95%的概率能做成。

计算过程我放在这里,对公式头疼的小朋友可以直接略过。

做一次失败的概率为:1-20%=80%=0.8

重复做n次至少有一次成功的概率是95%,就相当于重复做n次每一次都不成功的概率是5%,

重复做n次都不成功:80%^n=1-95%=5%=0.05

n=log(0.8,0.05)=13.42

所以重复做13.42次,你成功的概率能达到95%。

如果你要达到99%的成功概率,那么你需要重复做21次。

以上例子出自<刘润对谈吴军:每个人都一定要有数学思维 >

希望会对大家有帮助,不过我更加希望得到大家新的反馈从而令彼此都得到进步。

如何当上Leader和六千个bug的系统的更多相关文章

  1. 9. SOFAJRaft源码分析— Follower如何通过Snapshot快速追上Leader日志?

    前言 引入快照机制主要是为了解决两个问题: JRaft新节点加入后,如何快速追上最新的数据 Raft 节点出现故障重新启动后如何高效恢复到最新的数据 Snapshot 源码分析 生成 Raft 节点的 ...

  2. 为什么我会认为SAP是世界上最好用最牛逼的ERP系统,没有之一?

    为什么我认为SAP是世界上最好用最牛逼的ERP系统,没有之一?玩过QAD.Tiptop.用友等产品,深深觉得SAP是贵的有道理! 一套好的ERP系统,不仅能够最大程度承接适配企业的管理和业务流程,在技 ...

  3. Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  4. 谷歌修复了 FFmpeg 中上千个 bug

    谷歌在科技业界中几乎每天都会创造出新闻素材,它的触手涉及到了生活中的多个领域.最近谷歌将其Google +社交网络与邮件服务Gmail相结合.然而今天谷歌宣布他们修复了FFmpeg的上千个bug.   ...

  5. Android系统--输入系统(十六)APP跟输入系统建立联系_InputChannel和Connection

    Android系统--输入系统(十六)APP跟输入系统建立联系_InputChannel和Connection 0. 核心:socketpair机制 1. 回顾Dispatch处理过程: 1.1 放入 ...

  6. 线上centos6出现软死锁 kernel:BUG: soft lockup

    线上centos6出现软死锁 kernel:BUG: soft lockup 今天线上一台centos6机器用xshell一直连接不上,然后在xshell上显示 Message from syslog ...

  7. Lucene.net(4.8.0) 学习问题记录六:Lucene 的索引系统和搜索过程分析

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...

  8. 在ubuntu上搭建开发环境3---解决Y470一键系统重装之后恢复ubuntu引导启动的方法

    2015/08/18 将知识.常用的操作整理出来一定要完整,注意细节. 就像下面是再2015.04.27时候整理的,当时确实实验成功了,但是可能忘记记下具体的细节,尤其是3.4.5.6步骤中的关于盘符 ...

  9. 在ubuntu上搭建开发环境2---Win7、Ubuntu双系统正确删除Ubuntu

    这种删除ubuntu的方式就是针对本博客中搭建双系统的方式:http://www.cnblogs.com/xumenger/p/4459963.html 如果ubuntu不是以wubi方式安装的,那么 ...

随机推荐

  1. Eclipse导入SpringBoot项目pom.xml第一行报错Unknown error

    1.网上搜的都说是将SpringBoot2.1.5版本降级到SpringBoot2.1.4版本,感觉这治标不治本啊,以后想升级不是玩完了. 错误如下所示: 参考:https://ask.csdn.ne ...

  2. selenium 优化 提升性能

    结果: 用时:7.200437545776367s用时:5.909301519393921s headless用时:4.924464702606201s headless\phone用时:4.9358 ...

  3. HTML5新标签与特性---多媒体

    多媒体标签 embed:标签定义嵌入的内容 audio:播放音频 video:播放视频 多媒体 embed(会使用) embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.M ...

  4. 【转载】Gradle for Android 第六篇( 测试)

    由于现阶段Android开发趋于敏捷开发,再加上国内大大小小的互联网公司都在做app,导致很多这会是一个系列,所以如果你看完这篇文章,请看下列文章: 开发人员对单元测试没有基本的概念,但是本篇博文不会 ...

  5. USB通信协议深入理解

    0. 基本概念 一个[传输](控制.批量.中断.等时):由多个[事务]组成: 一个[事务](IN.OUT.SETUP):由一多个[Packet]组成. USB数据在[主机软件]与[USB设备特定的端点 ...

  6. dockerfile和资源限制(五)

    镜像生成途径 dockerfile 基于容器制作 什么是dockerfile dockerfile说白就是用来构建docker 镜像的源码,大家看到源码俩字不用惊慌,所为的dockerfile源码只是 ...

  7. 解决汉化pycharme之后设置打不开的问题

    首先进入安装pycharme目录下lib目录下,将汉化包移出去,只留下英文包 然后打开pycharme即可打开设置 在你改完设置之后,可以再将汉化包放进来 英文包:https://pan.baidu. ...

  8. 爬虫scrapy模块

    首先下载scrapy模块 这里有惊喜 https://www.cnblogs.com/bobo-zhang/p/10068997.html 创建一个scrapy文件 首先在终端找到一个文件夹 输入 s ...

  9. 二,java框架学习

    二,java框架学习 实体类的编写规则 实体类里面的属性是私有的 私有属性使用公开的set,get,方法操作 要求实体类有属性作为唯一值(一般使用id值) 实体类属性建议不使用基本数据类型,使用基本数 ...

  10. MongoDB图形化工具(三)

    一.安装 下载地址:https://www.mongodbmanager.com/download 注意:在下载的时候需要对应上自己安装的mongodb版本. 双击安装 选择“Full install ...