在职场上难免需要和别人辩论,特别是需要就双方各自的技术方案哪个更好来辩论的场合,很容易就演变成脸红脖子粗的吵架。
我个人不是很喜欢通过辩论来争出好坏来。因为:
第一,辩论的输赢有时候并不能说明问题。有些老板认为技术问题么辩论一下总归能分出对错好坏,寄希望于辩论的输赢能够代表方案的好坏,你能把别人说的哑口无言了那么肯定说明你的方案就是更好的了。但其实要把别人说的哑口无言非常容易,只需要针对别人提出的高阶概念提出更低级的问题就可以了,比如别人说这里用这个设计模式怎么样弄一下就可以实现,那么你就可以问请你解释一下这个设计模式为什么用在这里就可以work?因为别人的这个设计模式和其效用是他早就记在脑子里的一个高阶概念,但你的问题是希望他能用更低阶的概念去解释这个高阶的概念,本来别人脑子里已经记好的一个高阶概念其实是拿来就用的,谁又会去记住怎么证明这个高阶概念,想想你们高考的时候证明数学题是不是定理拿过来就用,有谁又能从头丝毫不差的全部推出来,就是同样的道理。这样对方很可能就对你的问题哑口无言,即便对方是对的。然后你可以说既然连解释都没法解释清楚那么你为什么又这么肯定这个设计模式用在这里就可以work了?完胜是不是。老板然后默默的在心里给你的错误方案点了个赞。劣币就是这样驱逐良币的。
第二,上一篇我说过了编码这个东西可以有好多种技术方案,有时候其实你的也可以,他的也可以,争来争去,最后都会陷入到细枝末节上,然而这些细枝末节往往是在当前的条件下不可知的。比如双方吵到最后,一个说我这里使用一个class隔离一层,另一个说我用两个class隔离,那到底一个还是两个更好,可能还得上线了以后看到用户的使用pattern才能知道。所以就目前来讲其实都可以,关键是这些东西对整个项目的大局是毫无影响的,所以辩论这些东西毫无意义。
那么回过头来,我们该怎么正确的使用辩论呢,可以参考正式的辩论赛的评审流程。我觉得首先你需要比参加辩论的人更厉害的人来做最后的判断,最好像选秀节目一样有三人或以上来决断,那么这样的话上面提到的用低阶问题打高阶概念以及纠缠细枝末节等就没用了,因为这么搞的话会被懂行的人认为很蠢。如果找不到更厉害的人,那么就得集体投票,大家都是dev,大家选嘛。
最后,我小时候看电视辩论,觉得好牛逼唇枪舌剑,然后如果某方获胜了,那么我就会认为获胜方的观点是正确的并且坚信不疑。我想这就是我们为什么会by default认为胜利的一方的观点是正确的,虽然这种by default是错误的。
后来我仔细想了辩论比赛的题目,你会发现都是一些剥去了适用条件的伪命题。因为只有这样才能辩的起来。如果一个东西缺少必要的形容词去描述它的时候,它就会处于一个无法准确定义的模糊状态,给它不同的外延,它就会体现出不同甚至截然相反的意义,全看你怎么给外延,也就是怎么说,这就是辩论的过程。
所以我现在并不对辩论比赛感冒,像奇葩说这种对现实毫无指导意义,都是娱乐,看看可以,切勿当真。