近几天有些网友在邮件里面问我关于学习的问题。有好几个人觉得工作了几年,也学会了不少的类库、框架、甚至语言,但是感觉自己的能力没有太大的提高。因此今天来说一下我个人对这方面的体会,希望对大伙儿(尤其是新手)有帮助。

先声明一下,本帖子讨论的三部曲是指你已经选定了某个技术方向之后,该如何学习;至于如何选定技术方向,则属于另一个话题,不在今天的讨论之列。

我把学习归类为三个步骤: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以外的行业/领域其实也能适用,就看读者自己的领悟了。

相关阅读:精通one,学习another,关注next

原文地址:http://coffeescript.iteye.com/blog/1771267

学习技术的三部曲:WHAT、HOW、WHY相关推荐

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

    经过我对周围同事和朋友的观察,大部分感觉自己技术没有提高的人,都仅仅停留在What阶段.下面我把这三个步骤解释一下. 第一步:WHAT 就是搞清楚某个东东是什么?有什么用?有什么语法?有什么功能特性? ...

  2. What/How/Why(学习技术三部曲)

    转载地址:http://blog.csdn.net/u012410733/article/details/69180168 学习技术的三部曲:WHAT HOW WHY 我把学习归类为三个步骤:What ...

  3. 学习,思维三部曲:WHAT、HOW、WHY

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

  4. 管理方法论-学习技术管理实战36讲有感(1)-为什么需要学管理

    1.自我倾听-why 理顺内心的纠结与彷徨,而后心无旁骛地开始用心学习技术管理 2.角色认知-what 搞清楚技术管理涉及的管理范围 3.管理方法-how 管理三部曲:管理规划.团队建设.任务管理,即 ...

  5. 开源大咖齐聚2020启智开发者大会,共探深度学习技术未来趋势

    ​2020年12月2日,"OpenI/O 2020启智开发者大会"在北京国家会议中心召开.大会以"启智筑梦 开源先行"为主题,立足于国际国内开源大环境和发展趋势 ...

  6. 飞桨博士会第三期来啦!中国深度学习技术俱乐部诚邀您加入

    飞桨博士会是由百度开源深度学习平台飞桨(PaddlePaddle)发起的中国深度学习技术俱乐部,旨在打造深度学习核心开发者交流圈,助力会员拓展行业高端人脉.交流前沿技术.俱乐部为会员制,成员皆为博士生 ...

  7. 深度学习技术在美图个性化推荐的应用实践

    导读:美图秀秀社交化的推进过程中,沉淀了海量的优质内容和丰富的用户行为.推荐算法连接内容消费者和生产者,在促进平台的繁荣方面有着非常大的价值 .本次分享探讨美图在内容社区推荐场景下应用深度学习技术提升 ...

  8. 机器学习中的数学 人工智能深度学习技术丛书

    作者:孙博 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2019-11-01 机器学习中的数学 人工智能深度学习技术丛书 ISBN:9787517077190

  9. 报名 | 清华大数据论坛之深度学习技术与应用

    时光荏苒,春华秋实,厚重的积淀和改革创新的新发展给予清华人自信和力量.在清华大学108周年校庆的喜庆气氛里,清华大学大数据研究中心.清华-快手未来媒体数据联合研究院共同主办"清华大数据论坛之 ...

最新文章

  1. C#调用非托管代码找不到入口点解决办法
  2. pandas将满足某列的值挑出
  3. 估值380亿美元!这家微软、谷歌、亚马逊都投资的AI初创公司什么来头?
  4. 【图文解析】带你看清全球机器人四大家族现状,四家企业瓜分中国57%、全球50%的市场份额...
  5. Python隐藏属性
  6. dart - 如何制作新数组嵌套排序映射
  7. 如何零基础或者转行数据分析师?
  8. 第一章:1-01、计算机网络的发展可划分为几个阶段?每个阶段各有何特点?
  9. Flink FileSink 自定义输出路径——BucketingSink
  10. 10种JavaScript特效实例让你的网站更吸引人
  11. C语言查找100~200以内的素数(质数)
  12. 香帅的北大金融学课笔记4 -- 基金
  13. Centos5反p2p模块安装精要
  14. 牛皮凉席不好的原因!
  15. chm打开秒退_用熊猫看书来看chm,却自动退出,什么原因?
  16. uniapp开发微信小程序,多行文本换行,动态改变文字区域宽度
  17. Python常用库的用法介绍都给大家整理出来啦,非常实用,建议收藏
  18. linux如何提取文件名称,如何在Linux中提取路径和文件名的特定部分
  19. Debian10使用本地ISO搭建APT源
  20. Js逆向-猿人学(1)源码混淆

热门文章

  1. Matlab绘图基本用法(1),阿里巴巴二面被血虐
  2. xunsearch php实例,初探xunsearch
  3. About.com 2012最受欢迎浏览器评选揭晓
  4. 巧用UserAgent来解决浏览器的各种问题
  5. Docker下Redis Cluster分片集群的搭建、基本操作、集群扩容和集群故障转移(非关系型数据库技术课程 第九周)
  6. Ribbon中的IRule
  7. 【MATLAB】1.基础语法 。等差数列;求积分、导数;num2str;分行,分号
  8. 一份品牌加入元宇宙的保姆级指南
  9. VScode下的Rust语言环境搭建
  10. Oracle Swap居高不下处理