3. 为什么是WHAT->HOW->WHY的顺序?我个人认为应该始终把WHY放在大脑中,带着疑惑和审视的眼光去学习。另外WHAT和HOW往往应该是在一起的吧?
--
刘未鹏(pongba)
Blog | Mind Hacks
http://mindhacks.cn
TopLanguage
http://groups.google.com/group/pongba
2009/2/19 sagasw <sag...@gmail.com>:
如果还没有学习动机,确实应该先想想“WHY”;然后在思考“What is it?”的时候,是不是也应该问一问“What isn't it?”
On 2月19日, 下午2时55分, pongba <pon...@gmail.com> wrote:
> 很不错,这样靠谱的方法指导很少见的。
> 有几个建议:
>
> 1. 我觉得例子可以用一个或几个身边的案例,"身边的故事"比论述的说服力强得多 :) 毕竟方法是要人使用的,如果说服不了别人去遵循那么就白费功夫了 ..
> 2.
> 我觉得虽然这里的道理和做法是正确的,但是学习中的人往往更需要一个诱人的动机,即"我为什么要学这些呢?",所以看了本文,自己学了一阵往往又会质疑说"你说得倒是好,但我看不出需要学习这个还有这个的必要啊,为什么现在要去提前学?不学可以吗?"
> 3.
> 为什么是WHAT->HOW->WHY的顺序?我个人认为应该始终把WHY放在大脑中,带着疑惑和审视的眼光去学习。另外WHAT和HOW往往应该是在一起的吧?
> 刘未鹏(pongba)
> Blog | Mind Hackshttp://mindhacks.cn
> TopLanguagehttp://groups.google.com/group/pongba
2009/2/20 x y <erwin...@gmail.com>
谢谢 对于一个新人,这样的方法论是很重要的!
2009/2/19 Jawley <jaw...@gmail.com>
我觉得楼主说的WHY和你说的WHY不是一回事。楼主说的WHY不是指学习目的,而是指为什么要用这个技术而不用其他类似技术,这个技术比类似技术优点在哪里,缺点在哪里。一些细节为什么要如此设计。等等。这些在没有WHAT和HOW的基础之前是难于把握的。
2009/2/19 sjinny <sji...@163.com>
我觉得我的顺序是:第一步:WHY,也就是先搞清楚目的;第二个:初步的HOW,也就是怎么解决问题;第三部:WHAT,在明确了WHY和初步的HOW之后,才能真正理解自己在做什么;然后回到第一步进一步迭代。:)
On 2月19日, 下午2时55分, pongba <pon...@gmail.com> wrote:
> 很不错,这样靠谱的方法指导很少见的。
> 有几个建议:
>
> 1. 我觉得例子可以用一个或几个身边的案例,"身边的故事"比论述的说服力强得多 :) 毕竟方法是要人使用的,如果说服不了别人去遵循那么就白费功夫了 ..
> > ----------------
> > 编程随想
> > program.th...@gmail.com
what 就是它能干什么,拿它派什么用场; how就是它内部是如何完成处理过程的(好奇心重的人喜欢进去); why 就是它关于what和why
的存在理由。
举个不恰当例子:公司某公关,他的what就是去攻关,有公关的活就交给他; 他的how是转包给其他人; why他要转包?因为他有一张关系网可以使
用。
学习必须搞清楚这三样东西,否则你不会用(初级),不会自己做一个同样的东西(中级),不知道如此实现的理由,也就是没有深入理解,无法使用和实现的最
好。
On 2月19日, 上午11时32分, Program Thinker <program.th...@gmail.com> wrote:
> 下面是我今天写的一个Blog,转贴给大伙儿,希望论坛里的牛人多提批评意见。
>
> 最近几天有些网友在邮件里面问我关于学习的问题。有很多人觉得工作了几年,也学会了不少的类库、框架、甚至语言,但是感觉自己的能力没有太大的提高。因此今天来-说一下我个人对这方面的体会。
> 我把学习归类为三个步骤:What、How、Why。经过我对周围同事和朋友的观察,大部分感觉自己技术没有提高的人,都仅仅停留在What阶段。下面我把这三-个步骤解释一下。
>
> ★第一步:*WHAT*
> 所谓的"*WHAT*",就是搞清楚某个东东是什么?有什么用?有什么语法?有什么功能特性?......
> 对于学习语言(比如C++、Java),大部分人都能够掌握基本的语法和标准库,然后用它写一些小程序(诸如二分查找、冒泡排序、简单文件操作等)。
> 对于学习类库(比如JDBC类库),大部分Java程序员都能明白JDBC主要包含哪些类,也能够用JDBC进行简单的数据库查询和增删改操作。
> 由于这个步骤是最基本的,假如你连这都做不到(可能你的理解力不够好),也别在IT界混了。
> 但是光会What是不够的。仅仅停留在这个步骤,导致了很多程序员*只知其然,不知其所以然*。这就是目前大部分开发人员的现状。
>
> ★第二步:*HOW*
> 所谓的"*HOW*",就是搞清楚某个东西是如何运作的?实现机制如何?等一系列相关问题。
> 举例如下:
> 假如你在学习C++语言,你是否搞明白函数传参数的实现机制?虚函数是如何实现?抛出异常时的栈回退是怎么回事?......
> 假如你在学习Java语言,你是否搞清楚GC如何实现?反射是如何实现?......
> 假如你在学习JDBC库,你是否清楚JDBC Driver的4种类型?不同游标类型的实现机制?事务的机制?......
> 在这个阶段,你必须多想想类似这些问题。然后通过各种途径(参见"关于自学能力<http://program-think.blogspot.com/2009/01/2.html>
> "的几个方法),把问题彻底搞清楚。自然而然,你的提高就会比较明显。而且如果碰到一些深层次的问题(比如性能优化),也就知道该如何解决。
> 完成这个阶段之后,你基本上就属于该技术领域最优秀的20%的人(根据二八原理<http://program-think.blogspot.com/2009/02/80-20-principle-0-overview....>
> ,80%的人不会去思考HOW的问题)。
>
> ★第三步:*WHY*
> 一般来说,只有你把HOW的问题想清楚,才开始考虑步骤WHY。
> 所谓的"*WHY*",就是搞清楚某个东西为什么设计成这样?为什么不是另外的样子?这样的设计有什么讲究?
> 说实在的,善于问"*为什么*
> "有一定的天赋成分?好像某个科学大牛曾经说过"提出问题有时候比解决问题更难"。一般来说,只有当你深刻理解了某个东西,才能够针对这个东东的设计问出一些问-题。所以,我前面强调过,要先把HOW的问题搞清楚,再来考虑WHY的问题。
> 举例如下:
> 对于C++语言:为什么C++没有类似Java的finally关键字?为什么C++当初没有考虑GC?......
> 对于Java语言:为什么Java没有类似C++的类析构函数?为什么Java要同时提供String和StringBuffer两个似乎冗余的类?.....-.
> 如果你能够自己问出诸如上述的"为什么"问题,并且能够通过各种途径找到解答,那你基本上已经吃透这个技术了,并且你已经*有可能*
> 自己去设计一个类似的玩意儿了。到这时,你已经踏上了通向技术高手的康庄大道。
>
> 由于本博客偏重IT方面,所以今天举的这些例子多半都是IT相关的,但是这个三部曲在IT以外的行业/领域其实也能适用,就看读者自己的领悟了。
>
> 转载必须包含本声明、保持本文完整。并以超链形式注明本文原始地址:http://program-think.blogspot.com/2009/02/study-technology-in-three-s...
>
> ----------------
> 编程随想
> program.th...@gmail.comhttp://program-think.blogspot.com
> program.th...@gmail.comhttp://program-think.blogspot.com
赞同你的“老手”和“新手”的观点。
学习,最难的就是这why不好找,也许面对陌生的知识,最好的why就是what了
现在新技术太多了,why we learn so much~??