42 评论

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

  最近几天有些网友在邮件里面问我关于学习的问题。有好几个人觉得工作了几年,也学会了不少的类库、框架、甚至语言,但是感觉自己的能力没有太大的提高。因此今天来说一下我个人对这方面的体会,希望对大伙儿(尤其是新手)有帮助。
  先声明一下,本帖子讨论的三部曲是指你已经选定了某个技术方向之后,该如何学习;至于如何选定技术方向,则属于另一个话题,不在今天的讨论之列。
  我把学习归类为三个步骤:What、How、Why。经过我对周围同事和朋友的观察,大部分感觉自己技术没有提高的人,都仅仅停留在What阶段。下面我把这三个步骤解释一下。


★第一步:WHAT


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


★第二步:HOW


  所谓的“HOW”就是“How to do?”。在这个层次,你要搞清楚某个东西,其内部是【如何】运作的?【如何】实现的?......
  举例如下:
假如你在学习 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 三部曲
如何完善自己的知识结构
书评:《你的灯亮着吗?——找到问题的真正所在》
思维的误区:忽视沉默的大多数
学会透过现象看本质,即使现象有时候挺诡异
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2009/02/study-technology-in-three-steps.html

42 条评论

  1. 博主,关注中。。。

    回复删除
  2. C++ 没有 finally 关键字是因为它的 RAII 机制吧?

    回复删除
  3. 楼上说的差不离。
    详见BS老大的FAQ:
    http://www.research.att.com/~bs/bs_faq2.html#finally

    回复删除
  4. 我觉得可以加个第四步 change
    知道how 和why之后 对这个东东的设计就吃透了 那么进一步可能是设计一个类似的东东 也可能是针对不同的应用环境改变它 让它更适合新的环境
    更牛x的change是 你发现更优的方式 实现超越~

    回复删除
  5. 感谢楼上的同学提出进一步的观点 :-)

    回复删除
  6. 以前我的想法是多学一点才有竞争力,现在要改变想法了。
    How完之后再Why再来学其它东西,可以上手的时间要短N倍。

    回复删除
  7. 知其然,并知其所以然

    回复删除
  8. 根据lz的说法,我还是入门级的,

    回复删除
  9. 我也来模仿博主,我常常对身边的同事说,工作应该是"what why how"三步,什么意思呢?第一,你用的工具,你的环境是什么?第二,为什么(具体视环境而定)?第三,你怎么做?因为很多人喜欢问,我怎么做就好?不过想了想,我跟博主比起来还是在初级阶段,大约是因为我身边的人。

    回复删除
  10. 不错。
    深入了解,What How Why,每一个学科都适用

    回复删除
  11. 博主,有木有比较优秀的IT博客,给推荐下

    回复删除
  12. 博主,有木有比较优秀的IT博客,给推荐下

    回复删除
  13. TO 楼上的网友
    请问你对IT的哪个领域感兴趣?

    回复删除
  14. 博主可否推荐一些书籍,关于学习的?给个豆列最好。对于不在IT行业的技术人才应该也得有些参考步骤才是。

    回复删除
  15. TO 管有鸿
    希望俺推荐哪个领域的书籍?能否说具体点?

    回复删除
  16. 额...推荐些思维类书籍就可以了.小弟专攻结构专业,这个想也推荐不了。发现很多人的思维被政治书荼毒严重,比如唯实践论,辩证法,看起来天衣无缝,但总觉得有毛病,我想慢慢收集相关资料。

    回复删除
  17. TO 管有鸿
    俺博客推荐过两本思维类的书:《你的灯亮着吗?》《学会提问——批判性思维指南》。
    不知你看过吗?

    说到“辩证法”,天朝的哲学教育,只灌输马克思那套玩意儿,其它哲学流派很少提及。
    太片面了!

    回复删除
  18. 第一本准备看,已有电子版。第二本,英文版没看完。不过我以前看过李笑来老师推荐的beyond feelings.很有所触动,对自己的思考习惯产生很大的影响,具体有以下三点:
    1.现在不会受一些论据不充分不真实、论证不严密的文章、书籍左右了。
    2.能逐步接受一些与自己现有经验完全违背但符合事理的观点了。
    比如从盲目认为中医治本西医治标(其实这句话根本没有可靠证据)过渡到反对中医(中药不反对),因为中医建立在经验上,可能一时一地对某个特定的人管用,但无法普及到大众。而且许多中药根本无法拿出可靠的双盲实验数据。希望迷信中医的朋友们查查什么叫双盲实验,就明白了为什么中医理论不可靠(但许多中药有许多有用成分可利用,不能一味反对中药)。这个观点转变主要是受方舟子著《批评中医》和其他一些反中医文章书籍影响。
    3.知道如何说话时应具有客观性,喜欢查阅参考资料,自己说话时注意言必有据,找引文出处、作者是谁。
    这个具体是受到维基百科(中英文都看,英文维基百科实在是人类知识的总和)的影响,我当年真的被这种查证丰富,处处问来源的习惯震撼了。而且以后看到一些国外大牛写的书,引文都是好几页,对比国内,很多人根本没有参考文献,有的话基本只给几条。这一点上可以看出国内外学术上为什么有这么大的差距了。

    回复删除
  19. TO 管有鸿
    说到中医,这可是一个引发大量口水战的话题 :)

    俺个人觉得:中医更像是一种“手艺”,而不是“科学”。
    所以中医的理论,其实不能称为“科学理论”,而只能称之为“经验”。

    另外,“中医”和“西医”的说法,本身是具有误导性的——给人感觉这两者是对等的。
    更准确的说法,应该是:
    把“中医”称为“中国古典医学”
    把“西医”称为“现代医学”

    其实不光中国有古典医学,几个文明古国都有(也都包括草药的使用)。
    只不过很多国家的古典医学都废弃了。

    回复删除
  20. 说到中医又是一个典型的洗脑议题:什么叫科学?
    科学应当是不断自我检验,修正错误接近真相的探索精神。
    而不是写在书上的具体理论。那些理论统统是经验。
    中医和西医其实都是前人探索修正的经验理论。而以甲理论与乙理论矛盾而反对某方其实就是不科学。
    牛顿力学是经验理论。不能以确实发生的相对论现象不符合牛顿力学而排斥物理学的发展。就是当今,相对论和量子力学不兼容,但不能否定其中一个不科学。

    又扯回天朝教育,党妈妈只会告诉你某套理论是“科学”的,等于说某套理论是绝对真理。卡尔·波普尔关于区分科学、伪科学的可证伪性理论则成为禁书。
    因为他们声称的是“科学社 会 主 义”。而实际实践已经证明破产的垃圾。同样还有,苏联的反基因,天朝反相对论,亩产万斤都是以权利打压科学探索例子。
    所以,很多中国人包括中、西医缺乏科学精神。自说自话。

    再论中药,作为行内人,我可以说中药能通过双盲验证,问题还是利益。
    不是国内鸡毛蒜皮的GDP,是欧美的大医药集团。
    医药行业是支柱产业,人家用上10亿搞的专利药打算挣100亿的。你进个几分钱的药片替代了。
    断人财路等于杀人父母啊。
    因为能通过双盲验证。所以他们用有效成分卡,从高技术上制造门槛。
    同时,到中国申请中药专利的外国公司第一是日本(有文化背景),第二是美国!!

    至于方舟子,批中医和推转基因……

    回复删除
  21. reply匿名
    我没有反对中药。我是反对中医理论,那些阴阳调和,气,望闻问切等。这些理论不能通过双盲实验。看看现在的中医院,还有多少是采用传统中医理论诊病的?中国人从来就没有实证精神,凡事只求表面理解,停留在“哦,是这样的”的状态,最多就是“它就是因为这个才这样”这个状态,不反思,不把学问做细做深。

    另外同意博主观点,凡事论中论洋,还是民族自卑心(想想为什么不是自信心)作祟。我们不必处处非求中国特色,我们要有广博的胸怀吸收一切文明成果。不包容开放、心思总抱着老黄历才是对祖宗最大的亵渎。因为中华民族自古就是一个能包容的民族,顽固死守遗产不去拥抱时代才是近代中国衰落的原因。

    回复删除
  22. 看来你完全是外行,双盲实验就是针对具体药品或者疗法的,不是理论。
    倒过来说,西医理论又怎么双盲。
    没有采用中医理论的医生其实是教育的问题。

    理论是讲可证伪的。而且纵然证伪了,也只是圈定了使用范围。
    还是用物理的比喻好理解。牛顿力学在高速运动下证伪了,所以它不能用于GPS系统,需要相对论修正;但不妨碍以牛顿力学指导军舰、航母设计。
    中医理论的证伪检验很简单。以中医的配伍禁忌抓一包药,谁质疑而且大胆的喝下去就是了。

    回复删除
  23. 再补充点:
    理论上血液从心脏经动脉到全身由静脉回心脏。
    那么不论你知道或者不知道这个理论,血液都该这么走的。
    中医的五行生克也是理论,也是应当你信不信它都是这样走的。
    这就是理论。

    而药物,有可能告诉你这是特效药,给你吃实际没有药性的淀粉片。然后在心理暗示下自己好了。
    所以要分两组,一半给真药,另一半给空药。对比看看药物是真有用还是心理作用。

    回复删除
  24. TO 前3楼的网友
    首先感谢你的捧场,写了挺长的留言。

    ★关于归纳和演绎
    现代科学理论,都是基于“逻辑演绎”,而不是基于“经验归纳”的。
    所以,你说“牛顿力学是经验理论”,这个说法不对。

    ★关于物理学
    你提到说:
    “不能以确实发生的相对论现象不符合牛顿力学而排斥物理学的发展”
    这句话逻辑不通。
    恰恰是相对论颠覆了牛顿力学体系,所以物理学才得到发展。
    可以说,有了狭义相对论,牛顿的很多理论(比如:绝对时空、伽利略变换)已经可以抛弃了。
    之所以现在中学物理还在教牛顿力学,是因为牛顿力学在远低于光速的情况下,误差较小,日常生活依然可以拿来用。

    你提到说:
    “相对论和量子力学不兼容,但不能否定其中一个不科学。”
    到目前为止,相对论和量子力学并没有出现根本的矛盾。所以并不需要否定其中一个。

    ★关于波普尔的“可证伪性”
    既然你提到“证伪”,俺来说说为啥波普尔要提出“可证伪性”的检验标准?
    英国的培根企图用归纳法来实现科学理论的可证实性。但是休谟指出了培根这套逻辑实证法的致命缺陷。
    所以波普尔反其道而行,提出“可证伪性”。
    按照可证伪性,科学理论永远无法被“证实”。如果某个实验跟理论符合,只能称理论得到“确认”。
    具备“可证伪性”的理论,才能称之为科学。也就是说,科学理论,总是可以被检验的,并且总是有可能被推翻的。
    有些理论或命题(比如宗教理论),既无法检验也无法“证否”,就不算是科学理论。

    ★中国古典医学理论,是科学吗?
    (俺再次强调一下。“中医”这个词汇有误导性)
    中国古典医学理论,主要就是阴阳五行、天人合一、经络、之类的理论。
    这些理论不是建立在逻辑演绎的基础上的(仅仅是古人的经验积累)。
    中国古典医学理论,很多都不具有可证伪性(缺乏严格的可检验标准)。
    比如像“阴阳五行说”这个理论,本身就没有提供一套可检验的标准,谈何证伪?

    ★关于草药
    对草药要区别对待。
    有些草药确实有一定的效果;
    有些草药有效果但是也有明显副作用;
    有些草药没效果却有副作用。

    所以,现代医学应该用科学的手段(双盲测试只是手段之一),分析出草药中的有效成分,分析出该成分是否有明显的副作用。
    而各个国家的古典医学理论,在这方面几乎是空白。毕竟古代没有基本的化学、生理学的基础。
    所以,单纯依靠古典医学理论,是远远不够的。

    ★关于欧美对医药的审核
    没有必要把欧美国家的对医药的严格审核都归咎于大公司的门槛。
    严格的审核也是对老百姓有利的。
    比如很多有机化合物对人体的影响,在短期内未必能看出来。所以欧盟制定的标准,要求药物必须有至少30年的安全证明和效果证明。

    回复删除
  25. TO 编程随想
    逻辑演绎需要基础。数学是公理,物理是基本假设。
    如牛3条。相对论的光速不变、惯性质量等于引力质量。
    这些假设就是实验数据,就是经验归纳。
    同样,阴阳五行是基本假设,而每个人的症状是以此推演失衡的地方并纠正。

    “不能以确实发生的相对论现象不符合牛顿力学而排斥物理学的发展”
    其实是说所谓“物理学的两朵乌云”(相对论一朵,量子力学一朵)。在19世纪尾,牛顿力学体系已经逻辑演绎出完整体系。但乌云来临,需要颠覆的是牛顿力学而不是否认乌云存在。
    另外以“相对论和量子力学的相容性”为关键词可以得到很多结果。
    同理,西医无法解释中医个案。真正要颠覆的是西医。
    事实上西医不断在颠覆自己,这个值得赞扬。而不少反中医的作为外行人用道听途说的西医理论来否认中医,实在无语。

    ★关于波普尔的“可证伪性”、经验积累与演绎 上面说过了
    ★中国古典医学理论,是科学吗?可证伪性吗?
    前几楼说了,按中医理论推导的配伍禁忌“十八反、十九畏”抓一包药,煮了喝下去就是了。


    至少30年的安全证明
    相当多的传统制剂至少300年好不好。

    回复删除
  26. TO 楼上的网友
    ★关于科学理论的演绎
    科学理论的演绎需要两个条件:
    1、基于某些基本的假设
    2、根据这些基本假设进行演绎
    举个例子:
    欧几里德几何学,平行公理(第五公设)是基本假设,根据这个假设能够推导出三角形内角和180度。

    那么,你能否说一下:
    阴阳五行理论的基本假设是什么?
    根据这些假设又得到哪些推论?
    这个推导过程是否基于严密的逻辑演绎?

    ★关于相对论和量子力学
    你提到说:
    “相对论和量子力学不兼容,但不能否定其中一个不科学。”
    然后你又说:
    “以‘相对论和量子力学的相容性’为关键词可以得到很多结果。”
    你能否具体指出来,相对论和量子力学,到底存在哪些矛盾?
    俺先声明一下:
    相对论没有量子化,并不能拿来论证这两者不兼容哦。

    ★中国古典医学理论,是科学吗?
    俺再啰嗦一下之前留言的话。
    中国古典医学理论,很多都不具有可证伪性(缺乏严格的可检验标准)。
    缺乏“严格的可检验标准”,就不具有“可证伪性”。
    如果你认为中国古典医学理论是科学,你能否明确指出,该理论具有哪些“严格的可检验标准”?

    ★关于草药
    俺前面的留言说了:
    现代医学用科学的手段(双盲测试只是手段之一),分析出草药中的有效成分,分析出该成分是否有明显的副作用。
    而各个国家的古典医学理论(包括中国),在这方面几乎是空白。
    所以,你提到说:
    “相当多的传统制剂至少300年好不好”
    这所谓的“300年”,只能说明这个药物的使用时间长。
    但是在古代,有人做有效成分的分析吗?有人做双盲测试吗?有人做针对性的副作用观察吗?......

    回复删除
    回复
    1. 相对论和量子力学,到底存在哪些矛盾?
      -------------------------
      记得五年前的一期《环球科学》杂志上有一篇关于相对论和量子力学的矛盾描述

      那个说法是,相对论说时间是相对的,每个物体都有自己的时间

      而量子力学中的时间是绝对的,比如“量子纠缠”中的一对粒子,其中一个状态改变,另外一个的状态同时发生改变

      就是这个效应让科学家们很困惑,但是远远谈不上根本矛盾

      相对论描述宏观世界,量子力学描述微观世界

      两者的“矛盾”是在大统一理论基础上的,可这理论还没出来呢

      删除
    2. 另外浅谈一下中医

      中医这个问题跟气功差不多

      我觉得主要在于“真传”

      我姥姥以前就和会针灸的人生活过

      那个人的针灸水平很高,不说救死扶伤,小毛病和常见的大病都能治(但肯定没有逃过“针灸”和“绝症”的范畴)

      人家也是从别人那里学来的,后来那个老爷子去世了,他的技术没有传下来

      现在的中医大多都是“伪中医”,哪怕医学院的也是一样,那些医生自己搞懂了多少都很难说,总之复原真正古代医生的手法,.

      说句题外话,老一辈的医生有责任心的很多,不管中医还是西医

      另外再谈谈中医为啥现在不招待见,原因很简单,就跟气功一样,江湖骗子太多了

      先拿阴阳理论把人绕晕,再说什么祖传秘方,没主见的人就会上当,轻点儿的被骗钱,严重的还丢命。

      这种事情出现多了,人们自然就会对中医反感,其实说白了,气功,中医,还有什么太极拳,内家拳啥的,只要得到真正的传授,就不是忽悠,但丢掉了内在的传授,学的再好也是没有用,皮一张而已,不过是个理论家,而那个理论还不一定真能够理解,甚至就是专门误导门外汉,真正的好技术哪会轻易让你知道?

      编程随想说到中医是经验积累,何止是中医,中国古代的很多技术都是经验积累,这些东西说毁就毁,以前没有复印机,一本书,说烧就烧,一个工匠,说杀就杀,这样,记载的一门技术的人和书就没有了,那被记载的技术呢?当然也没有了,反正没有系统的理论体系,想模仿也模仿不来,丢了谁怕你?

      不说远的,就说明朝灭亡以后的清朝,清朝一建国就毁掉了明朝的火枪技术和造船技术,之后的康熙乾隆的文字狱,还有四库全书,都把汉族人的文化传承给毁掉了,而且无法复原,永久的毁灭,文革貌似也起到了这个作用?但是肯定没有清朝那么严重,英国人打进来的时候,清朝的士兵拿着棍棒刀枪对抗大口径的火炮,简直二逼到家了。顺便再上网查查《永乐大典》还剩几本,就知道中国到底丢了多少东西。

      扯这么远,就是想说,现代人通过目前残存的古代书籍也好,完善的现代科学理论检测也好,终究是无法真正理解古代的科技体系已经无法理解他们的思维(在某些特定的领域,比如诗词,武术,等)

      尤其是老一辈的人一辞世,更没有多少人会这些东西,再加上各种气功痞,邪教,中医骗子,搞出那么多悲剧,不招人待见太正常了。

      所以楼上匿名网友说的“颠覆西医”的事情是不可能的,除非老天爷开恩让丢失的一切重见天日。

      都说中国的历史和文化没有断代,我看早就断代了,只有人传下来了而已,而且还被异族混血了不少。

      删除
  27. 楼主,能推荐下系统学习网络的的资料吗,我自己杂七杂八的学,总感觉这里不行,那里不济的

    回复删除
    回复
    1. TO 徐起
      你提到的“系统学习网络的的资料”,能否说具体点?
      是指网络管理、还是网络方面的开发、还是其它的?

      删除
  28. 楼主什么时候出新文章啊,每天都会上来瞄几次看看有没有新贴

    回复删除
  29. 为什么通过tor代理就无法留言啊

    回复删除
    回复
    1. TO 33楼网友
      因为俺博客托管在 Google 的 BlogSpot 平台。 TOR 在全球的出口节点数量有限,而 TOR 的用户又很多。 所以就导致:某个出口节点产生的 BlogSpot 留言,数量较大。
      然后这个出口节点就会被 Google 当成是恶意垃圾留言发送者。

      如果碰到用 TOR 无法留言,建议切换一下 TOR 线路,或者把 TOR 客户端重启一下。

      删除
  30. 谁可以分享一下高数学习方法,感觉这次又得挂。

    回复删除
    回复
    1. 我是这样读的,考前一天从第一页开始看,推导完书上所有公式,或者背下来,然后考七十几分

      删除
  31. 说到中医,似乎不应该一棍子打死,可留待后人解决。
    当年提出量子纠缠理论的时候,爱因斯坦的相对论已名闻天下,爱因斯坦本人并不认可纠缠理论,经过实验证实后,爱因斯坦仍认为只是巧合,而且至死不改。以今天的眼光看,爱因斯坦之谬大矣。
    中医,说是经验,还有阴阳指导,说理论,阴阳似乎不好证实真伪,姑可以认为是一种经验性理论(不知道有没有这个词汇)哈。
    个人设想:可能目前人们尚没有认识到中医的这个经验的科学道理,一旦认识到了,可能中医的理论就成为科学。好比人们对宇宙的认识,牛顿放之四海而皆准的时空观成了爱因斯坦相对时空观中的一个特例,而目前宇宙中可人类科学可感知的物质只占物质总量的5%,一旦人类搞清了暗物质,爱因斯坦的相对时空观也可能只是一个特例。为什么是特例而不是错误呢?因为在一定条件下确实是正确。
    为什么鄙人不排斥中医呢?因为中医(指良医,不是江湖骗子型的)按其理论看病,确实管用。也许是这个经验性理论尚不为现代科学所知吧

    回复删除
  32. 随想哥,这个是我自己做额网站,感觉有点迷茫,给点意见把?
    huiwupay.com:9999

    回复删除