承香墨影

只分享最有用的原创技术干货!

关注

当你开始被动接受外界给予你的知识和反馈,而不去质疑它,你的大脑很快就会不知道那些东西是对的。你会觉得大家都不做的就是不能做的,也许别人只是有自己的客观原因,而非无法实现。

开始质疑你说听到的、看到的,以及别人想要说服你的,做一个有批判性思维的程序员!

— 承香墨影

作者 | SexyCode

原文 | 《做一个有批判性思维的程序员》

授权 承香墨影 发布

好的游戏一定要让玩家玩的很爽吗?王者荣耀和吃鸡游戏的成功,让这个问题的答案似乎毫无争议,不能带给玩家刺激的游戏就不是好游戏。
什么样的游戏才能吸引玩家不断的玩下去?答案就一个字,爽,用罗胖的话说就是,从前打一局 CS,让你十几分钟爽一次,现在,来一盘农药,让你几分钟就爽一次。然后,吃鸡,一款让你爽的更频繁的游戏又出来了,紧接着,各个大厂的吃鸡游戏陆续上线,大家都在力争带给玩家更多的刺激,因为他们都相信,只有让玩家爽下去,他们才不会把游戏卸载掉。
就在游戏制造商们为生产出更加痛快的游戏杀红了眼的时候,一只青蛙,一边旅行着,一边给家里寄照片,默默的嘲笑道,“他们真俗”。

就是这样一款只有两个场景、玩家除了给蛙准备便当、拔拔杂草就几乎没什么事干的游戏,上线后却刷爆了朋友圈。
而试想一下,如果在王者荣耀、吃鸡火的不行的时候,你能够稍微质疑一下,反问一句,“佛系游戏难道就不能火吗?”,说不定你就造出一款“旅行的喵”了呢。
这种质疑的态度,其实就是我们今天要讲的主题——批判性思维。所谓批判性思维,其实就是对待外部的输入,首先持一种怀疑的态度,过滤掉那些自己认为错误的东西之后,剩下的才是自己的。

不会批判性思维的你,显得很傻

有人说,整天疑神疑鬼的,过着会很累,但是,我想说,如果学会质疑,你不仅会错过旅行的蛙,而且还会显得你很傻
你看到一篇文章,《成功的人,没有哪个是不阅读的》,文章写得非常励志,让很久没有读书的你非常惭愧,心想,都怪自己太懒,要是利用业余时间多读点书,现在说不定都身家千万了,于是你转发了这篇文章,转发时还不忘附上一句:从今天起,我要坚持天天读书[奋斗脸]
朋友看到你的朋友圈,心想,这人真傻,这话也信,没读过书造样过得很舒服很幸福的人多得是。 于是你成了朋友眼中那个很傻的人。其实,阅读是件好事,但是转发这样的文章,就显得你很没主见,显得很 low,很鸡汤,甚至有点 “中老年表情包” 的范。

缺少批判性思维给你带来的傻还不止与此,你看了上面那篇文章后开始看书、开始关注各种微信公众号,你看到一篇文章说“晚上吃姜对身体有害”,于是有一天晚上聚餐,你看到服务员上了一盘姜葱鸡,就硬是让服务员把菜退了。你聚餐完回到家,刷朋友圈时发现刚刚一起吃饭的小刘,转发了一篇文章,《晚上吃姜有害健康?哈佛教授用实验告诉你真相》,文章中列举了各种真实可靠的实验数据,你顿时有点脸红了,更要命的是,你看到小刘这条朋友圈下面,一堆点赞,而且,点赞的,都是晚上一块吃饭的同事……
因为没有批判性思维,你把所有的书都视若珍宝,把作者说的话都当成金玉良言,还为了显摆自己看过很多书,不断地再别人面前宣扬书中的各种错误观点,一个字,傻

所以,是累好还是傻好呢?我想大多数人还是宁愿累点吧。
批判性思维就像给大脑装上了一道防火墙,外界的输入在进入我们大脑之前,都要经过筛选,通过筛选的观点和想法,才能进入我们的大脑。
那么,要怎样进行批判性思维呢,最近阅读了《学会提问——批判性思维指南》,作者 Marcia Brown 对如何批判性思维进行了系统性的介绍。

如何进行批判性思维

要想对一个推理进行批判,首先就要找准这个推理的论题结论,如果连对方在谈论什么话题、对方的立场是什么都不清楚,那就谈不上什么批判了。
确定了对方的论题和结论之后,就要找到对方的理由,也就是支撑结论的证据
找到对方提供的证据之后,接下来你就可以开始对它进行全方位的批判了。

总结一下:
对方在讨论什么(论题)-> 对方想说服我相信什么(结论)-> 对方给出的理由是什么(证据) -> 这些证据靠谱不(批判)
其中前面三步都很简单,这里就不细说,我们直接谈谈,如何对证据进行批判

哪些词语意思不明确

你以为的不一定是他以为的。

“某某牌贴膏,只需三片,即可见效”。
上面是很多药品广告的广告语,药商往往还会请上几个健康活泼的老人来念这些广告词,但是“见效”这个词是什么含义呢?是指让你再也不会疼痛呢,还是让你一个月内不再疼痛呢,还是只是短暂地缓解病情?显然,这个歧义不解决,你就无法决定是否信服。

类似的歧义还有很多,最常见的就是模糊不清的需求。客户要求提供一个登录界面,你以为只需要做简单的用户名密码校验就好了,结果呢,客户不单要求输错密码一次后要输入验证码,还要求输错密码五次后当天不得再次登录,甚至还要求可以通过手机和邮箱找回密码……
解决这类问题的办法——不断质疑
“你的意思是……吗?”
“除了……还需要……吗?”
“这样子可以满足要求吗?”
在向客户或者SE的不断提问的过程中,需求也慢慢得到澄清,我们也慢慢看到了客户的真实“验收标准”。

总之,不要猜测,弄清歧义,才可以下决定

推理过程中有没有谬误

总有一些推理听起来非常有说服力,但往往经不起推敲。
“你代码不能这样写,我们组基本上不用这种写法,而且老黄(某组内专家级人物)推荐要采用另一种写法……”
很多项目的新人都会遇到类似的说辞,有些人听完就点点头,把自己代码改了。
然而如果你是一个求知欲很强的程序员,听到类似的解释,至少会在心里回怼一句:“凭什么???”
其实只要仔细思考一下对方的说辞,就会发现对方根本不是在说服你,而是在要挟
首先,“我们组基本上不用这种写法”,这是用组内的“江湖规矩”在要挟你,意思是你要入乡随俗;
其次,“老黄推荐要采用另一种写法”,这是用权威在要挟你,你不可以不服从权威。
然而,这些都不属于证据,真正的证据应该是像这样的:这样写会有什么性能问题,或者是耦合性问题,用“江湖规矩”和”权威“来试图说服别人,恰恰犯了书中提到的诉诸公众谬误诉诸可疑权威谬误
类似的推理谬误还有很多,我们不可能一一记住。只需记得,在接受对方观点之前,不妨多问一句,凭什么???,唤醒自己的懒人脑,进行理性的批判思考。

证据的效力如何

证据的来源有很多,常见的有这四种:

  • 个人经历

  • 典型案例

  • 专家意见

  • 研究报告

这些证据的可信度有多少呢?
1、个人经历和典型案例
很多人都知道个人经历不可信,可是当看到别人炒股赚的盆满钵满、别人追求自己的理想出去创业收获人生巅峰时,还是忍不住想把对方当做偶像去模仿。
然而,现实是,那些炒股炒的倾家荡产的、那些创业失败破产倒闭的人,你是看不到对他们的报道的。《清醒思考的艺术》的作者罗尔夫·多贝里,在书中建议读者,多去失败者的“墓地”走走,想想也是很有道理的。
2、专家意见和研究报告
既然称为专家,那么也就意味着对方经验丰富、技术高深,在大多数情况下,专家都是对的,不然也不能被人叫做专家。
然而,专家并不总是对的,在这个时候,你也不必对其冷嘲热讽。我们要做的是,即使是专家的意见,也要批判性对待,不断提出质疑,敢于挑战权威,即使最后证明你的质疑是错的,你的收获,也比那些把专家意见当做真理的人要多很多。 研究报告也是类似的,很多研究报告都出自著名的实验室,但是这并不代表他们的结论就是正确的。他们做了那些实验,不代表就可以得出那些结论,我们同样需要对他们的实验过程和推理过程进行批判性思考。

数据有没有欺骗性

“大人总是喜欢数字”,小王子的这句话恰恰说明了人性的弱点。
人们往往容易被带有数字的证据说服,最常见的就是“平均数”陷阱,“XX公司员工平均年收入XXX万”,这种平均数,根本无法说明问题。九个年薪十万的员工和一个年薪千万的员工,平均下来,每人年薪超百万,但是他们十个人中却只有一个过上年薪百万的生活。在很多时候,中位数和众数,比平均数更能说明问题
除此之外,数据来源也是你非常值得批判的一个角度,人们总喜欢使用不明来历的数据来证明自己的观点。
下次再看到金光闪闪的数据或者图表时,先想想数据从何而来,这些数据又有多大意义。

哪些场合要使用批判性思维

生活中有很多场合都需要用到批判性思维:
1、评价别人的观点
我们每天都会从各种各样的渠道获取各种新的观点,书籍、微信公众号推送、知乎、简书等等。在接纳这些新观点,或者为之付诸行动之前,应该先批判思考一下,有歧义吗?有谬误吗?凭什么这么说???
2、评价自己的想法
批判性思维不仅仅是对外进行批判,对自己进行批判也很重要。
养成记日记的习惯,在回顾自己一天做了什么的时候,顺便批判思考一下,自己今天的哪些行为做的不好。比如我某天晚上记日记的时候,发现自己写了一天代码,但是效率很低,于是第二天就给自己的屏幕录了视频,研究一下自己一天对着电脑都做了什么,看看有哪些可以提高效率的地方。
3、写作
既然对别人的文章可以进行批判,那么对自己的文章也同样可以。不妨把自己当做读者,看看自己写的文章里,有哪些没有依据的断言、有哪些词语带有歧义、有哪些论据带有谬误等等。
同时,对于那些技术性较强的文章,在写完文章初稿之后,不妨接着寻找更多的相关主题的文献,来证明和冲击你的观点。永远不要满足于少量文献,这也是论文通常对参考文献的数量达到一定数量的原因。
4、学习
很多人学习一项知识时,喜欢把书或者其他学习资料从头看到尾。事实上,这样做是很没效率的,因为你很难保持那么长时间的专注,尤其是在阅读一些英文的文献时,更是如此。
这时候就有一个好办法,你可以在粗读了文章,比如文章的标题、文章的开头结尾、段落开头结尾之后,向自己提问题,记下问题清单,然后带着问题清单去文章中找答案,这样学习起来会非常有效率。
我在学习Kafka的时候,就是阅读了Kafka官方文档中Introduction的章节,对着Get Started做了个Hello World,然后就给自己提了一堆问题,什么Kafka的broker.partition都是啥、Kafka的架构是怎样体现分布式和集群的、Kafka和RabbitMQ相比,有什么优势和劣势,诸如此类自己非常感兴趣、很想了解的问题,接着下一步就是把一个个问题给解决掉,在寻找答案的过程中,不知不觉就把文档翻了好几遍,而且由于我是主动学习,学习的时候十分专注,效率奇高
5、批判代码
作为一名程序员,我也喜欢对自己和别人的代码进行批判,为什么要这样写,这个注解有什么用、有没有更好的实现方式等等。对自己写的每一行代码、用到的每一个工具类,都要理解,不然不知道这个工具类都做了什么,怎么敢保证用了之后不会带来Bug?如果实在来不及去弄清楚,我也会把问题先记下来,等后面有空闲时间了再来慢慢学习。

哪些场合不必使用批判性思维

也不是所有场合都适合使用批判性思维的,我们也要用批判性思维去看待批判性思维
比方说看电影、电视剧, 我身边很多朋友,喜欢在看到电影一些非常不可思议的巧合的时候,说一句,“怎么可能这么凑巧”,每当这时,我就在心里默默的怼一句,“你这人不适合看电影……”
电影、电视剧、小说等很多虚构的故事,不一定完全符合正常逻辑,但是我们看电影不就是为了放松么?只要在那一瞬间,剧情打动了你或者逗的你哈哈大笑,看电影的目的就达到了
我看到的最搞笑的事是,有一次和朋友去看一部喜剧片,看的时候他笑得眼泪都出来了,然后看完电影,他却在朋友圈发了一张图片,晒了他在豆瓣上给这部电影打了两颗星的影评……

总之,善用批判性思维,看穿生活中的那些谬论,做一个清醒思考的程序员

参考书目:

  • 《学会提问——批判性思维指南》

  • 《清醒思考的艺术》

今天在公众号后台回复成长『成长』,将会得到我整理的一些学习资料,也能回复『加群』,一起学习进步。iOS 长按打赏

推荐阅读:

  • 站在Android开发的角度,聊聊Airbnb的Lottie

  • 漫画:Git 二分 Debug,火速定位出错代码!

  • 找了一天找不到 Bug ? 试试 Git 的二分法吧!!!

  • 如何更精准的在 Github 上搜索开源库?你需要这些技巧!

  • Android 开发,遇上 Emoji 头疼吗?

不懂批判性思维,可能正在限制你的程序员生涯!相关推荐

  1. 如果不懂 numpy,请别说自己是 python 程序员

    文章目录 0. 前言 1. list VS ndarray 2. dtype AND shape 3. 创建数组 (1) 创建简单数组 (2) 创建随机数组 (3) 在数值范围内创建数组 (4) 从已 ...

  2. 不懂编程的产品经理如何不被程序员吊打?

    咖友提问:不会写代码的产品怎么跟程序员沟通? 来自Andy-pm 铁木鱼科技有限公司 产品经理的回答 首先,我需要表明我的观点: 会不会写代码和与程序员沟通没有直接关系,只能说会写代码的可能在与程序员 ...

  3. python14张思维导图高清pdf_程序员必备,快速学习 Python 的全套14张思维导图(附高清版下载)...

    后台回复关键词 20180522 可获取本文中的高清思维导图(PDF版) 本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库).首先,按顺序依次展示了以下内容的一系列思维导图:基础 ...

  4. 拷贝依赖_还不懂零拷贝(Zero-Copy)?怎么称得上高级程序员

    概述 考虑这样一种常用的情形:你需要将静态内容(类似图片.文件)展示给用户.那么这个情形就意味着你需要先将静态内容从磁盘中拷贝出来放到一个内存buf中,然后将这个buf通过socket传输给用户,进而 ...

  5. 不懂精简指令集还敢说自己是程序员?

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 作者丨码农的荒岛求生 来源丨码农的荒岛求生 内存与编译器 时间来到了1980s年代,此时容量" ...

  6. 不懂数据库的码农不是好程序员!

    毋庸置疑,现在是"一切皆数"的时代,放眼目前炙手可热的大数据.人工智能等创新技术,如果没有数据加以支撑,一切的一切将毫无用武之地,更不必谈信息化.智能化and so on,而数据库 ...

  7. 程序员最好掌握的两个思维模式

    程序员是最好的职业,说这话的是 Anders Hejlsberg,他的理由是 每两年CPU的速度要加倍,内存容量是原来的四倍,但是我们的大脑还是原来的大小,很显然,将需要更多的程序员来补充这些,他的意 ...

  8. 大牛告诉你,只有突破程序员思维,才不会沦为码农!

    过去我曾一直认为程序员是依靠他们的技术在编程,也是因为技术使得程序员的水平有高低之分,但随着我写代码的时间越来越长,也接触到更多的程序员,我渐渐发现程序员们其实是依靠他们所特有的程序员思维在进行编程的 ...

  9. java中怎样导入图片6_java程序员进阶篇之必须掌握的6张思维导图!

    原标题:java程序员进阶篇之必须掌握的6张思维导图! <java程序员的自我修养>的作者是MindMaster思维导图社区用户芒果,作者整理了一系列学习java程序的笔记,方便java程 ...

最新文章

  1. 学习java一定会用到的应用软件
  2. Python开发基础总结之函数+闭包+字典+列表
  3. Java 最常见的 100+ 面试题和答案:面试必备
  4. TiDB 源码阅读系列文章(十八)tikv-client(上)
  5. 超全面Python基础入门教程【十天课程】博客笔记汇总表
  6. jquery饼状图插件的指引线_JQuery图表插件Highcharts示例教程
  7. 现在JavaScript日期–如何在JavaScript中获取当前日期
  8. Ubuntu中安装和卸载apache2
  9. javascript基础修炼(10)——VirtualDOM和基本DFS
  10. Java开发岗位面试题
  11. Oracle 10g学习笔记(一)
  12. SpringBoot-Freemarker与SpringBoot集成
  13. 社区团购如今进行得如火如荼
  14. 存储过程系列之存储过程返回值总结
  15. Mybatis 自定义自动分页
  16. 微信公众号二维码在哪里看?如何查看自己的微信公众号二维码?
  17. 医院预算目标分解公式
  18. LFY-SpringBoot2【SpringBoot2入门】
  19. transitive fanout与set_dont_touch_network
  20. 谈我们的团队文化建设

热门文章

  1. 魅族16s Pro体验:精益求精的打磨升级款
  2. 今日Java——Cay Horstmann访谈
  3. webSevice基础学习
  4. 图像坐标球面投影_地图开发知识之-投影坐标
  5. acm中的概率和期望类题目 挖坑
  6. 独立开发变现周刊(第80期):Notion页面转成网站客服小部件,月收入5K美金
  7. HttpClient实现自动登录校园网
  8. 求业之精,别无他法(曾国藩)
  9. python画大象_Python Day25
  10. 4.2 Lebesgue 积分的性质定理