学习技术的三部曲:WHAT HOW WHY

我把学习归类为三个步骤:What、How、Why。经过我对周围同事和朋友的观察,大部分感觉自己技术没有提高的人,都仅仅停留在What阶段。下面我把这三个步骤解释一下。

  ★第一步:WHAT
  所谓的“WHAT”,就是搞清楚某个东东是什么?有什么用?有什么语法?有什么功能特性?……
  举例如下:
  对于学习语言(比如C++、Java、Python),大部分人都能够掌握基本的语法和标准库,然后用它写一些小程序(诸如二分查找、冒泡排序、简单文件操作等)。
  对于学习类库(比如JDBC类库),大部分Java程序员都能明白JDBC主要包含哪些类,也能够用JDBC进行简单的数据库查询和增删改操作。
  由于这个步骤是最基本的,假如你连这都做不到(可能你的理解力不够好),也别在IT界混了。
  但是光会What是不够的。仅仅停留在这个步骤,导致了很多程序员只知其然,不知其所以然。这就是目前大部分开发人员的现状。

  ★第二步:HOW
  所谓的“HOW”,就是搞清楚某个东西内部是如何运作的?实现机制如何?等一系列相关问题。
  举例如下:
  假如你在学习C++语言,你是否搞明白函数传参数的实现机制?虚函数是如何实现?抛出异常时的栈回退是怎么回事?……
  假如你在学习Java语言,你是否搞清楚GC如何实现?反射是如何实现?……
  假如你在学习JDBC库,你是否清楚JDBC Driver的4种类型?不同游标类型的实现机制?事务的机制?……
  在这个阶段,你必须多想想类似这些问题。然后通过各种途径(参见“关于自学能力”的几个方法),把问题彻底搞清楚。自然而然,你的提高就会比较明显。而且如果碰到一些深层次的问题(比如性能优化),也就知道该如何去解决。
  完成这个阶段之后,你基本上就属于该技术领域最优秀的20%的人(根据二八原理,80%的人不会去思考HOW的问题)。

  ★第三步:WHY
  一般来说,只有你把HOW的问题想清楚,才开始考虑步骤WHY。
  所谓的“WHY”,就是搞清楚某个东西为什么设计成这样?为什么不是另外的样子?这样的设计有什么讲究?
  说实在的,善于问“为什么”有一定的天赋成分?好像某个科学大牛曾经说过“提出问题有时候比解决问题更难”。一般来说,只有当你深刻理解了某个东西,才能够针对这个东东的设计问出一些问题。所以,我前面强调过,要先把HOW的问题搞清楚,再来考虑WHY的问题。
  举例如下:
  对于C++语言:为什么C++没有类似Java的finally关键字?为什么C++当初没有考虑GC?……
  对于Java语言:为什么Java没有类似C++的类析构函数?为什么Java要同时提供String和StringBuffer两个似乎冗余的类?……
  对于Python语言:为什么Python不提供类似C++/Java的访问控制机制?……
  如果你能够自己问出诸如上述的“为什么”问题,并且能够通过各种途径找到解答,那你基本上已经吃透这个技术了,并且你已经有可能自己去设计一个类似的玩意儿了。到这时,你已经踏上了通向技术高手的康庄大道。

  由于本博客偏重IT方面,所以今天举的这些例子多半都是IT相关的,但是这个三部曲在IT以外的行业/领域其实也能适用,就看读者自己的领悟了。


用提问来促进思维——再谈 WHAT HOW WHY 三部曲

俺今天来聊一下,如何用提问的方式促进深度思考。

★认知的过程

  稍微了解”认知心理学”的网友应该知道:我们对某个事物的认识,总是”由浅到深”。虽然同样是由浅到深,但每个人思考的深度却千差万别。不幸的是,大多数人在看待某个东西(事物、问题、现象)的时候,都仅仅停留在浅层次。
  为啥会这样捏?一个很重要的原因就是:大多数人不善于提问。
说到这儿,俺又要第 N 次抨击天朝的教育制度了。在天朝的中小学教育中,根本就没有教会学生,该如何提问、该如何质疑、该如何反思。

  好,言归正传。如何才能掌握提问的窍门捏?如何才能在提问中加深思考捏?俺总结了一个比较简单的提问三部曲:WHAT、HOW、WHY。通过这个三部曲,你可以一步步地从事物的表象深入到事物的本质。

★WHAT HOW WHY 的步骤

俺已经写过一篇博文《学习技术的三部曲:WHAT HOW WHY》,主要是介绍三部曲在技术领域(理工科)的应用。考虑到俺博客的读者中,有越来越多的人不是IT行业。所以,俺今天侧重介绍一下,这个三部曲在社会科学(文科)方面的应用。

◇WHAT

  当我们开始了解某个事物的时候,总是先从 WHAT 类型的问题开始入手。而所谓的”WHAT”也就是”What is it?”
  在这个层面,你首先要了解的,就是某个事物所涉及的:时间、地点、当事人以及该事件的大致经过。要了解这些,其实比较容易——通过跟别人交流,或阅读各类媒体(网络、电视、报刊),就可以对某个事物有一个初步的、肤浅的、表面的认识。
  在 WHAT HOW WHY 这3个层次中,这个层次是最简单的——因为你只需运用”记忆力”即可解决。对大多数人而言,只要智力没啥缺陷,都能达到这个层次。达到这个层次虽然很简单,但你千万要记住:从 WHAT 类型的问题得到的答案,通常只反映出事情的表面现象。而表象跟本质,往往是不同的,甚至是相反的。如果你仅仅停留在 WHAT 层面,很可能会被表象所误导。
  在《为啥俺不常用微博——兼谈时间管理心得》一文,俺提到微博传递的信息过于肤浅——意思就是说,(大部分)微博传递的信息仅仅停留在 WHAT 层面。

◇HOW

  所谓的”HOW”就是”How to do?”。
  因为本文侧重讲社会学领域的话题。而社会学领域,”人”往往是关键因素。所以,你首先要思考的就是:当事人是如何参与某个事件的?(此处所说的”当事人”,可以是某个具体的人,也可以是某个群体)
  当然啦,很多事物的发展,除了有”当事人”的因素,还有其它一些因素(比如:文化因素、法律因素、经济因素、科技因素等等)。所以,你还要问:除了当事人,其它因素是如何起作用的?
  最后,你还要继续问:在各种因素的作用下,事件是如何一步步发展的?该事件内部是如何运作的?……
和 WHAT 层次不同的是,HOW 层次光靠记忆力是远远不够滴。你还需要具备一定的分析推理能力,还需要懂得查阅相关资料,才能搞明白上述 HOW 类型的问题。

◇WHY

  当你能够比较透彻地厘清 HOW 层面的各类问题,就可以开始思考 WHY 类型的问题了。
  所谓的 WHY 类型问题,俺举几个简单的例子:
某个当事人为什么会这么干而不是那么干
为什么是这个因素起作用而不是那个因素起作用
事件为什么会朝着这个方向发展而不是朝着另外的方向发展
……
  WHY 类型的问题有个特点:这类问题很发散且数量很多。因此,对于某个具体的事物,总可以提出几十个(甚至上百个) WHY 类型的问题。在这么多个问题中,只有少数几个是切中要害的。所谓”切中要害”的问题,就是那些会把你引向该事物本质的问题。
  肯定有人要问,如何才能直接提出切中要害的问题?老实说,这没有捷径。只有经常思考的人,才能逐渐掌握这种”直接命中要害”的思维能力。
一旦提出 WHY 问题,接下来自然就是寻找答案。
  显然,WHY 类型的问题比 HOW 类型的问题更难回答——在回答 WHY 类型问题的过程中,你不但需要动用分析、推理、归纳、总结等各种思维能力,可能还要运用到跨领域、跨学科的知识。但是收获也是很大的。一旦把这些 WHY 类型的问题想明白,你就对整个事件有一个既宏观又深刻的认识。
  能达到这个境界,看问题通常会比较深刻。可惜这样的人比例太低了 :(

◇WHY 之后可以做啥?

  可能有人会问:达到 WHY 境界之后,又该如何?所以俺补充了这一小节。
  当你经历了 WHY 层次之后,你可以回过头,再用 WHAT 方式重新审视这个事物。这时候看到的信息同你一开始用 WHAT 方式看到的信息,已经迥然不同了。因为你一开始看到的是表象,而现在你已经能看到本质。
  如果你愿意的话,你还可以开始思考解决之道。说到”如何解决问题”,这又是另一个很大的领域,已经超出本文的范畴——本文讲的是”如何认知”。要想学习”如何解决”,强烈建议大伙儿看一下《你的灯亮着吗?——找到问题的真正所在》,非常经典!

————————–(下面举例)

学习,思维三部曲:WHAT、HOW、WHY相关推荐

  1. C++语言学习思维导图

    C++语言学习思维导图

  2. C#语言学习思维导图

    C#语言学习思维导图 C#的学习可分为3个部分: (1)基础 (2)中级 (3)应用 (1)基础 (2)中级 (3)应用

  3. Java语言学习思维导图

    Java语言学习思维导图

  4. python课程思维导图_零基础Python学习思维导图,记得收藏

    原标题:零基础Python学习思维导图,记得收藏 本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库). 1.按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字 ...

  5. 编程哲学之C#篇:02——学习思维

    <代码大全>的第二章:介绍隐喻(类比)的思维方式, <经济学原理>的第二章:介绍怎么像经济学家一样思考, <计算机的心智操作系统之哲学原理>的第一章:介绍学习操作系 ...

  6. 简单易懂的英语学习思维导图(学习篇)

    当我们步入校园的时候,英语就与我们息息相关,对比数学来说,英语虽然简单点,但也不可忽略,下面是小编用思维导图整理的英语学习思维导图,让内容看起来更有条理.更好理解,一起往下看吧~ 英语学习思维导图 课 ...

  7. 教你如何学习思维导图

    我们学习思维导图,是否成效,有进步其实决定因素很多,而我们能做的就是在大家起步都一样的时候,比他人多掌握一份思维导图技巧,我们在思维导图的路上也就能够走得更远一些. 第一 态度.这是学习和掌握思维导图 ...

  8. Hadoop 入门学习思维导图

    Hadoop 入门学习思维导图:

  9. MYSQL学习思维导图

    MYSQL学习思维导图

  10. 深度学习入门之神经网络的学习思维导图

    第4章 神经网络的学习思维导图

最新文章

  1. EF code First数据迁移学习笔记
  2. windows 安装 reviewboard
  3. .NET Core使用EF分页查询数据报错:OFFSET语法错误问题
  4. Spring Boot中对自然语言处理工具包hanlp的调用详解
  5. 在 C 中引用汇编语言定义的 .globl 变量
  6. 基于.NET的WebService的实现
  7. react --- render持续调用解决方案
  8. 专题突破之反悔贪心——建筑抢修,Cow Coupons G, Voting (Hard Version),Cardboard Box
  9. 一手云端,一手终端:比特大陆发布两款AI芯片,大步迈进AI领域
  10. 取消xp开机默认登陆账户
  11. Fiddler改包场景2——拦截请求,修改响应,放行请求
  12. linux的manual手册不存在,在 Linux 命令行下使用“原力”
  13. python编写的bt爬虫实践
  14. 视频转rtmp流及搭建视频流服务器
  15. 微正指纹识别算法MZFinger5.0
  16. IDEACPU占用100%_卡顿 解决办法
  17. 计算机回收站概念,22.5.1 回收站概念
  18. 【PHP】PHP与Web界面交互
  19. 安装程序时提示installshield wizard错误,错误代码-6003
  20. 服务器磁盘显示RAW,高手解决u盘盘符打不开、变成RAW分区有妙招

热门文章

  1. LeetCode简单题之好对数的数目
  2. LeetCode中等题之无重复字符的最长字串
  3. CVD和ALD薄膜沉积技术应用领域
  4. GeforceRTX系列参数对比
  5. Clang:LLVM的C语言家族前端
  6. 使用Tensorize评估硬件内部特性
  7. Python 修改终端输入字体颜色值
  8. Android RadioButton 修改选择框
  9. Java设计模式:观察者模式
  10. Python爬取4399好wan的小游戏!