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. vue之安装配置

    直接上图

  2. Bootstrap-CL:按钮下拉菜单

    ylbtech-Bootstrap-CL:按钮下拉菜单 1.返回顶部 1. Bootstrap 按钮下拉菜单 本章将讲解如何使用 Bootstrap class 向按钮添加下拉菜单.如需向按钮添加下拉 ...

  3. 杂项:ASP.NET Core

    ylbtech-杂项:ASP.NET Core 1.返回顶部 1. ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序.使用 ASP.NET ...

  4. 架构-MVVM:MVVM核心概念

    ylbtech-架构-MVVM:MVVM核心概念 1.返回顶部 1. MVVM模式是Model.View.ViewModel的简称,最早出现在WPF,现在Silverlight中也使用该模式,MVVM ...

  5. centos7 编译安装新版LNMP环境

    centos7 编译安装新版LNMP环境 环境版本如下: 1.系统环境:Centos 7 x86_64 2.NGINX:nginx-1.11.3.tar.gz 3.数据库:mariadb-10.0.2 ...

  6. 51nod 1069【思维】

    具体思路来自相关讨论 给个不太严谨的证明思路: 第一步:证明路径可逆,也就是如果(a, b) -> (x, y)可行,则(x, y) - > (a, b)可行 这个比较直观,只需要分别由( ...

  7. zoj2412 dfs连通图

    zoj2412 #include<stdio.h> #include<iostream> #include<cstdio> #include<queue> ...

  8. (2)javascript的基本语法、数据结构、变量

    本篇学习资料主要讲解javascript的基本语法.数据结构.变量      无论是传统的编程语言,还是脚本语言,都具有数据类型.常量和变量.运算符.表达式.注释语句.流程控制语句等基本元素构成,这些 ...

  9. 关于协程:nodejs和golang协程的不同

    nodejs和golang都是支持协程的,从表现上来看,nodejs对于协程的支持在于async/await,golang对协程的支持在于goroutine.关于协程的话题,简单来说,可以看作是非抢占 ...

  10. vs2010中的ADO控件及绑定控件

    要在项目中添加某一个ActiveX控件,则该ActiveX控件必须要注册.由于VS2010中,并没有自动注册ADO及ADO数据绑定控件(Microsoft ADO Data Control,Micro ...