我要講的,是怎樣做快樂(lè)的程序員。什么是快樂(lè)的程序員呢?就是把編程當(dāng)作興趣和愛(ài)好的人,享受著編程的快樂(lè)的一群人。
優(yōu)秀的程序員都是從快樂(lè)的程序員開(kāi)始的。因?yàn)?,成為?yōu)秀的程序員是需要很長(zhǎng)時(shí)間的磨練的,如果在編程中連快樂(lè)都沒(méi)有,很難熬到優(yōu)秀程序員的。事實(shí)上,做任何事情只要找到了快樂(lè),成功是遲早的事情。
我們每一個(gè)程序員都希望在快樂(lè)的編程中成長(zhǎng)為一名優(yōu)秀的程序員。
一。什么是優(yōu)秀的程序員
先講一個(gè)編程大師的傳說(shuō):
傳說(shuō)在很久很久以前,軟件界出過(guò)一位大師。他能直接用二進(jìn)制編寫(xiě)復(fù)雜高效且無(wú)錯(cuò)的程序;他寫(xiě)過(guò)的機(jī)器碼比我們吃過(guò)的米還要多;他用眼睛看看閃爍的硬盤(pán)燈就知道程序當(dāng)前的運(yùn)行狀態(tài);他用耳朵聽(tīng)聽(tīng)機(jī)器的噪音就可以準(zhǔn)確地判斷出錯(cuò)誤在哪個(gè)模塊的哪一行代碼上。
他寫(xiě)的程序極為精簡(jiǎn),10行代碼就可以頂別人寫(xiě)的100行代碼,且效率更高。他不輕易給人寫(xiě)程序,即使千金也難換來(lái)他的一行代碼。但他一旦開(kāi)始寫(xiě)編碼,那可是瀟瀟灑灑一揮而就,代碼都是一行千金。
他從不困惑于軟件的宏觀體系和微觀結(jié)構(gòu)之中,因?yàn)樗〞攒浖谋驹A(yù)知軟件的未來(lái)。他早已看透軟件世界與現(xiàn)實(shí)世界的本質(zhì),面向?qū)ο笾皇撬┐缶畹奈涔χ械囊惶组L(zhǎng)拳。他能使用所有的軟件開(kāi)發(fā)工具,從CASE工具到DEBUG。傳說(shuō)曾有人親眼看見(jiàn)過(guò)他用一把小刀在硬盤(pán)表面刻寫(xiě)操作系統(tǒng)的一段內(nèi)核。
自他死后,軟件界再也沒(méi)有出現(xiàn)過(guò)真正的大師。世間只殘存一些有關(guān)他的傳奇,一代一代地流傳下去……
可能這個(gè)故事編得太玄了。但在我們的心里卻真希望軟件領(lǐng)域能有這樣的神人,或許夢(mèng)想自己有朝一日也能練出這樣的道行。
大家都知道:軟件是計(jì)算機(jī)的靈魂!
程序員是軟件的創(chuàng)造者,是計(jì)算機(jī)靈魂的工程師。而優(yōu)秀的程序員就是用靈魂書(shū)寫(xiě)代碼的人,他們將自己的生命與軟件機(jī)融為一體,從而讓計(jì)算機(jī)世界充滿生機(jī)和活力。
優(yōu)秀的程序員往往將編程當(dāng)作藝術(shù),對(duì)待自己的每一個(gè)程序,就像對(duì)待自己的藝術(shù)品一樣。優(yōu)秀的程序員總喜歡對(duì)自己的代碼精雕細(xì)琢,他希望自己的代碼都是精品,絕不愿意敷衍了事地將垃圾代碼提供給他人。
優(yōu)秀的程序員大都有很好的人品修養(yǎng)。他們知道自己的長(zhǎng)處,也更加知道自己的短處。在外人眼里他是神,但他自己明白他也是會(huì)犯錯(cuò)誤的人。因此,優(yōu)秀的程序員往往會(huì)在展現(xiàn)實(shí)力的同時(shí),保持著謙虛的美德。偶爾狂妄,那也只是性情中人。
優(yōu)秀的程序員對(duì)計(jì)算機(jī)的本質(zhì)了解很深,喜歡從哲學(xué)上去理解軟硬件的關(guān)系和數(shù)據(jù)代碼的運(yùn)轉(zhuǎn)規(guī)律。有時(shí)候,他們看起來(lái)更像個(gè)思想家,因?yàn)樗麄兿胂窳Ψ浅XS富,小到螞蟻,大到星云,都能聯(lián)系到代碼上。據(jù)說(shuō),他們走在大街上也能敏銳地感覺(jué)到兩旁大樓里各種計(jì)算機(jī)的脈沖跳動(dòng)。
優(yōu)秀的程序員對(duì)新技術(shù)有獨(dú)特的洞察能力。他們的思想非常超前,總能提前做好準(zhǔn)備,迎接新技術(shù)的到來(lái),而不是被新技術(shù)推著走。即使遇到尚未涉足過(guò)的新技術(shù)領(lǐng)域,他們總能很快地把握新技術(shù)的本質(zhì),迅速適應(yīng)該領(lǐng)域的工作,并成為這些技術(shù)的帶頭人。
的確,一名優(yōu)秀的程序員是讓人敬佩和羨慕的。要想成為一名優(yōu)秀的程序員,必須首先要堅(jiān)信自己一定能行。再經(jīng)過(guò)努力地修煉,總有一點(diǎn)你也能成為一名優(yōu)秀的程序員的。
二。程序員的修煉歷程
如果大家都希望成為一名優(yōu)秀的程序員,秘訣只有兩個(gè)字:修煉!
程序員為什么要進(jìn)行修煉呢?先給大家講一個(gè)禪宗小故事,這個(gè)故事也是于丹講過(guò)的:
有一座寺廟的香火很旺,多少年來(lái)人們總踩著那些石階來(lái)到佛像面前進(jìn)香。
終于有一天,石階們不服氣了。
石階對(duì)佛像說(shuō):你和我們都生自同一塊山石,為什么人們總踩在我們的身上,而卻要對(duì)你頂禮膜拜?
佛像淡淡地說(shuō):因?yàn)槟銈冎唤?jīng)過(guò)六刀就到了今天這個(gè)位置,而我卻是經(jīng)過(guò)千刀萬(wàn)剮,才最終成佛。..
同樣,在IT行業(yè)中要想成為一名優(yōu)秀的程序員,必須需要經(jīng)過(guò)千錘百煉,才能最終修煉成佛。事實(shí)上,程序員必須在IT大潮的實(shí)踐中接受改造,不斷取得進(jìn)步,提高自己能力和修養(yǎng)。由一個(gè)幼稚的菜鳥(niǎo),要變成一個(gè)成熟老道的大牛,往往需要經(jīng)過(guò)一個(gè)很長(zhǎng)的修煉的過(guò)程。
首先,要想成為一名優(yōu)秀的程序員,必須要熱愛(ài)編程工作,完全將編程當(dāng)作自己的興趣和愛(ài)好,甚至畢生追求的圣神目標(biāo)。如果你沒(méi)有這樣的想法,只是把編程當(dāng)作工作,最好別做程序員,趁早改行。
許多人說(shuō),編程是非??菰锓ξ兜氖虑?,程序員必須要耐得住寂寞,能忍受孤獨(dú)。但真正的程序員卻感受著編程的快樂(lè),一點(diǎn)都不覺(jué)得孤獨(dú)和寂寞。他們深信硬件的堅(jiān)強(qiáng),享受著軟件的溫柔,在計(jì)算機(jī)世界里,他們個(gè)個(gè)都是情種。
許多人說(shuō),程序員職業(yè)是一碗青春飯,都是20-30歲的年輕人干的。超過(guò)30歲之后呢,就干不動(dòng)了。是這樣嗎?的確,早些年一些目光短淺的軟件企業(yè)確實(shí)為了降低成本,雇傭年輕的低價(jià)程序員來(lái)完成工作。不是老程序員干不動(dòng)了,而是挨踢了,所以程序員就叫挨踢一族。
但是,隨著軟件企業(yè)的不斷成熟,老板們發(fā)現(xiàn)程序的開(kāi)發(fā)和維護(hù)都是長(zhǎng)期的事情。而有經(jīng)驗(yàn)的老程序員編寫(xiě)的代碼更加可靠和簡(jiǎn)潔,系統(tǒng)開(kāi)發(fā)反而會(huì)減少很多麻煩事情,因此總體軟件開(kāi)發(fā)成本反而比雇傭大量年輕程序員要低。不但如此,老程序員而且還能幫企業(yè)帶出一批新人,使得企業(yè)積累的技術(shù)經(jīng)驗(yàn)?zāi)艿玫絺鞒泻桶l(fā)展。
其實(shí),在發(fā)達(dá)國(guó)家的程序員,那可是越老越吃香。現(xiàn)在,國(guó)內(nèi)越來(lái)越多的企業(yè)都愿意招聘有經(jīng)驗(yàn)的老程序員,甚至某些軟件企業(yè)還專(zhuān)招30歲以上的老程序員。越來(lái)越多的軟件企業(yè)認(rèn)識(shí)到,由老中青三代人構(gòu)成的開(kāi)發(fā)團(tuán)隊(duì),才是真正永遠(yuǎn)有戰(zhàn)斗力的團(tuán)隊(duì)。因此,程序員職業(yè)將不再是一碗青春飯,同樣也是可以干一輩子的。
要成為優(yōu)秀的程序員需要有很強(qiáng)的自學(xué)能力,必須不斷地學(xué)習(xí)新技術(shù)和新知識(shí)。除了要學(xué)習(xí)前人的理論和經(jīng)驗(yàn)之外,還必須親自參加到具體的項(xiàng)目中去,在實(shí)踐中運(yùn)用所學(xué)的知識(shí),解決和處理具體問(wèn)題。
只有這樣,他才能夠逐漸地體驗(yàn)和認(rèn)識(shí)編程的規(guī)律性,才能真正深刻地認(rèn)知編程的本質(zhì),才能發(fā)現(xiàn)自己的弱點(diǎn)和原來(lái)不正確的思想、習(xí)慣、成見(jiàn),并加以改正,從而提高自己編程質(zhì)量,改善編程的方法等。
所以,程序員要改造和提高自己,必須參加具體項(xiàng)目,絕不能離開(kāi)工作實(shí)踐。更為關(guān)鍵的是,程序員必須要有自我學(xué)習(xí)和修煉的主動(dòng)性,否則再多的項(xiàng)目實(shí)踐也無(wú)法使自己進(jìn)步。
經(jīng)常會(huì)看到這樣的情況,幾個(gè)程序員一起參加一個(gè)軟件項(xiàng)目。項(xiàng)目結(jié)束之后,有些程序員提高很快,有的進(jìn)步很慢,有的卻原地踏步。這是什么原因呢?
提高較快的程序員大都勤奮好學(xué),喜歡探究編程的規(guī)律,并能逐漸總結(jié)出自己的方法。而進(jìn)步較慢的程序員雖然也勤奮努力,但往往只著眼于具體的代碼,不善于抽象和總結(jié)規(guī)律。而原地踏步的程序員呢,大都是混飯吃的,根本沒(méi)有主動(dòng)學(xué)習(xí)和提高自己的意識(shí)。
程序員不但要修煉自己的技術(shù),還要善于修煉自己的人品。不是說(shuō)編程中的大多數(shù)問(wèn)題都是人品問(wèn)題嗎?當(dāng)然,這里說(shuō)的是程序員性格和人格的修養(yǎng)。
三。程序員的學(xué)習(xí)能力
沒(méi)有哪個(gè)人是天生就會(huì)編程序的。大多數(shù)剛畢業(yè)的學(xué)生走上工作崗位時(shí),常常抱怨學(xué)校教的知識(shí)都派不上用場(chǎng),一切都得重頭學(xué)起。在IT行業(yè),這種現(xiàn)象更加嚴(yán)重,知識(shí)更新的頻度和密度是其他行業(yè)沒(méi)法比擬的。
學(xué)校的時(shí)光也許真的沒(méi)有教給我們多少實(shí)用的知識(shí),但卻教會(huì)我們一個(gè)重要的法寶:自學(xué)能力!既然吃了程序員這碗飯,我們就必須牢記一句話:活到老,學(xué)到老。
學(xué)習(xí)有很多方式,讀書(shū)是最好的學(xué)習(xí)方法,喜歡讀書(shū)的程序員大都是愛(ài)學(xué)習(xí)的人。不過(guò),現(xiàn)在的技術(shù)書(shū)真是太多太雜,我們不可能有太多時(shí)間來(lái)讀書(shū),更不可能讀遍所有的書(shū),需要挑選好書(shū)來(lái)讀。
要挑一本好書(shū)也確實(shí)不容易,因?yàn)楝F(xiàn)在的技術(shù)書(shū)是魚(yú)龍混雜。有優(yōu)秀的精品,有濫竽充數(shù)的;有大家名作,也有誤認(rèn)子弟的。一般來(lái)說(shuō),我們可以購(gòu)買(mǎi)兩種圖書(shū),一種是可以反復(fù)閱讀的精華,另一種是現(xiàn)用現(xiàn)查的資料類(lèi)圖書(shū)。網(wǎng)上購(gòu)書(shū)是個(gè)不錯(cuò)的方式,可以參考銷(xiāo)量排行榜和其他讀者的評(píng)價(jià)。
網(wǎng)上學(xué)習(xí)也是非常不錯(cuò)的方式。只要善于搜索,總能在網(wǎng)上找到需要的文章和資料。最近,人們發(fā)明了一個(gè)新詞叫“搜商”,它衡量人的網(wǎng)絡(luò)使用能力。搜商高的人把網(wǎng)絡(luò)當(dāng)作蘊(yùn)藏寶藏的海洋,他們更能熟練地從垃圾網(wǎng)頁(yè)中淘出自己需要的寶貝。這也可以稱(chēng)作“淘寶能力”,網(wǎng)上學(xué)習(xí)也是需要很強(qiáng)的淘寶能力的。
此外,喜歡做實(shí)驗(yàn)也是非常好的學(xué)習(xí)方式。如果,書(shū)上有例子,不妨親手試試。如果,學(xué)習(xí)中有什么新想法,也不妨馬上試試。因?yàn)?,通過(guò)實(shí)驗(yàn)不但可以加深對(duì)所學(xué)知識(shí)的領(lǐng)悟,還能增加對(duì)技術(shù)的感性認(rèn)識(shí),甚至帶來(lái)某些意想不到的靈感。
喜歡學(xué)習(xí),是一個(gè)程序員最大的優(yōu)點(diǎn)。不過(guò),這學(xué)習(xí)也是大有學(xué)問(wèn)的。再給大家講一個(gè)故事:
孔子曾跟師襄學(xué)琴,師襄就隨手扔給他一首曲子,讓他自已練習(xí)??鬃幽?,把這首曲子都練了十幾天,還是不厭其煩地繼續(xù)練習(xí)。
師襄忍不住了,對(duì)孔子說(shuō):“你可以再換個(gè)曲子練習(xí)了。”
孔子回答說(shuō):“我雖然已熟悉了曲調(diào),但還沒(méi)有把握曲中的韻律?!?/p>
過(guò)了好些天,師襄又說(shuō):“你已把握到曲中的韻律了,可以換曲子練了?!?/p>
誰(shuí)知,孔子又說(shuō):“我還沒(méi)有感受到曲中的人物形象呢。”
又過(guò)了一段時(shí)間,師襄又說(shuō):“你已經(jīng)感受到曲中的人物形象了,可以換曲了!”
孔子還是說(shuō):“我雖已感受到曲中的人物形象,但還沒(méi)有達(dá)到他的心智境界。”
終于有一天,師襄看到孔子神情莊重,器宇非凡,志向高遠(yuǎn),仿佛完全變了一個(gè)人。
還未等師襄開(kāi)口,孔子便說(shuō):“我感悟到了,曲中人物黝黑高大,目光深邃,心懷天下蒼生,真乃王者氣象,此人必定是周文王!”
師襄聽(tīng)罷,大吃一驚,因?yàn)榇饲徒小段耐醪佟?,而他從未?duì)孔子說(shuō)過(guò)!
這是一種怎樣的學(xué)習(xí)精神呢?
這就是一種把知識(shí)學(xué)透的精神!不但要學(xué)習(xí)人家的概念和技巧,還要學(xué)習(xí)方式和方法,更要學(xué)習(xí)人家的思想境界。沒(méi)有那種刨根問(wèn)底的精神,是很難將知識(shí)學(xué)透的。
學(xué)習(xí)就要刨根問(wèn)底!任何事情喜歡刨根問(wèn)底的人,一定能成為優(yōu)秀的程序員!
問(wèn)大家一個(gè)問(wèn)題:Java為什么要取名為Java?
如果你能回答這個(gè)問(wèn)題,你一定喜歡刨根問(wèn)底,我也相信你一定比其他人更加理解Java!
如果你回答不上來(lái),就聽(tīng)我給你講講。
Java一詞來(lái)源于印度尼西亞南端的一個(gè)島名,即爪哇島,那里以盛產(chǎn)咖啡聞名。當(dāng)SUN公司的開(kāi)發(fā)人員在給這種語(yǔ)言取名的時(shí)候,正好喝著爪哇咖啡,于是Java由此得名。
我怎么知道這個(gè)故事呢?不瞞您說(shuō),我從來(lái)就沒(méi)有編過(guò)一句Java的代碼,我那是刻意查過(guò)資料的。如果我要學(xué)Java,我一定要先搞懂Java是怎么來(lái)的,搞懂為什么要發(fā)明Java語(yǔ)言等一系列問(wèn)題,這其實(shí)就是刨根問(wèn)底。
然后,我會(huì)先用記事本寫(xiě)一個(gè)Helloworld程序,看看怎么編譯它,看看它怎么運(yùn)行,需要哪些文件等等。至于語(yǔ)法語(yǔ)義等,編譯器會(huì)告訴我該怎么寫(xiě)。然后邊學(xué)邊做,看書(shū),查資料。實(shí)在搞不明白,我就像大家請(qǐng)教。相信一段時(shí)間下來(lái),我也能編出地道的Java程序。
在學(xué)習(xí)過(guò)程中,我會(huì)以自學(xué)為主,盡量自己解決問(wèn)題。如果拿一些基礎(chǔ)性的問(wèn)題向各位高手請(qǐng)教的話,你們一定會(huì)回答:自己看書(shū)!我要請(qǐng)教各位的問(wèn)題一定是那種雪天裸體360度空翻跪地拜求,書(shū)上沒(méi)講,網(wǎng)上查不到的疑難問(wèn)題。
事實(shí)上,這也是向高手和前輩們請(qǐng)教的學(xué)問(wèn),也是學(xué)習(xí)方式之一。作為編程高手,他們最喜歡幫助那些經(jīng)過(guò)自身實(shí)踐的探索和琢磨,快要入門(mén)但不得要領(lǐng)的人。這時(shí),只需輕輕點(diǎn)化,新手就能體會(huì)到頓悟的快感,而高手也有渡人成佛的成就感。
四。程序員的思想境界
年輕的程序員最喜歡追求新技術(shù)和新潮流,這是無(wú)可厚非的。我們應(yīng)該大力鼓勵(lì)年輕的程序員學(xué)習(xí)新知識(shí),愛(ài)學(xué)習(xí)的都是好同志。
不過(guò),我們不但要學(xué)習(xí)技術(shù)的應(yīng)用,更重要的是學(xué)習(xí)技術(shù)背后所蘊(yùn)含的思想真諦甚至情感境界。一種新技術(shù)的誕生,一種新潮流的興起,往往背后都有理論思想的指導(dǎo)。只有深刻地理解了這些技術(shù)背后的理論思想,才能更好地把握技術(shù)本身。
比如,面向?qū)ο缶幊淌谴蠹叶荚谟玫募夹g(shù)吧。有的程序員已經(jīng)能用C++或Java或C#寫(xiě)一個(gè)類(lèi),定義屬性,編寫(xiě)方法,然后創(chuàng)建一個(gè)對(duì)象,就可以調(diào)用它的方法,操縱它的屬性了。這樣,他也可以編寫(xiě)出面向?qū)ο蟮某绦?。不過(guò),他所看到的只是程序?qū)ο蟆?/p>
深入學(xué)習(xí)和理解面向?qū)ο蟮乃枷胫?,我們就?huì)明白:所有的對(duì)象都是對(duì)現(xiàn)實(shí)世界的抽象,面向?qū)ο缶幊叹褪怯萌祟?lèi)最自然的思維模式來(lái)編寫(xiě)程序。這時(shí),我們看到的分類(lèi)就是現(xiàn)實(shí)世界的門(mén)綱屬科,那些對(duì)象也就成了現(xiàn)實(shí)世界的活物,屬性和方法也就成了他們的性格和活動(dòng)。
這時(shí)候,我們?cè)賹?xiě)面向?qū)ο蟮某绦?,就像?xiě)作文一樣。各種命名都很自然地用到現(xiàn)實(shí)世界的各種名詞,代碼本身就無(wú)需多少注釋?zhuān)驗(yàn)樗鼈兇蠖际亲宰⑨尩?。編?xiě)代碼邏輯,就像編寫(xiě)現(xiàn)實(shí)世界的游戲規(guī)則。整個(gè)程序的思路非常清晰明了,代碼也顯得非常簡(jiǎn)潔優(yōu)雅,運(yùn)行效率也自然會(huì)高些。
因此,學(xué)會(huì)技術(shù)的思想之后會(huì)對(duì)使用技術(shù)的能力產(chǎn)生一個(gè)質(zhì)飛躍,可以更深層次地使用這些技術(shù),而不會(huì)被表現(xiàn)的形式所迷惑。事實(shí)上,只要掌握了面向?qū)ο笏枷氲谋举|(zhì),即使不用面向?qū)ο蟮恼Z(yǔ)言,也能編寫(xiě)有面向?qū)ο笏枷氲某绦?。就好像武林高手用?shù)枝也能玩劍法,雖然樹(shù)枝不是劍,但處處體現(xiàn)劍法的精髓。
學(xué)會(huì)編程思想就足夠了嗎?如果還想更上一層樓,就得追求編程的境界。境界這個(gè)東西很虛,看不見(jiàn)摸不著,但可以從內(nèi)心感覺(jué)得到。這種感覺(jué)有點(diǎn)像心靈相通的默契,若有若無(wú)。編程的境界追求的是人與程序間的心靈相通和情感交融,將自己的身心與程序世界融為一體,與現(xiàn)實(shí)世界融為一體。
編程境界這個(gè)東西的確有點(diǎn)玄,境界這個(gè)東西是因人而異的,每個(gè)人的感悟都不同。就像佛教里的禪的思想,什么是禪呢?禪是需要自己體驗(yàn)的東西,別人說(shuō)的都不算,是不能用語(yǔ)言來(lái)描述的。所謂,不立文字,直指人心。我也是只知皮毛啊。
如果要我說(shuō)什么是禪?一句話:通過(guò)感悟生活,得到生命的快樂(lè)。
編程之禪也就是:通過(guò)感悟編程的真諦,得到編程的快樂(lè)。
編程的境界只有高低之分,而且永遠(yuǎn)沒(méi)有盡頭。當(dāng)你的編程境界到了一定高度,你的思想將會(huì)跳出編程的范疇。你將會(huì)發(fā)現(xiàn),軟件的根本實(shí)際上是哲學(xué)問(wèn)題,很多方面都是和其他科學(xué)相通的。就像現(xiàn)代的量子理論發(fā)展到最后,發(fā)現(xiàn)量子論事實(shí)上是與哲學(xué)相關(guān)的一樣。這個(gè)撤得就遠(yuǎn)了,但是喜歡哲學(xué)思考的程序員一定會(huì)成為一名優(yōu)秀的程序員。
不過(guò),再高的思想境界也得落到實(shí)處。光玩思想境界也不行啊,畢竟大家都在軟件企業(yè)工作,都得道成仙了,誰(shuí)來(lái)編碼呢?
優(yōu)秀的程序員也一定是務(wù)實(shí)的程序員。務(wù)實(shí)就是理論與實(shí)踐相結(jié)合,追求的是完美與現(xiàn)實(shí)的平衡。畢竟理想和現(xiàn)實(shí)是有差距的,我們只有胸懷遠(yuǎn)大理想,面對(duì)殘酷現(xiàn)實(shí)。
前段時(shí)間我還給人講過(guò)一句話:
為了玩刀而上戰(zhàn)場(chǎng)的人大都死于刀下,臨死時(shí)怪自己的刀沒(méi)有選好。
為了殺人而上戰(zhàn)場(chǎng)的人大都成了將軍,臨死時(shí)放下屠刀立地成佛了。
所以,程序員要想成佛,不但要追求編程境界,還要學(xué)會(huì)在殘酷的現(xiàn)實(shí)中拼殺,解決具體的問(wèn)題才行。
五。程序員的協(xié)作能力
現(xiàn)代軟件軟件開(kāi)發(fā),都是多人協(xié)作的大規(guī)模軟件開(kāi)發(fā)。對(duì)于大中型應(yīng)用系統(tǒng),特別是大中型網(wǎng)站系統(tǒng),基本上不會(huì)產(chǎn)生單打獨(dú)斗的軟件英雄了。在現(xiàn)代軟件開(kāi)發(fā)中,將誕生越來(lái)越多的英雄的團(tuán)隊(duì),而我們這些程序員也只能是這個(gè)團(tuán)隊(duì)的一員。
因此,程序員是否具有協(xié)作能力,成了衡量程序員水平的另一個(gè)重要指標(biāo)。成員的協(xié)作能力對(duì)于一個(gè)團(tuán)隊(duì)來(lái)說(shuō),往往比個(gè)人能力更加重要。一個(gè)優(yōu)秀的團(tuán)隊(duì),并不一定要由優(yōu)秀的個(gè)體組成。反過(guò)來(lái),優(yōu)秀的個(gè)體如果缺乏協(xié)作能力,也無(wú)法成就一個(gè)優(yōu)秀的團(tuán)隊(duì)。
溝通交流能力是最基本的協(xié)作能力。什么是溝通交流能力呢?很簡(jiǎn)單,一是能聽(tīng)得懂讀得懂別人的話,二是能準(zhǔn)確表達(dá)自己的思想和看法。不過(guò),這看似簡(jiǎn)單的東西,卻不是人人都會(huì)的。
有的人并不善于傾聽(tīng)別人,常常誤解人家的意思。有的人呢,說(shuō)話都說(shuō)不清楚,腦袋里裝的東西說(shuō)不出來(lái)也寫(xiě)不出來(lái),或者說(shuō)了半天人家無(wú)法理解。
為什么會(huì)出現(xiàn)這樣的問(wèn)題呢?據(jù)我多年的觀察和研究,主要有兩個(gè)原因,一是沒(méi)有耐心,二是沒(méi)把話說(shuō)清楚。什么意思呢?沒(méi)有耐心聽(tīng)人說(shuō)話,又懶得把話說(shuō)清楚。
都說(shuō)傾聽(tīng)別人是一種美德,可有的人就只顧自己說(shuō),喜歡打斷人家說(shuō)話,甚者人家還沒(méi)把話說(shuō)完就否定別人。所以,我說(shuō)溝通應(yīng)該從傾聽(tīng)做起。
我在平常的生活中很喜歡與同事和朋友們交流,他們也都喜歡和我討論問(wèn)題。一些同事和朋友找我解決一些問(wèn)題,我總是耐心得傾聽(tīng),盡力去理解,不斷地點(diǎn)點(diǎn)頭。常常聽(tīng)他們說(shuō)了一半,突然說(shuō):啊,我知道問(wèn)題在哪里了!這種情況我都遇到好多次了。
其實(shí),有的時(shí)候只要做到了耐心的傾聽(tīng),就能解決問(wèn)題。
其次是說(shuō)話不清。這個(gè)說(shuō)話不清并不是指說(shuō)話的聲音不清晰,而是指話中的用詞不清,說(shuō)話的邏輯不清,經(jīng)常使用大量的指代詞。
比如我對(duì)你說(shuō):“點(diǎn)一下這個(gè),就讓它改變顏色?!?,誰(shuí)能聽(tīng)懂我在說(shuō)啥?估計(jì)沒(méi)人能聽(tīng)懂。如果我再說(shuō):“用鼠標(biāo)右鍵點(diǎn)擊一下網(wǎng)頁(yè)上的字體顏色按鈕,就可以讓選中的文本變成相應(yīng)的字體顏色?!?,這下聽(tīng)懂了。
為什么前一句話他家聽(tīng)不懂呢?因?yàn)槲沂÷粤舜罅康脑谧约耗X海中的景象,沒(méi)告訴大家,潛意識(shí)中是以自我為中心的?!斑@個(gè)”、“它”這些代詞只有自己明白指代的是啥,而聽(tīng)者并不清楚,自然聽(tīng)不懂我在說(shuō)什么?
第二句話能聽(tīng)懂,是因?yàn)槲冶M量把每個(gè)腦海中的事物都說(shuō)全把細(xì)節(jié)說(shuō)全。這樣,聽(tīng)者就能很快進(jìn)入角色,大家迅速建立起溝通交流的上下文環(huán)境。一旦這個(gè)交流的上下文環(huán)境建立起來(lái),再使用一些指代詞也就不會(huì)影響溝通過(guò)程了。
其實(shí),這些簡(jiǎn)單的道理不但適用于語(yǔ)言交流,還適用于客戶調(diào)研,需求分析,書(shū)面協(xié)作,等等方面。今后有機(jī)會(huì)再給大家繼續(xù)探討。
協(xié)作能力還有一個(gè)重要的方面,那就是按規(guī)矩辦事。按規(guī)矩辦事就是所謂的規(guī)范化,規(guī)范化是一個(gè)優(yōu)秀的團(tuán)隊(duì)的頭等大事。作為一名有協(xié)作精神的程序員,就必須遵守團(tuán)隊(duì)的規(guī)范。
如果你有個(gè)人英雄主義,那么,對(duì)不起,在你那深刻獨(dú)到的見(jiàn)解沒(méi)有成為團(tuán)隊(duì)認(rèn)可的規(guī)范之前,你必須保留個(gè)人意見(jiàn)。編程的命名規(guī)范,接口形式,注釋要求,開(kāi)發(fā)管理流程,必須要遵守。
接下來(lái)考驗(yàn)一個(gè)人的協(xié)作能力就是:是否有責(zé)任心。也就是對(duì)待自己那部分工作的態(tài)度。說(shuō)得高尚一點(diǎn)兒,就是程序員的職業(yè)美德。責(zé)任心就是對(duì)自己所屬的工作負(fù)責(zé),認(rèn)真對(duì)待自己那部分代碼,甚至象呵護(hù)自己的孩子一樣。其實(shí),責(zé)任心也不是什么沉重的東西,有智慧的程序員總是喜歡將工作當(dāng)作樂(lè)趣,大家不妨試試。
以前有句老話說(shuō),文人相輕,就是文人之間互相瞧不起。事實(shí)上,程序員相輕,也是很普遍的事情。不是經(jīng)常都會(huì)聽(tīng)到程序員說(shuō),那人代碼寫(xiě)得真爛,重構(gòu)人家的代碼還不如自己重寫(xiě)呢。其實(shí),很多情況下,你留下的代碼也常常被人罵。
在一個(gè)團(tuán)隊(duì)中,程序員相輕的現(xiàn)象是會(huì)引發(fā)團(tuán)隊(duì)內(nèi)耗的。而具有協(xié)作精神的程序員對(duì)待其他程序員的代碼,總是有一顆包容的心。他們更愿意通過(guò)改變自己去影響他人,從而讓整個(gè)團(tuán)隊(duì)共同進(jìn)步。
接下來(lái)我再給大家講一個(gè)故事:
再伸手不見(jiàn)五指的崎嶇山路上,有一群結(jié)伴趕夜路的行人。大家都背著自己的行囊,跌跌撞撞地向前走。由于既難分辨前進(jìn)的方向,有看不清前后的行人,不是你踩著我的鞋,就是我捧著你的腰。就這樣,一群人艱難地緩慢前行。
就在這時(shí),有人從行囊里取出一個(gè)燈籠,點(diǎn)亮之后高高舉起。這小小的燈籠無(wú)疑給黑暗中行進(jìn)的人們帶來(lái)了光明。大家借助這微弱的光亮看到了前進(jìn)的方向,看清前后的行人。人群不再跌跌撞撞,從而有序地行進(jìn),大家也加快了前進(jìn)的步伐。
當(dāng)?shù)诌_(dá)目的地之后,人們這才發(fā)現(xiàn)那個(gè)點(diǎn)燈籠的人竟然是個(gè)瞎子。人們都很奇怪,白天和黑夜對(duì)這瞎子來(lái)說(shuō)不都一樣嗎,他干嘛要在黑夜點(diǎn)燈籠呢?正在大家疑惑的時(shí)候,有人說(shuō):他是為了方便大家才點(diǎn)起燈籠的,我們應(yīng)該感謝他才是!
于是,大家都來(lái)到瞎子跟前,感謝他為大家點(diǎn)燈照亮的善心。可瞎子卻不好意思地說(shuō):我這樣做其實(shí)也是為了我自己,因?yàn)槿藗兛偸亲参?,我點(diǎn)起燈籠只是希望大家能看見(jiàn)我,就不會(huì)再撞到我了。
這個(gè)就是禪宗里面有名的“瞎子點(diǎn)燈”的故事,照亮自己也就是照亮了別人!
六。做快樂(lè)的程序員
一開(kāi)始我就說(shuō)過(guò),優(yōu)秀的程序員是從快樂(lè)的程序員開(kāi)始的。
什么是快樂(lè)呢?
快樂(lè),誰(shuí)不知道啊,大家都感受過(guò)快樂(lè)。但快樂(lè)怎么定義呢?
佛說(shuō):快樂(lè) = 現(xiàn)實(shí) / 欲望
什么意思呢?就是快樂(lè)的大小,與現(xiàn)實(shí)條件的多少成正比,與欲望的大小成反比??鞓?lè)就是現(xiàn)實(shí)對(duì)欲望的滿足感,就等于現(xiàn)實(shí)除以欲望。你擁有的現(xiàn)實(shí)條件越多,錢(qián)越多,房越大,車(chē)越好,快樂(lè)就多;你的欲望越大,解決了溫飽就想嬌妻,剛成為白領(lǐng)就想當(dāng)經(jīng)理,個(gè)個(gè)都想成為馬云和比爾蓋茨,現(xiàn)實(shí)滿足不了,你就不快樂(lè)。
當(dāng)然,每個(gè)人追求的目標(biāo)不一樣,就會(huì)有不同的快樂(lè)和痛苦。程序員也一樣,想實(shí)現(xiàn)更多功能,想讓程序跑得更快,現(xiàn)實(shí)世界的軟硬件條件又滿足不了,客戶的需求又變來(lái)變?nèi)ィ_(kāi)發(fā)確實(shí)是一件痛苦的事情。
程序員怎樣使自己快樂(lè)呢?最簡(jiǎn)單的辦法就是“知足常樂(lè)”。知足常樂(lè)就是把欲望控制在現(xiàn)實(shí)條件可以滿足的基礎(chǔ)之上。在編程中呢,就是把功能控制在可以實(shí)現(xiàn)的范圍只能。在軟件工程中呢,就是把用戶需求控制在開(kāi)發(fā)成本和期限之內(nèi)。
當(dāng)然,要做到知足常樂(lè)是很不容易的事情。人們難免會(huì)不被各種欲望引誘,程序員也難免不被新技術(shù)吸引,也總想給客戶提供更加強(qiáng)大的軟件功能。要知道,人的欲望總是無(wú)窮無(wú)盡的,而現(xiàn)實(shí)條件總是有限的。佛說(shuō),有欲望就有痛苦。
削除欲望會(huì)怎樣呢?就是欲望為零。學(xué)過(guò)算術(shù)的人都知道,任何數(shù)除以零,等于無(wú)窮大。當(dāng)欲望為零的時(shí)候,任何一點(diǎn)點(diǎn)現(xiàn)實(shí)的滿足,就能帶來(lái)無(wú)窮的快樂(lè)。這可能就是佛所說(shuō)的極樂(lè)吧,似乎有些道理。
再給大家講一個(gè)禪宗的故事:
古時(shí)候,有個(gè)老婆婆在家里供養(yǎng)一位修行的僧人,那時(shí)候一般家里人都以供養(yǎng)出家人為榮。在被供養(yǎng)三年之后,這位僧人也儼然有些道行。老婆婆想試探一下這位僧人的修為成就,于是特意找來(lái)村里最美的女子來(lái)服侍這位僧人。
當(dāng)花枝招展的美女出現(xiàn)在僧人面前時(shí),他一下就把持不住了,一幅驚慌失措六神無(wú)主的樣子,所有的修為全都費(fèi)了。老婆婆見(jiàn)狀非常生氣,抄起笤帚就將僧人猛打一頓。然后讓他重新修行。
又過(guò)了三年,這位僧人已經(jīng)修煉得體態(tài)安然,任何世俗都不能擾其心。老婆婆又想試探一下他的修為,又找來(lái)那位美女來(lái)服侍僧人。
當(dāng)美女再次出現(xiàn)在僧人面前時(shí),這位僧人紋絲不動(dòng),對(duì)美女視若未見(jiàn)。不管美女如何挑逗他,都不毫不理睬。老婆婆見(jiàn)狀,又抄起笤帚將他痛打一頓,并大罵:沒(méi)想到這三年竟養(yǎng)了一個(gè)行尸走肉。
于是,又過(guò)了三年,僧人終于參透禪機(jī),看起來(lái)卻和普通人一樣了。老婆婆又找來(lái)美女試探他,他卻一點(diǎn)都不害羞,大大方方地行賞起美女來(lái),和美女相談甚歡。這是后的老婆婆才滿意地點(diǎn)點(diǎn)頭說(shuō):你已經(jīng)得道了!
這個(gè)故事很有意思吧?
禪是讓人快樂(lè)的東西。消除欲望固然可以讓人快樂(lè),但只是自己快樂(lè),修的是小乘佛法。但欲望就像雜草,今天除了,明天有會(huì)長(zhǎng),就算用巨石壓住,仍然會(huì)從石頭縫里長(zhǎng)出來(lái)。俗話說(shuō)“斬草除根”,只有除去這欲望之根,才能消除欲望。那么這欲望之根是啥呢?就是“自我”。
大乘佛法就是放下自我,沒(méi)有自我,將自我融入整個(gè)宇宙,去體驗(yàn)生命真正的快樂(lè)。禪不但可以讓自己快樂(lè),還會(huì)給別人帶來(lái)快樂(lè)。因?yàn)榉畔铝俗晕遥筒辉儆心阄抑?,?duì)待他人就和對(duì)待自己一樣。將自己的快樂(lè)帶給他人,就是普度眾生。
同樣在編程之禪的修煉中,也大致會(huì)經(jīng)歷三個(gè)階段。第一個(gè)階段,總是逃不出編程世界的各種誘惑,程序員都被花花世界給搞迷糊了。這個(gè)階段就是“看山是山,看水是水”。
第二個(gè)階段呢,程序員已經(jīng)修得很高的當(dāng)行,對(duì)各種編程思想和概念都了然于心,并不再為之所動(dòng)。這個(gè)階段就是“看山不是山,看水不是水”。
而第三個(gè)階段呢,就是徹底放下了自我,將自己與編程融為一體,和團(tuán)隊(duì)融為一體,和世界融為一體。這時(shí)再看編程世界,就是另一個(gè)生機(jī)勃勃的世界。這個(gè)階段又是“看山還是山,看水還是水”,但山是真正的青山,水也是真正的綠水。
這就是返璞歸真的境界。
大家都知道金庸筆下的老頑童周伯通吧。一生的歷練,什么樣的武功沒(méi)學(xué)過(guò)?什么樣的風(fēng)浪沒(méi)見(jiàn)過(guò)?都不知多大年紀(jì)了?卻始終象一個(gè)孩子般天真爛漫,對(duì)什么事情都好奇,任何時(shí)候都是快快樂(lè)樂(lè)的,最后還長(zhǎng)出了黑頭發(fā)。返璞歸真啊。
其實(shí)呢,我講周伯通是想告訴大家:快樂(lè)的程序員還要有一顆童心。
童心會(huì)使我們對(duì)任何事物都充滿好奇心,這會(huì)讓我們?cè)趯W(xué)習(xí)和探索新知識(shí)的過(guò)程中,充滿無(wú)限的樂(lè)趣。童心會(huì)讓我們把編程當(dāng)作游戲,編程就像玩過(guò)家家,用心呵護(hù)自己的程序。童心讓我們跳出狹隘的自私心,與同事快樂(lè)地相處。充滿童心真是可以為我們帶來(lái)許許多多的快樂(lè),這是快樂(lè)程序員的有一個(gè)秘訣。
-
程序員
+關(guān)注
關(guān)注
4文章
952瀏覽量
29817
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論