是這樣,這幾天,從美國(guó)那邊過(guò)來(lái)幾個(gè)比較有經(jīng)驗(yàn)的同事,因?yàn)橄鄬?duì)來(lái)講,中國(guó)這邊的團(tuán)隊(duì)比較年輕,因此安排了一個(gè)“Open Forum” 的討論會(huì),讓他們與中國(guó)的同事分享一下成長(zhǎng)經(jīng)驗(yàn)。他們一個(gè)是中國(guó)人,清華碩士畢業(yè)后去了美國(guó),有10年的工作經(jīng)驗(yàn)了;一個(gè)是美國(guó)人,有20年的工作經(jīng)驗(yàn)。
其間有一個(gè)人問(wèn)了個(gè)問(wèn)題:“要成為一個(gè)比較資深、優(yōu)秀的技術(shù)人員,你覺(jué)得什么是最重要的?” 這兩位同學(xué)給出了看法基本一致,概括起來(lái)就以下兩點(diǎn):
- Don't treat the code you not own as blackbox
每個(gè)人寫代碼,其所涉及的方面不僅僅是你所”負(fù)責(zé)“的那些模塊,你往往需要從整個(gè)系統(tǒng)的層面來(lái)考慮問(wèn)題:我所依賴的那些模塊是怎么工作的,怎樣正確的使用他們?怎樣高效的使用他們? 以及誰(shuí)依賴于我,我的改動(dòng)會(huì)對(duì)后續(xù)模塊產(chǎn)生什么樣的影響,等等。聽(tīng)起來(lái)蠻簡(jiǎn)單的一個(gè)道理,但要做到其實(shí)并不那么容易。尤其在一個(gè)有幾百的模塊的大系統(tǒng)中。很多人的工作方式是直接發(fā)封信去問(wèn)那個(gè)模塊的owner或者expert,的確很"高效",但是如果你需要長(zhǎng)期在這個(gè)系統(tǒng)中工作,你需要經(jīng)常接觸這些模塊,那么最“高效”方式恐怕是你好好研究一下這些模塊,搞清楚其組成與工作方式,所謂磨刀不誤砍柴工。不要認(rèn)為這與我沒(méi)有直接關(guān)系就可以不管,將其看成一個(gè)"blackbox",其實(shí)在程序員面前,只要你愿意,什么都是“whitebox”,任何程序都沒(méi)有什么magic,只是以最簡(jiǎn)單的規(guī)則與邏輯組合起來(lái)的東西而已。
而最關(guān)鍵的是,只有這樣,你才會(huì)進(jìn)步,你才會(huì)漸漸成為某一領(lǐng)域的專家。不然,正如你所注意到的那樣,有些人在干了N年之后,問(wèn)他整個(gè)系統(tǒng)是怎么工作的,他都說(shuō)不出個(gè)子丑寅卯來(lái)。
- Don't assume, just confirm
假設(shè)害死人,害死你自己,或者害死別人。舉兩個(gè)例子:
1. 在調(diào)試程序的時(shí)候,我們經(jīng)常會(huì)做了自以為是的假設(shè):注冊(cè)表應(yīng)該沒(méi)問(wèn)題吧、DLL數(shù)據(jù)的初始化也不會(huì)出錯(cuò)的,那么會(huì)是消息傳遞出錯(cuò)了嗎? 好像也不會(huì)~~~。 我們一直在思考,卻不去求證,而這所謂的思考,就是假設(shè),然后在自己錯(cuò)誤的假設(shè)下愈行愈遠(yuǎn)。這是害死自己。
2. 作為某一領(lǐng)域的權(quán)威,人家發(fā)信問(wèn)你個(gè)問(wèn)題,你不太確定,于是回道“我覺(jué)得”應(yīng)該是這樣,或者應(yīng)該是那樣,然后人家照你“覺(jué)得”的方式試了一天,不行,然后和你說(shuō)不靈,然后你再“覺(jué)得”一下,繼而又浪費(fèi)人間一天時(shí)間。這是害死別人。
其實(shí)為什么要做這些假設(shè)呢,你完全可以停下來(lái),花個(gè)5分鐘或者10分鐘去確認(rèn)一下,不就什么都o(jì)k了?一步一步踏踏實(shí)實(shí)往前走,才是真正的往前走,依靠在那些浮云般的假設(shè),你始終都在搖晃。而且,正是這一次次的確認(rèn),才構(gòu)成了你真正的經(jīng)驗(yàn),不然,若干年后,你有的只有自己的假設(shè)和別人告訴你的結(jié)論。
其實(shí)做不到這兩點(diǎn)的,關(guān)鍵還是懶:懶得去研究學(xué)習(xí),懶得去確認(rèn)。所以,要成為優(yōu)秀的技術(shù)人員,歸根結(jié)底還是勤奮啊!