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