[转载]学习时注意思考方法——只献给初学者

不管是在现实中还是网上,总遇到一些人再问一些奇怪的问题。很多问题让大牛
们哭笑不得,总是推荐这些人看一些经典的书籍。结果过了一段时间,其他人的
知识已经沧海桑田,不少人成了大牛,大牛们已经成了大大牛。这些人还在重复
着类似的问题。本人不是大牛,但是觉得大牛们在技术上帮助别人的同时还应该
更多的传播思维方法。如果大牛们没有时间,那么小弟只好抛砖引玉,谈一些不
成熟的见解,同时希望大牛们多提意见,我再把你们的经验总结起来一齐奉献给
大家。

1)分层思考
在我的同学中有一个人算是经典案例,他学习起来很用功,但似乎不管长时间也
没有气色。并且常问一些让人哭笑不得的问题。我花可长时间也无法让他明白学
校开的课程到底和实际的开发有什么联系。有一天我突然发现,我用如何处理以
太网侦来举例子来说明如何是用C语言的struct的使用他居然就轻易的弄懂了。之
后我总结出来的结论是:他在学习的时候总是尝试一次弄清楚涉及的每一个细节,
结果就陷入了无穷个疑问中,每次都把自己弄的晕头转向。

这里引出了一个对于学习者最终要也是最基本的思考方法:分层。可以说99%论
坛上的哭笑不得的问题是因为没有分层思考造成的。遇到这样的人只能先教他们
学会如何的进行分层思考,再向他们推荐学习资料。

练习分层思考其实非常简单,你考虑拓扑时,就不要考虑数据流程,考虑数据流
程时就不要考虑存储,考虑网络间的协议时,就不要考虑一台机器上的数据是如
何处理的。只要忽略具体的细节,每次只弄懂和问题相关的最小的部分。等你全
部弄懂之后,再考虑层次之间的联系。经常假设“它就是那个样子”,跳过一些问
题也是好的方法,当你发现跳过一些问题会加速自己的理解时,这些跳过的问题
往往就是处于不同层次下的,甚至当你发现一些问题是属于其他层次的时候,问
题本身不复存在了。

分层思考在读书的时候是很容易掌握的,因为大牛们的书本来就会用科学的方法
向你表述他的思想。难在读代码,或者在hacking几乎没有教材的技术的时候,需
要灵活掌握。

2)从整体到局部,从局部到整体
当学会了分层思考后,掌握2)就变得十分简单了。在每个层次上,很多的问题是
相互独立的,将他们归纳出来,如果有必要了解,逐个击破。很多人会抱怨某某
东西很难,其实加上分层再划分之后,逐个解决起来就容易多了。分层是为了获
得综览,划分局部是实际解决问题的必要的步骤。

整体到局部的另一个好处是,实际上你获得了某个技术的最小单位。这些最小单
位通常也会被其他的技术所采纳。举个例子,你了解LDAP时熟悉的FQDN、OID、
realm、BNF等等,在了解电子邮件,HTTP,Keberos的时候也会有用。事实上划分
是再自然不过的方法,只是对于初学者,也许需要特别强调一下。

此外,有些局部的技术可能是不需要了解的,比如说UPnP,可能你只有在解决实
际环境的问题的时候才需要考虑,虽然它哪里都可以见到,但是你绝大部分情况
可以忽略它,无论是在考虑拓扑时,还是在分析代码时。

3)创造和发现问题
创造和发现问题并不一定在你完全掌握了某个技术之后。而是在1)、2)的前提
下,能够在学习的过程中提出建设性的问题。这些问题绝大多数会在学习的过程
中自然的获得答案,少数会在论坛的讨论中得到结论。如果还有剩下的,那么可
能你发现了技术本身存在的缺陷,恭喜你。

事实上创造和发现问题的人很少出现“迷惘”,或者找不到“实践的途径和方法”的
情况。如果出现了这种情况,很可能1)、2)的条件都没有具备。如果1)、2)
都具备了的话,才有下面的方法训练:

多问“如果”。典型的就是在1)时,先问自己,如果是自己会怎样设计?把这个问
题从开始保留到结束。
多问“为什么”。配合“如果”,多问别人为什么这么设计,并且把让这个问题贯穿
到整个的学习过程。
多问“哪些”,哪些东西是可以替换的?通常配合2),这样可以发现实现同一目
的不同方法,很容易发现当前协议的不足之处以及更好的解决办法。

总结
事实上通篇的内容可以归纳为:不断的问下面5个问题:What(1)、Which(2、
3)、What if(3)和Why(3)。仅仅是自己的一点不成熟的经验,而且也写的比
较匆忙,漏洞很多。希望大家指正,也希望真正牛人们多多介绍自己的经验,我
会抽出时间来帮助你们整理,然后奉献给大家。

时间: 2024-10-29 15:20:26

[转载]学习时注意思考方法——只献给初学者的相关文章

SEO学习时要讲究方法以及策略

摘要: 2012年互联网站长大会过去有些日子了,想想雷军.李国庆他们真的很成功,一个创造了中国手机行业的神话,一个期盼市值到达100亿美元,他们的互联网之旅让我很羡慕.不可否认,今 2012年互联网站长大会过去有些日子了,想想雷军.李国庆他们真的很成功,一个创造了中国手机行业的神话,一个期盼市值到达100亿美元,他们的互联网之旅让我很羡慕.不可否认,今年的互联网站长大会让更多的新手感受到了网络的诱惑力,为此他们开始了自己的站长生涯,这其中大家涉及做多的可能是SEO了. 由于互联网在我们周边迅速的

姚伟:新人学习网络营销的方法和技巧总结

中介交易 SEO诊断 淘宝客 云主机 技术大厅 随着互联网技术发展的成熟以及互联网成本的低廉,网络营销逐渐成为一个热门行业,众多新人蜂拥而至,如饥似渴的学习,但笔者发现很多人的学习效果并不是很理想,今天笔者就来和大家探讨几个学习网络营销的一些方法和技巧,希望对一些新人会有帮助. 一.明确目的把握重点 要明确自己学习网络营销的目的是什么,你要干什么,只有明确了目的,才能找到侧重点,继而着重的进行学习.比如说你是为了找工作来学习网络营销,那么你可以把重点放在网络推广方法.网络营销方法还有SEO上.再

学习JavaScript的最佳方法分享_基础知识

学习新的东西是件可怕的事.对我来说,掌握一项新技能最大的问题是,我不知道自己懂什么.鉴于此,定个计划,学习你感兴趣的东西应该会有用.这篇文章的主旨就是:你为学习JavaScript 制定的蓝图.路线.行动计划!你不必担心找不到最好的资源,先整理些不好的资源,再确定下一步该学什么.遵循它,一步一步来. 任务0:了解什么是JavaScript 在你真正开始学习JavaScript 之前,花一分钟了解一下什么是JavaScript,它有哪些功能. JavaScript不是jQuery.Flash或Ja

wxWidgets初学者导引(4)——wxWidgets学习资料及利用方法指导

wxWidgets初学者导引全目录   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxSmith进行可视化设计附:学习材料清单 4 wxWidgets学习资料及利用方法指导 初学者常苦于找不到参考资料.实际上,是找不到,不是没有.真正有用的资料,常常也就在手边,只是不知道.有能力熟练地使用一切能用得着的资料,这是水平提高的指标之一.这种能力,同样,也是在实践中获得,而不是有谁为你讲一堂课就能得

学习JavaScript的最佳方法

学习JavaScript的最佳方法        学习新的东西是件可怕的事.对我来说,掌握一项新技能最大的问题是,我不知道自己懂什么.鉴于此,定个计划,学习你感兴趣的东西应该会有用.这篇文章的主旨就是:你为学习JavaScript 制定的蓝图.路线.行动计划!你不必担心找不到最好的资源,先整理些不好的资源,再确定下一步该学什么.遵循它,一步一步来. 任务0:了解什么是JavaScript       在你真正开始学习JavaScript 之前,花一分钟了解一下什么是JavaScript,它有哪些

activity-当旋转移动设备时,onCreate方法被重复调用

问题描述 当旋转移动设备时,onCreate方法被重复调用 在Main Activity 里的 onCreate() 方法中调用一个 AsyncTask.在同一个 Activity 中,如果方向改变后,AsyncTask 被再次调用.如何调整程序来阻止 AsyncTask 被再次调用呢? public class Main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.on

thinkphp-在跟着后盾网ThinkPHP学习时Widget拓展库出现问题

问题描述 在跟着后盾网ThinkPHP学习时Widget拓展库出现问题 这里是试验的代码,然后又一个right.html中运用了W方法 然后网页显示正常 然后让$data return出来 就出现问题了 所有的css,js都用不了了,而且报错,不知道为什么会出现这种问题,return那一截也查了TP手册,但是没发现什么不妥,但是就是在这出现了这种问题,求大神解答

tomcat开启时运行某方法

问题描述 在网上查了下结果分为俩种,一种是创建一个servlet然后用into()方法执行想要执行的方法,第二种是使用web.xml中的listener标签来完成,首先第一种方法在运行时直接把想要执行的方法执行了俩遍,第二种是在运行时想要执行的方法只执行一遍(如果server.xml中有多个host则想要执行的方法会执行多次)而把这种方法拿到服务器上同样的server.xml文件想要执行的方法还是会执行俩遍,不知道从哪些地方找问题原因所以把在自己电脑和在服务器上启动tomcat的日志文件截图,麻

关于有默认值的字段在用EF做插入操作时的思考

原文:关于有默认值的字段在用EF做插入操作时的思考 今天在用EF做插入操作的时候发现数据库中一个datetime类型的字段(CreateDate)的值居然全部为null.于是赶紧看表结构发现CreateDate字段居然是允许为空的. 虽然为空,但是设置了默认值getdate(),按说不应该为null的.于是开始测试. 字段允许Null值的情况 Users表结构如下: 假如一个字段有了默认值,并且又允许为Null,在做插入操作时会发生什么? 如上图中的表结构,CreateDate是允许为null的