×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

战无不胜的 80/20 定律 - 面试概率论的危害性 (4)

本文发表在 rolia.net 枫下论坛学计算机的都知道一个定律,那就是 80/20 定律: 一个程序的运行,80% 的时间会花在很少的一部分代码上,这部分代码只占全部代码量的 20%。

推广到大千世界,它的意思是说: 20% 的投入导致 80% 的产出。也就是说,会做的做两天就能考80分,不会做的做八天也只能考20分。

俺上高中的时候,是年级里最不用功的几个人之一,可是成绩却是年级的第一名。当时俺还沾沾自喜,现在想起来没准是 80/20 定律在作怪:俺成绩好,是因为俺用功用对了地方;好多同学整天趴在书本上成绩却不行,可能是他们的时间花错了地方。

跟网友讨论,俺说:知道什么重要,什么不重要,才是最重要的。网友问:那你说什么是最重要的?俺当时灵机一动,答曰:道理重要,操作不重要。现在想起来还真有道理。任何一个东西,道理肯定不到 20%,剩下的就是操作了。

当年 Java 刚出来,俺要用一个东西叫 RMI。俺写了一篇文章,也就一页纸。依俺看来,做 RMI,这一页纸足矣。后来俺一时糊涂,还买了一本专门讲 RMI 的书,竟然有 200 多页。跟俺的一页纸相比,这个是 200 / 1, 可见 80 / 20 是有道理的。

有一种说法,叫书越读越薄。其实这个过程也就是抓住 20% 而舍弃 80% 的过程。无论是学习还是工作,这种提纲挈领的能力都至关重要。

写到这里,俺突然发现,这个 80 / 20 定律,好像有两种情况。第一种是框架和细节。框架是 20%,细节是 80%。俺上面的例子好像都属于这种情况。

还有一种情况俺也说不好,但是俺觉得更重要。这种情况就是很小的一个东西,却能决定生死。这个小东西,毫无疑问是属于那个 20% 了。

当年老婆找第一份工作,一个函数名起了决定性作用,这个函数叫 invokeLater()。据面试她的人说,竟然有很多人不知道这个函数。这个函数是系统里最重要的概念之一,你不懂,面试就不会通过。这个 invokeLater(),才两个词,其重要性却能决定一个人面试的生死。

说到生死,大家有没有想过什么样的人最容易被 fire 掉?俺觉得是犯过大错误的人。有一次公司裁人,一个很能干的小伙被裁了,另外一个不能干的却没事。有人说,这是因为那个能干的小伙出过一次 production 事故。前天俺们开会,老板千叮咛万嘱咐,要 robust,要 robust,因为不 robust,就可能出 production 事故。

死容易,其实生也容易。码工有一个流派,叫 extreme programming。这个流派有一个名言叫 do the least thing that could possibly work。记得俺自己炒股的程序,从无到有,连 API 都要学,第一个版本也只花了一个晚上的时间。这个就是 least thing that could possibly work。后来俺在这个程序上又花了成千上万个小时,虽然功能强了,表面更漂亮了,但是不可否认,俺的第一版本就已经是一个完整的生命了。

每当有网友抱怨,说是工作太累,压力太大,俺就想,这些网友是不是不懂 extreme programming 的这个道理呢?least thing that possibly work,应该占不到全部工作量的 20%。如果先把这个 20% 做完了,然后再一点一点地加,加到 80% 的工作量就不干了,岂不是就不累了?

综上所述,生容易,那就是做东西要 work。不死也容易,那就是不要出事故。

有网友问,J2EE 什么重要?做码工什么重要?码工面试有没有那种生与死的问题?

俺有一个体会,不知道大家有没有同感。俺发现,码工在一个地方安顿下来以后,技术也会了,环境也熟悉了,其实日常的工作大部分都是分析问题解决问题。这些事情,在本质上跟技术没有多大关系,跟 business 也没有多大关系。把这些工作交给两千年前的孔子孟子或者讲师的偶像苏格拉底,俺相信他们一样能做好。

前不久要解决一个 Spring 的 bug,研究了一下 Spring 的代码,俺也有这种感触。Spring 的代码,其实也不是什么三头六臂,绝大多数也是 if-then-else,连俺这种土人都能看懂。不光能看懂,而且能看出他们的问题。比如这个 bug,俺觉得原因是他们在一个函数里做了不该做的事情,结果函数复杂了,运行起来更花时间了,而且还对函数的上游下游强加了不合理的要求。

这个道理,俺如果说给孔老夫子孟老夫子听,俺相信他们一样能懂。如果他们写这个函数,他们肯定不会犯这个错误。

回到前面的问题:码工什么最重要?俺觉得,知道什么地方该做什么事情最重要。Spring 的这个同学,就是在这个地方做了不该做的事情,而且他自己还不知道,跟他说了他还不服气。

推而广之,俺觉得码工最重要的问题是:什么是好程序,怎么写好程序?俺觉得这个不光是能让你进入 20% 强的问题,它甚至是码工面试能决定生死的问题。俺觉得,如果你对这个问题真是深有体会,真的能吹出来,吹的令人信服,你的面试肯定会成功。更多精彩文章及讨论,请光临枫下论坛 rolia.net
Sign in and Reply
Modify
Report

Replies, comments and Discussions:

  • 工作学习 / 事业与工作 / 战无不胜的 80/20 定律 - 面试概率论的危害性 (4)
    • 有道理!上帝七天创造世界,其余时间大家都是在维护。
      • DEISM,你说的是自然神的观点吧?基本是英国,苏格兰流派的很多伟人接受的哲学思想,,,后面有泛神论,比自然神论更接近唯物主义,,,,
    • 类似的推理。北美这个社会,其实20%是一些不可替代的,不可缺少的核心东西,,,比如核心的价值观,媒体法律政治,核心的领导层,决定阶级,,,,任何社会都是20%的人属于决策性的层次,,,无论是专制,还是宪政,都是精英统治....
      本文发表在 rolia.net 枫下论坛北美的社会中,80%的东西是可以替代的,,,,,,,类似公司,任何公司,80%的职位可以被替代,,,,

      加拿大如果把说普通话的中国移民强制驱逐,,那么,加拿大的社会不会有太大改变,,,因为这个社会中的80%是可以被替代的,类似公司前台,,今天辞职,明天就可以找到另外一个前台,,,,

      更何况,印度人可以快速弥补中国人的职位


      我这个比喻用的不太贴切,可能会让很多中国移民伤心,,但是,仅仅是假设而已,,我也可以假设,,如果加拿大的印度人都被强制驱逐,,,,(这种驱逐在历史也发生过,,比如排华法案,,最近的封锁伊朗的银行)



      遗憾的是,,中国大陆移民,基本绝大多数在最底层的20%的这个角色,,,,,不是厨师,就是工程师...不是和厨房,超市打交道,就是和数字打交道....最好的,顶尖的精英也基本在数学,算法等层次游荡,,,

      印度人中的相当比例的精英可以在中间层游荡,50%--70%左右有一些地位,,,,,,白人,犹太人的精英等在70%-100%这个层次......

      20%-80%,,,这个就是心痛的社会统计学...

      比如,红卫兵可以在JAVA算法,计算机行业做到顶尖!!这点我深信不疑!!!!估计多大的计算机教授的计算机应用能力也不如红卫兵!!!!红卫兵可以算是ROLIA的一流码工,这个我很相信....

      但是,一旦到了北美的人文领域,,比如白求恩高中开一个高中生辩论会,,,看一个政治军事背景的电影,,估计红卫兵的人文能力基本连16-18岁的高中生都不如了,,,因为不知道辩论会,政治军事电影的历史背景和文化底蕴.....一旦电影里,辩论会里开始深入引用希腊和罗马到历史典故,红卫兵就听不懂了,.....更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 好文章!深有同感。学习了。
    • 大多数时候合同工做完了20%,终于摸着石头过了河。剩下的80%就留给正式工,做恶梦了
    • 彩票是1/20,000,000
    • 有道理。不过我保留自己的一些观点,比如我认为两千年前的孔子孟子或者讲师的偶像苏格拉底能胜任你的工作的理论依据不足。