來自CU的文章,我覺得很有價值,大家都可以看看的:)
原文:http://bbs.chinaunix.net/viewthread.php?tid=880434&extra=page%3D21
不管是在現(xiàn)實(shí)中還是網(wǎng)上,總遇到一些人再問一些奇怪的問題。很多問題讓大牛
們哭笑不得,總是推薦這些人看一些經(jīng)典的書籍。結(jié)果過了一段時間,其他人的
知識已經(jīng)滄海桑田,不少人成了大牛,大牛們已經(jīng)成了大大牛。這些人還在重復(fù)
著類似的問題。本人不是大牛,但是覺得大牛們在技術(shù)上幫助別人的同時還應(yīng)該
更多的傳播思維方法。如果大牛們沒有時間,那么小弟只好拋磚引玉,談一些不
成熟的見解,同時希望大牛們多提意見,我再把你們的經(jīng)驗(yàn)總結(jié)起來一齊奉獻(xiàn)給
大家。
1)分層思考
在我的同學(xué)中有一個人算是經(jīng)典案例,他學(xué)習(xí)起來很用功,但似乎不管長時間也
沒有氣色。并且常問一些讓人哭笑不得的問題。我花可長時間也無法讓他明白學(xué)
校開的課程到底和實(shí)際的開發(fā)有什么聯(lián)系。有一天我突然發(fā)現(xiàn),我用如何處理以
太網(wǎng)偵來舉例子來說明如何是用C語言的struct的使用他居然就輕易的弄懂了。之
后我總結(jié)出來的結(jié)論是:他在學(xué)習(xí)的時候總是嘗試一次弄清楚涉及的每一個細(xì)節(jié),
結(jié)果就陷入了無窮個疑問中,每次都把自己弄的暈頭轉(zhuǎn)向。
這里引出了一個對于學(xué)習(xí)者最終要也是最基本的思考方法:分層。可以說99%論
壇上的哭笑不得的問題是因?yàn)闆]有分層思考造成的。遇到這樣的人只能先教他們
學(xué)會如何的進(jìn)行分層思考,再向他們推薦學(xué)習(xí)資料。
練習(xí)分層思考其實(shí)非常簡單,你考慮拓?fù)鋾r,就不要考慮數(shù)據(jù)流程,考慮數(shù)據(jù)流
程時就不要考慮存儲,考慮網(wǎng)絡(luò)間的協(xié)議時,就不要考慮一臺機(jī)器上的數(shù)據(jù)是如
何處理的。只要忽略具體的細(xì)節(jié),每次只弄懂和問題相關(guān)的最小的部分。等你全
部弄懂之后,再考慮層次之間的聯(lián)系。經(jīng)常假設(shè)“它就是那個樣子”,跳過一些問
題也是好的方法,當(dāng)你發(fā)現(xiàn)跳過一些問題會加速自己的理解時,這些跳過的問題
往往就是處于不同層次下的,甚至當(dāng)你發(fā)現(xiàn)一些問題是屬于其他層次的時候,問
題本身不復(fù)存在了。
分層思考在讀書的時候是很容易掌握的,因?yàn)榇笈兊臅緛砭蜁每茖W(xué)的方法
向你表述他的思想。難在讀代碼,或者在hacking幾乎沒有教材的技術(shù)的時候,需
要靈活掌握。
2)從整體到局部,從局部到整體
當(dāng)學(xué)會了分層思考后,掌握2)就變得十分簡單了。在每個層次上,很多的問題是
相互獨(dú)立的,將他們歸納出來,如果有必要了解,逐個擊破。很多人會抱怨某某
東西很難,其實(shí)加上分層再劃分之后,逐個解決起來就容易多了。分層是為了獲
得綜覽,劃分局部是實(shí)際解決問題的必要的步驟。
整體到局部的另一個好處是,實(shí)際上你獲得了某個技術(shù)的最小單位。這些最小單
位通常也會被其他的技術(shù)所采納。舉個例子,你了解LDAP時熟悉的FQDN、OID、
realm、BNF等等,在了解電子郵件,HTTP,Keberos的時候也會有用。事實(shí)上劃分
是再自然不過的方法,只是對于初學(xué)者,也許需要特別強(qiáng)調(diào)一下。
此外,有些局部的技術(shù)可能是不需要了解的,比如說UPnP,可能你只有在解決實(shí)
際環(huán)境的問題的時候才需要考慮,雖然它哪里都可以見到,但是你絕大部分情況
可以忽略它,無論是在考慮拓?fù)鋾r,還是在分析代碼時。
3)創(chuàng)造和發(fā)現(xiàn)問題
創(chuàng)造和發(fā)現(xiàn)問題并不一定在你完全掌握了某個技術(shù)之后。而是在1)、2)的前提
下,能夠在學(xué)習(xí)的過程中提出建設(shè)性的問題。這些問題絕大多數(shù)會在學(xué)習(xí)的過程
中自然的獲得答案,少數(shù)會在論壇的討論中得到結(jié)論。如果還有剩下的,那么可
能你發(fā)現(xiàn)了技術(shù)本身存在的缺陷,恭喜你。
事實(shí)上創(chuàng)造和發(fā)現(xiàn)問題的人很少出現(xiàn)“迷惘”,或者找不到“實(shí)踐的途徑和方法”的
情況。如果出現(xiàn)了這種情況,很可能1)、2)的條件都沒有具備。如果1)、2)
都具備了的話,才有下面的方法訓(xùn)練:
多問“如果”。典型的就是在1)時,先問自己,如果是自己會怎樣設(shè)計?把這個問
題從開始保留到結(jié)束。
多問“為什么”。配合“如果”,多問別人為什么這么設(shè)計,并且把讓這個問題貫穿
到整個的學(xué)習(xí)過程。
多問“哪些”,哪些東西是可以替換的?通常配合2),這樣可以發(fā)現(xiàn)實(shí)現(xiàn)同一目
的不同方法,很容易發(fā)現(xiàn)當(dāng)前協(xié)議的不足之處以及更好的解決辦法。
總結(jié)
事實(shí)上通篇的內(nèi)容可以歸納為:不斷的問下面5個問題:What(1)、Which(2、
3)、What if(3)和Why(3)。僅僅是自己的一點(diǎn)不成熟的經(jīng)驗(yàn),而且也寫的比
較匆忙,漏洞很多。希望大家指正,也希望真正牛人們多多介紹自己的經(jīng)驗(yàn),我
會抽出時間來幫助你們整理,然后奉獻(xiàn)給大家。