代码改变世界

关于争论中的*专业*,老赵谈一下自己的看法

2009-04-30 22:01  Jeffrey Zhao  阅读(...)  评论(... 编辑 收藏

又到了一周一次的总结时间,经历了两周前的“Java语言风波”和“图书通病”,可以发现最容易引起大家关注的还是这样的讨论——嗯嗯,或者说是吵架。吵着吵着就会有各种“典型”的声音冒出来,使用各种形式从不同人口中反复出现,每次都看得老赵“心花怒放”,“欲仙欲死”。老赵觉得“争论”是有价值的,但是“我们的争论”至少有一半是没有太多营养价值的。实事求是地说,那篇Java文贴了4个地方,声音最大,但是收获最少的便是博客园(当然,如果贴去CSDN和cnbeta的话,情况自然就可能不一样了)。为什么会产生这个原因呢?老赵认为,关键还是在于“不专业”。

做什么事都需要专业,吵架也一样。吵架由于其性质特殊,肾上腺素一分泌,许多朋友就忍不住要冲上来*&#(*$一番。这时候,就能够看出“专业”与“不专业”的区别来了。因此,老赵也重新整理了一下过去一些争论中出现的“不专业”的地方,发表一些看法,也当做一个记录。如果有十分之一的朋友在以后的争论中能够想到这些内容,并有意识地维护社区的健康,那么老赵的文章也算体现出价值来了。一个社区是否健康,很大程度是看其中讨论的氛围如何,无论是一片和谐还是满目苍夷,都不能算作是健康的社区氛围。

事先要说明的是,在进行举例时势必会涉及到一些朋友的言论,希望那些朋友不要介意。

看清内容,围绕中心

首先,争论的关键一定要“确立”争论的中心,并且时刻围绕着这个中心进行争论。否则大家舞刀弄枪尘土飞扬,最后发现都在自说自话,岂不让人看笑话。在Java一文的留言中,有朋友的言论大意是“我不感兴趣,不想看你的文章,但是我想……”,然后就开始“振振有词”地批评起一些文章或评论的观点。在老赵的观点里,“在发表议论前要看清对方观点”是最基本的条件,现在这个最低准则被无情地“摧毁”时,老赵心里只有四个字:哭笑不得。同样令人哭笑不得的还有对观点的论证方式,其中最经典的一段莫过于:

  • A:Java平台虽好,但是Java语言实在是XXX。
  • B:Java语言不好吗?Java平台被用于XXXX…….NET不行,IronPython是抄袭Jython的,比Jython差远了。
  • A:IronPython是Jython的作者本想证明CLR不适合动态语言,结果发现CLR实现IronPython性能很高,于是投靠微软了,所以怎么能说IronPython不好。
  • B:IronPython好?有人用吗?要知道Google平台都是用CPython构建的。

以上对话的所有观点都是老赵从当时的文章或回复中得出的,只有归纳,毫无删改。B同志设法用“平台”来证明“语言”特性,再设法用CPython来证明Jython比IronPython要好,这样的论证方式怎能不让人“拍案叫绝”。

有人说“尊重”是争论的基本原则。关于这一点,其实老赵感觉倒可以不作强求。有时候一些“不尊重”只是一些讨论方式上的问题,如果能够围绕中心发表自己的观点,就算有人指着老赵鼻子骂笨蛋,其实也无不可——因为可能只是性格原因吧。不过只可惜,老赵仔细观察了几次较为热烈的“讨论”,发现能够做到“话糙理不糙”的人可谓凤毛麟角。许多弟兄在自己心中的观点受到冲击,或者遇到志同道合的看法时往往就会“失去理智”,一拥而上,X之而后快。因此,如果一个人能够在热血沸腾时还保留清晰的头脑,那么可以说,他的吵架技能已经比较专业了。

当然,“不尊重”可能会造成双方头脑发热,让讨论变成掐架,从这方面来说能做到“尊重”总是好的。

逻辑清晰

争论的本质是观点的碰撞,逻辑的交汇。在争论一个问题时每一步逻辑的正确性是保证“健康”的必要条件。只可惜这一点在大部分——真的是“大部分”情况下,这一点似乎变成了一种“苛求”。例如一个经典的吵架场景,各位不妨来一起看一下:

  • A:有了优秀的项目经理才能做好项目。
  • B:幼稚!谁说只要有了优秀项目经理就能做好项目了?

单从B的说法上来看可以说完全没有问题,但是如果作为A的回应,那么就有明显的逻辑错误了。A的观点中“优秀项目经理”是“做好项目”的必要条件,而B的说法只能反驳“优秀项目经理”是“做好项目”的“充分条件”——这就是“只有……才……”和“只要……就……”两种句式在逻辑上的区别。很容易分辨的错误吧,但是在实际“吵架”过程中,有些逻辑问题不是那么容易就可以分辨出来了。例如最近在Java事件中有一条逻辑是这样的:因为“一个好的程序员,应该有一颗开放的心,任何语言、任何技术都可为我所用,不带偏见,不拘一格”,所以“不能指责Java语言的缺点”,您发现其中的问题了吗?

逻辑错误有很多种,老赵从TL上收集的一篇文章着重!着重!着重!)中总结得非常完整,可谓逻辑训练与辨误的经典了,在这里推荐给每一个朋友阅读。如果您仔细回忆的话,可以会发现文章中举出的每一个逻辑错误的例子,都能在平时吵架中找到对应的例子。

思维客观

谈到“保持客观”,老赵认为这也是“逻辑错误”中的一种,或者说是“逻辑错误”的一种表现形式,因此与其一起叙述。争论就会引起比较,而比较就必然会谈到“缺点”,这是不可避免的。不过许多朋友在看到自己心中的“理想”在任何方面遭到批评,就会心潮澎湃不能自己,非要用某种方式进行反击。例如老赵在某次讨论模板引擎时这么说:“XSLT虽然是图灵完备可以表示任意逻辑,但是它的语法让人难以接受,因此我不推荐使用”,于是某位路过的朋友看不下去了“我之前的项目中就用XSLT,你怎么能这么简单的完全否定了XSLT。”平心而论,哪位朋友看出老赵在“完全否定”呢?同样的,例如老赵在批评Java语言缺陷时,会得到以下几种反对理由,虽然其中很多方面已经一再强调过了:

  • Java平台比.NET平台好,你没法阻止别人使用Java平台(老赵:这就是Java语言有缺陷的理由吗?我有建议大家不要放弃Java平台吗?)。
  • C++不也那么多年没有进步了(老赵:大家要向前看,不要和别人比缺点)。
  • C#再好,也比不过动态语言的生产力(老赵:这不就是小孩子吵架吗?“你说我不好,我就说你也好不到哪里去”)。

对某种技术有倾向性是非常正常的,而且老赵认为,优秀的技术人员肯定一定会对某种技术有所偏爱。但是,就算喜爱一个技术,也应该接受它的缺点。作为一个逻辑清晰,思维客观的“专业”技术人员,应该深刻理解以下两点:

  • 强调A的优势不代表贬低B,A和B是可以兼容的。例如老赵之前写IronPython辅助调试ASP.NET应用程序时说“成熟的团队应该有一套成熟的工具箱”,于是有人反对说“成熟的团队更应该用好系统中的已有的诊断工具”——老赵有反对这点吗?。
  • 批评A的一个方面,不代表否定了A的全部。例如老赵批评Java语言时,特定用红字着重肯定了Java平台及环境的优势,却还是有不少朋友不断用Java平台的“优势”来否定老赵的观点。

非左即右,非此即彼,非黑即白,非0即1,这种都类似于逻辑错误中的“虚假二分”(可以参照老赵给出的那篇文章)。其实道理很简单,可是吵架也得记住,这样可以避免大部分的噪声——大部分,真的。

还有一种“不客观”的常见逻辑是:“MVP说的微软的好话是不可信的”。一个事物的客观状况,其实是不以“谁”说出来而改变的。如果要对观点进行反驳,针对对方个人也是一种逻辑偏差(道德指责除外,详见引用文章),否则,Linux基金会的官员说Linux的好处是否也不可信?DHH推荐Rails,Gavin King推广Hibernate是否都属于“瘌痢头儿子自家好”,“王婆卖瓜,自卖自夸”呢?“自夸”不是问题,即使有问题,也是在“夸”的内容本身。

 

说了那么多“专业”,老赵还发现在平时讨论过程中会出现的一些“伪专业”的情况:看似有理,实则禁不起推敲。稍后老赵还会就这些地方与大家进行一些探讨。

最后,还是推荐《常见逻辑谬误》一文,希望每位朋友们都可以阅读一下。