https://www.douban.com/note/284947308/?type=like

学习技术的三部曲: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. [原创]Jmeter工具学习思维导图

    [原创]Jmeter工具学习思维导图

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

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

  3. SSM框架学习思维导图

    SSM框架学习思维导图 2017年08月11日 20:17:28 阅读数:1141 放上前段时间学习SSM框架以及Spring.SpringMVC.MyBatis的学习结果,输出思维导图一共四幅图.这 ...

  4. python初步(附学习思维导图)

    python,原意为蟒蛇,至于它的发展史,度娘应该比我讲述的更为专业/偷笑.这里我们要梳理的是整个学习的脉络,当然,今后的随笔也会从基础部分说起,希望能给进门python的小伙伴一些建议. 一.环境的 ...

  5. Java基础学习—思维导图

    找到两张Java学习的思维导图,特别适合我这样的菜鸟学习,贴过来和小伙伴分享.

  6. Python学习思维导图

     刚学习Python时,边学边总结的,采用思维导图的形式, 适合回顾使用.内容参考<Python:从入门到实践>一书.   再给出一张Datacamp网站上的一张关于Python基础的总结 ...

  7. 零基础的学习者应该怎么开始学习呢?Python核心知识学习思维分享

    近几年,Python一路高歌猛进,成为最受欢迎的编程语言之一,受到无数编程工作者的青睐. 据悉,Python已经入驻部分小学生教材,可以预见学习Python将成为一项提高自身职业竞争力的必修课.那么零 ...

  8. JQuery学习思维导图版

    常用UI资源 参考资料:Jquery教程 dataTables:教程  中文教程 Wizard:教程 Jquery UI demos:教程 selectmenu:教程 jquery-slider:教程 ...

  9. linux学习思维导图(转)

    转自:https://blog.csdn.net/m1585761297/article/details/80017111 先附上一张学习路径的导图 导图一 导图二(一套) 1.Linux目录结构 2 ...

随机推荐

  1. AutoIt获取Gridview中可以修改列的值

    有一个界面如上图:黑色框框部分是一个整体,也是一个gridview,如果我想把框框中右侧数据获取出来,该如何操作? 我尝试过了很多途径,都无法成功. 今天,我发现,当鼠标焦点在黑色框框左侧的部分的时候 ...

  2. 当你触摸并按住触摸目标时候,禁止系统默认菜单-webkit-touch-call

    当你触摸并按住触摸目标时候,禁止或显示系统默认菜单. -webkit-touch-callout 是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS ...

  3. scp.sh

    #!/bin/sh #Auto change server files #liudong 2016-3-21 if [ ! -f ip.txt ];then echo -e "\033[31 ...

  4. $(function() {}),即$(document).ready(function(),什么时候执行?以此为准

    $(function() { //执行操作 }); $(function() {}) 是$(document).ready(function()的简写. 这个函数什么时候执行的呢? 答案:DOM加载完 ...

  5. 拓扑排序+DFS(POJ1270)

    [日后练手](非解题) 拓扑排序+DFS(POJ1270) #include<stdio.h> #include<iostream> #include<cstdio> ...

  6. PTA 模拟【string以及字母->数组下标】

    假设有九宫格输入法键盘布局如下: [ 1,.?! ] [ 2ABC ] [ 3DEF ] [ 4GHI ] [ 5JKL ] [ 6MNO ] [ 7PQRS ] [ 8TUV ] [ 9WXYZ ] ...

  7. web前端图片预加载

    是什么? 浏览器会缓存静态资源(hmtl/css/img等).图片预加载就是让浏览器提前缓存图片,提升用户体验. 浏览器什么情况下会下载图片? 1,解析到html中img的src属性的时候 2,解析到 ...

  8. .NET CORE之API日志收集

    我们在构建WEBAPI项目时,通常需要构建一个全局的记录API 请求和返回 的功能,在WEBAPI框架下 我们通过自定义一个DelegateHandler来实现这个功能, 在.NET CORE框架下已 ...

  9. Python标准库 re

    正则表达式 regular expression 用来匹配一系列符合句法规则的字符串,是一门独立的小型的语言,如果你了解类Unix系统,那么你对正则表达式就一定不陌生.正则表达式的概念最初是由Unix ...

  10. python之os、sys和random模块

    import os # print(os.getcwd())#获取当前目录,绝对路径# print(os.chdir('../'))#更改当前目录,../的意思是退回上一级目录# print(os.g ...