文 / 李戰(zhàn)
程序員都知道:絕大多數(shù)編程中的問(wèn)題,最終都是自己的人品問(wèn)題。當(dāng)遇到奇怪的問(wèn)題時(shí),我們總是喜歡懷疑系統(tǒng)、懷疑編譯器、懷疑網(wǎng)絡(luò)、懷疑硬 件……就是不愿意懷疑自己的人品。熬過(guò)幾個(gè)不眠之夜后,最終還是發(fā)現(xiàn)自己的代碼存在人品問(wèn)題。只有極少數(shù)的情況才是系統(tǒng)的問(wèn)題。 同樣,一些程序員在職業(yè)發(fā)展中遇到問(wèn)題時(shí),也總是喜歡懷疑公司不好,懷疑戰(zhàn)略有問(wèn)題,懷疑流程制度不合理,懷疑老板和同事……就是不愿意懷 疑自己的人品。 在大大小小的IT企業(yè)中,總能看到一些技術(shù)并非最頂尖的程序員做成大事的例子,也總看到一些技術(shù)牛人被埋沒(méi)而不能一展才華的現(xiàn)象。我想,除 了機(jī)遇之外,還有一個(gè)很重要的因素,那就是:程序員的人品問(wèn)題! 當(dāng)然,這所說(shuō)的“人品”,依然是調(diào)侃的說(shuō)法,并非指道德問(wèn)題。其實(shí),人品問(wèn)題指的是程序員的軟實(shí)力。如果將程序員的編程技能稱為硬實(shí)力,那 么編程技能之外的東西統(tǒng)統(tǒng)可以稱為軟實(shí)力。不容置疑,編程技能是一個(gè)優(yōu)秀程序員必須具有的硬實(shí)力,對(duì)程序員的職業(yè)發(fā)展起著最直接的作用,但程序員的軟實(shí)力 同樣不可忽視。 如何修煉自己的人品呢?我想談?wù)勛约旱囊恍┙?jīng)驗(yàn)和教訓(xùn)。
程序員相輕 在長(zhǎng)期與程序員打交道的過(guò)程中,發(fā)現(xiàn)大多數(shù)程序員和我一樣,喜歡以自我為中心,特別是年輕的程序員。也許我的觀察可能不完全正確,但從許多 程序員的言談舉止中,確實(shí)可以感受到我曾經(jīng)的浮躁心態(tài)。 喜歡以自我為中心的人,往往會(huì)自以為是,并按自己的思路和想法行事,不太愿意聽(tīng)取別人的想法和意見(jiàn)。同時(shí),這樣的人,性格相對(duì)內(nèi)向,喜歡沉 浸在自戀和自負(fù)的虛幻空間里,其他人的思想都看不上。當(dāng)兩個(gè)都很自我的程序員相遇時(shí),他們不是互相傾聽(tīng)和學(xué)習(xí)對(duì)方的優(yōu)點(diǎn),而更喜歡找對(duì)方的缺點(diǎn),從而顯擺 自己的優(yōu)勢(shì)。這就是所謂“程序員相輕”現(xiàn)象! 不知道各位程序員是否存在程序員相輕的心態(tài),反正以前的我經(jīng)??床黄饎e的程序員,甚至還看不起那些德高望重的老前輩。能被我欣賞的程序員更 是寥寥無(wú)幾。同事編寫的代碼在我眼里就是小兒科,或者干脆就是垃圾。我認(rèn)識(shí)許多過(guò)來(lái)的程序員,那些曾經(jīng)很自我,但現(xiàn)已放下,從而瀟灑編程的程序員。他們現(xiàn) 在都在一些公司的團(tuán)隊(duì)里擔(dān)當(dāng)重要角色,但據(jù)他們反映,“程序員相輕”的現(xiàn)象在IT企業(yè)里是普遍存在的。 現(xiàn)在的軟件開(kāi)發(fā),大都需要團(tuán)隊(duì)協(xié)同來(lái)完成的。團(tuán)隊(duì)作戰(zhàn)是需要團(tuán)隊(duì)每一個(gè)程序員相互信任和尊重,將分散的力聚在一起形成合力,從而攻克一個(gè)又一個(gè)的項(xiàng)目工 程。如果一個(gè)團(tuán)隊(duì)中的程序員相輕現(xiàn)象嚴(yán)重,團(tuán)隊(duì)中的成員就會(huì)從相互爭(zhēng)論演變成相互指責(zé),逐漸失去成員間的相互信任和尊重,內(nèi)耗日漸嚴(yán)重。最終,團(tuán)隊(duì)的力量 就四分五裂,大家并不向同一個(gè)方向使力,整個(gè)團(tuán)隊(duì)將變得毫無(wú)戰(zhàn)斗力。 我想,對(duì)于程序員的職業(yè)發(fā)展來(lái)說(shuō),要過(guò)的第一個(gè)坎就是克服“程序員相輕”的心態(tài)。只有修正了這一人品問(wèn)題,才能將自己的思想從狹隘封閉的自 我空間中解放出來(lái),才能踏上一條寬廣的職業(yè)發(fā)展之路。那么,克服程序員相輕的心態(tài)很難嗎?其實(shí)不難!很簡(jiǎn)單:放下自我! 世界上最難戰(zhàn)勝的對(duì)手就是“自我”,而世界上最重的包袱也是“自我”。因?yàn)樽晕遥吮刈詰?,心必自私,行必自?fù),榮必自欺,敗必自卑。程序 員相輕這一最大的人品問(wèn)題,就是因?yàn)樘晕?。如果敢說(shuō)“我的人品沒(méi)問(wèn)題”,那就得先放下自我。自我放下啦,人品問(wèn)題也就放下啦。既然這樣,我們何不將這沉 重的包袱放下,讓心靈輕松自由起來(lái)的呢?
溝通交流 大多數(shù)程序員是比較含蓄的。比起復(fù)雜的人際交往,我們更喜歡單純的技術(shù)工作。因此,在與人交流的時(shí)候,程序員會(huì)表現(xiàn)出兩方面的不適應(yīng):一是 不善于傾聽(tīng);二是不善于表達(dá)。其實(shí),我以前也是這樣。在聽(tīng)別人講話時(shí)喜歡默不作聲,而心里總盤算自己的思路。輪到我講話的時(shí)候,卻不能有效地表達(dá)自己的思 想,講的話很難讓人理解。有時(shí)候,又喜歡打斷別人講話,將自己的觀點(diǎn)強(qiáng)加于人,也不管是否聽(tīng)懂對(duì)方的意思,就大加指責(zé),甚至出言不遜。 溝通交流障礙是大多數(shù)程序員普遍存在的另一個(gè)人品問(wèn)題。而在團(tuán)隊(duì)協(xié)作中免不了相互溝通,如果一個(gè)程序員在溝通方面存在障礙,是很難融入團(tuán)隊(duì) 開(kāi)發(fā)工作的。因此,程序員應(yīng)該努力提升自己的溝通能力,修煉溝通交流方面的人品。當(dāng)然,提升自己的溝通能力,并不是要求我們練成辯論家的口才,只要能做到 有效地傾聽(tīng)和有效地表達(dá)就已經(jīng)足夠了。 其實(shí),做到有效的傾聽(tīng)還是比較容易的,特別是當(dāng)對(duì)方的表達(dá)能力很強(qiáng)的時(shí)候,我們只需要靜下心來(lái)認(rèn)真傾聽(tīng)即可。即使不是很容易聽(tīng)懂別人的話, 就多問(wèn)問(wèn),請(qǐng)對(duì)方再講講。反正,一定要先理解別人的意思,才表達(dá)自己的意見(jiàn)。或許在你看來(lái)別人的想法是錯(cuò)的,不妨先讓人家把話說(shuō)完。沒(méi)準(zhǔn)等人家說(shuō)完之后, 你會(huì)發(fā)現(xiàn)原來(lái)自己錯(cuò)啦;即使自己沒(méi)錯(cuò),也能可能理解錯(cuò)了人家這樣想的原委。理解是從傾聽(tīng)開(kāi)始的,認(rèn)真傾聽(tīng)體現(xiàn)了對(duì)人的尊重。設(shè)身處地想想,如果是你在發(fā)言 時(shí),是否希望人家都能認(rèn)真傾聽(tīng)你的心聲,理解你的思想呢?那么,在別人發(fā)言時(shí),我們?yōu)槭裁淳妥霾坏秸J(rèn)真傾聽(tīng)呢? 然而,傾聽(tīng)的目的是為了理解別人的想法。一些人默不作聲,貌似在聽(tīng)人家講話,實(shí)際上想著別的事情;而一些人卻是不懂裝懂,假裝點(diǎn)頭,讓人家 誤以為聽(tīng)懂了。對(duì)于有效的溝通來(lái)說(shuō),這些現(xiàn)象不但沒(méi)有好處,反而會(huì)帶來(lái)更多壞處。問(wèn)題得不到解決,隱患埋藏得更深。因此,傾聽(tīng)就要認(rèn)真仔細(xì)的聽(tīng),努力從講 述者的思緒去理解問(wèn)題,真正理解別人的想法。懂就懂,不懂就不懂,千萬(wàn)別不懂裝懂。不管你是菜鳥(niǎo)還是大牛,多問(wèn)問(wèn),沒(méi)人會(huì)瞧不起你! 相對(duì)來(lái)說(shuō),做到有效地表達(dá)會(huì)難些。很多程序員會(huì)有這種感覺(jué),讓我寫代碼容易,讓我說(shuō)出來(lái)就難。只可惜,代碼是寫給機(jī)器的,溝通交流面對(duì)的卻 是人。因此,提升語(yǔ)言表達(dá)能力也是非常重要的,除非你不打算與人打交道。 其實(shí),在語(yǔ)言表達(dá)方面還是有一些簡(jiǎn)單的原則可以借鑒的。首先,要記住,不管怎樣講,要把握得住講話的邏輯線索;其次,先講背景,建立起溝通 的上下文,再講具體的細(xì)節(jié);然后,在講解中穿插關(guān)鍵詞語(yǔ)的簡(jiǎn)短解釋。相信這樣講解是可以讓許多人理解的。這就好像編程,得有完整的邏輯主線,得有上下文, 還得有變量定義,等等。 另外,在講話時(shí)盡量少用指代詞,就是少用“這個(gè)”、“那個(gè)”、“它”等詞語(yǔ)。不妨直接說(shuō)出這些指代詞背后的真正名詞,不過(guò)是多說(shuō)幾個(gè)字而 已,但聽(tīng)者更容易準(zhǔn)確地知道你指的什么。比如,你向別人請(qǐng)教時(shí)說(shuō)“這個(gè)東西有問(wèn)題,你知道原因嗎”,人家一定會(huì)反問(wèn)“什么東西”。但如果你說(shuō) “Memcached命中率有問(wèn)題,你知道什么原因嗎”,人家就可以立即開(kāi)始思考問(wèn)題的原因啦。盡管在你的頭腦里“這個(gè)東西”指的就是 “Memcached命中率”,但人家并不清楚。這就好像編程時(shí)對(duì)變量命名一樣,相信編程經(jīng)驗(yàn)豐富的你基本上不用a、b、c這樣的通用名字,一定會(huì)用 bufferSize、totalAmount、lastChild等等讓人一眼就能明白的單詞。那么,既然你能在編程中可以養(yǎng)成良好的命名習(xí)慣,為什么 不能在語(yǔ)言表達(dá)中也養(yǎng)成良好的命名習(xí)慣呢? 程序員如果把溝通交流的人品修煉好了,保證你的職業(yè)發(fā)展會(huì)駛上快車道。
協(xié)作能力 我以前喜以歡單打獨(dú)斗。如果我不能掌控全部代碼,我寧愿不做;或者動(dòng)不動(dòng)就把本該人家寫的代碼也寫一份,搞得別人很沒(méi)面子。后來(lái)我知道,就 算我是千里碼,日編千行,夜編八百,也很難獨(dú)自完成現(xiàn)代的大型系統(tǒng)開(kāi)發(fā)。在現(xiàn)代的軟件企業(yè)里,協(xié)作能力也是對(duì)程序員人品的重要考驗(yàn),我們應(yīng)該努力提高在協(xié) 作方面的人品。 首先,提高協(xié)作能力要善于分清責(zé)任和義務(wù)。其實(shí),這個(gè)很簡(jiǎn)單,就是根據(jù)大家約定的分工做事情,該誰(shuí)做的就由誰(shuí)做,該誰(shuí)擔(dān)責(zé)任的就誰(shuí)擔(dān)責(zé)任。 不要盲目做事,更不要隨意插手人家的事情。程序員應(yīng)該牢記自己的責(zé)任,切實(shí)履行自己承擔(dān)的義務(wù)。只有這樣,才能贏得同事們的尊重和信任。其實(shí),對(duì)一個(gè)有戰(zhàn) 斗力的團(tuán)隊(duì)來(lái)說(shuō),不但需要忠實(shí)履行義務(wù)的成員,更需要敢于承擔(dān)責(zé)任的成員! 其次,就是要隨時(shí)了解和關(guān)心別人在做什么。我以前喜歡悶頭做事情,守好自己的一畝三分地,其他的都不聞不問(wèn)。這對(duì)于協(xié)作開(kāi)發(fā)來(lái)說(shuō)是非常不好的。在一個(gè)協(xié)作 的團(tuán)隊(duì)中,不了解別人在做什么,自己的事情也肯定做不好。分清責(zé)任和義務(wù),并不是說(shuō)可以不了解和關(guān)心他人的事情,千萬(wàn)別為了分清責(zé)任和義務(wù)而走極端。 最后,就是做事要積極和靈活。在這一點(diǎn)上,可以說(shuō)是仁者見(jiàn)仁,智者見(jiàn)智,修煉起來(lái)確實(shí)需要些悟性的。做事積極主動(dòng)相對(duì)比較容易,看到團(tuán)隊(duì)的 問(wèn)題主動(dòng)提出來(lái),并從自我做起加以解決;對(duì)于沒(méi)人承擔(dān)或誰(shuí)都不愿做的事情,試著去做做;自己取得了成果,主動(dòng)與大家分享一下;別人的工作有了進(jìn)展,多多鼓 勵(lì)和支持一下。不過(guò),做事靈活就更不容易把握,這要求既能成事,又不失原則。這種人品只有在摸爬滾打中才能修煉出來(lái),就看大家的悟性啦。
職業(yè)修養(yǎng) 毋庸置疑,程序員是一種職業(yè)。一些人是因?yàn)樯娑x擇了做程序員,一些人是因?yàn)榕d趣愛(ài)好而選擇了做程序員。可能大多數(shù)程序員和我一樣,既是 為了生存,也是喜歡編程,所以選擇了做程序員。不管怎樣,吃了程序員這碗飯,就得對(duì)得起程序員這一職業(yè)。既然程序員是一種職業(yè),那就有職業(yè)化的要求。一名 程序員是否具有職業(yè)化的修養(yǎng),可能是企業(yè)老板最關(guān)注的人品指標(biāo)。 職業(yè)化與專業(yè)化有很大不同。我們常常會(huì)稱贊某人很專業(yè),說(shuō)的是這個(gè)人有某方面的專長(zhǎng)。某方面的事情他是專家,他也很愿意去做那些事情。這叫 著專業(yè)化。 職業(yè)化首先要求我們要有專業(yè)的技能,除此之外,還要求我們有職業(yè)的態(tài)度、職業(yè)的意識(shí)和職業(yè)的道德。工作中的事情,并不每一件都是你喜歡和擅 長(zhǎng)的,但你也得去做。簡(jiǎn)而言之,專業(yè)化就是“將喜歡的事情做得很好”,而職業(yè)化就是“將交給你的事情當(dāng)作喜歡的事情,并將事情做好”! 我承認(rèn),和大多數(shù)程序員一樣,我也想加入核心技術(shù)團(tuán)隊(duì),也喜歡做創(chuàng)新性的工作,喜新厭舊,不想干編程中的體力活。但在一個(gè)企業(yè)里,不可能人 人都參加核心技術(shù)開(kāi)發(fā),修建軟件大廈總要有一些人會(huì)去做施工隊(duì),去干搬磚頭的體力活。于是,當(dāng)有工作交代下來(lái)的時(shí)候,如果不是我喜歡和擅長(zhǎng)的,也只好硬著 頭皮去做,不情愿的牢騷只能暫時(shí)憋在心頭。當(dāng)然,既然接了這單子的買賣,也就想盡辦法努力去做好,一來(lái)是要面子,二來(lái)是怕將來(lái)留下麻煩。多年下來(lái),也逐漸 在一些不喜歡和不擅長(zhǎng)的工作中找到快樂(lè)和成就感。后來(lái)才明白,這就叫職業(yè)化。 另外,項(xiàng)目開(kāi)發(fā)團(tuán)隊(duì)中最怕出現(xiàn)情緒化的程序員。尤其是在核心開(kāi)發(fā)工作中,情緒化的程序員無(wú)疑就是整個(gè)項(xiàng)目的定時(shí)炸彈。盡管這樣的程序員可能有著極高的專業(yè) 化造詣,一旦項(xiàng)目客觀要求發(fā)生變化,與其原來(lái)的喜好和理想不符的時(shí)候,他們就可能就會(huì)產(chǎn)生抵觸情緒,甚至干脆撂挑子不干啦。其實(shí),情緒化是不成熟的表現(xiàn), 更是缺乏基本的職業(yè)修養(yǎng)。想想自己過(guò)去也曾有過(guò)類似的表現(xiàn),如今想來(lái)真是可笑啊。 其實(shí),做到職業(yè)化也沒(méi)那么難,只需要樂(lè)觀的心態(tài)和那么一點(diǎn)點(diǎn)犧牲精神。既然工作和納稅一樣是無(wú)法避免的,我們何不快樂(lè)面對(duì)工作。既然這件事 情總得有人做,犧牲一下又何妨,權(quán)當(dāng)行善嘛。當(dāng)然,要做就得做好,得有那么一股勁。讓我干體力活,我就權(quán)當(dāng)鍛煉,即使讓我掃地,我也要比別人掃得干凈!這 樣才能在工作中找到快樂(lè)和成就感。在職業(yè)生涯中,也許會(huì)失去某些東西,但也會(huì)得到某些東西。 有職業(yè)化修養(yǎng)的程序員在企業(yè)和團(tuán)隊(duì)里是值得信賴和讓人放心的,將這樣的人放到重要和核心的技術(shù)項(xiàng)目中將是項(xiàng)目成功的有力保障。因?yàn)?,不管?xiàng) 目需求如何變化,不管技術(shù)方案如何調(diào)整,有職業(yè)化修養(yǎng)的程序員都會(huì)認(rèn)真做好需要的每一件事情,這可以有效地保證企業(yè)和團(tuán)隊(duì)的整體利益和目標(biāo)。因此,想要你 的職業(yè)發(fā)展一帆風(fēng)順,一定要修煉職業(yè)化人品!
尾聲 是否能認(rèn)識(shí)到人品問(wèn)題,關(guān)鍵看自己,是否打算修煉人品,關(guān)鍵也要看自己,外人是幫不了的。哲學(xué)家說(shuō),外因?qū)κ挛锇l(fā)展的影響有限,而內(nèi)因才是 推動(dòng)事物發(fā)展的根本因素。所以,如果程序員自己不愿意修煉自己的人品,無(wú)論外人如何苦口婆心都是沒(méi)用的,反而會(huì)讓他覺(jué)得你討厭。 人必須要自己經(jīng)歷了一些事情,才會(huì)有切身的體會(huì)。面對(duì)問(wèn)題,如果開(kāi)始從自身找原因啦,也就是緣份的開(kāi)始。當(dāng)苦苦求索,而不得其解時(shí),也就是 機(jī)緣到啦。某一天,自己突然想明白啦,或者偶遇高人點(diǎn)化,心中突然豁然開(kāi)朗,就是頓悟。頓悟之后才發(fā)覺(jué)原來(lái)一切都很簡(jiǎn)單,以前純粹是自尋煩惱。程序員不就 是那么回事兒嘛!從此,我們就可以輕松瀟灑地做程序員啦。 但要記住,程序員還是程序員!別修煉了半天人品,修成了專家,成了辯論家,成了哲學(xué)家,成了思想家,就是不會(huì)編程啦。如果大家都得道成仙 了,誰(shuí)來(lái)干活呢?當(dāng)然,因?yàn)槟愕牡佬懈?,大家希望把你供起?lái),但千萬(wàn)別自己把自己供起來(lái)。真的,程序員修煉人品,不是為了擺脫編程工作,而是為了找到編程 的快樂(lè)。 有一位大和尚曾對(duì)我說(shuō):真正的快樂(lè)不在于你擁有多少,而在于你付出了多少!如果你將每一件事都當(dāng)善事來(lái)做,心就會(huì)快樂(lè)。所以我想,行善從編 程開(kāi)始好啦……
李戰(zhàn),阿里軟件的老頑童,資深架構(gòu)師。有近20年的軟件開(kāi)發(fā)經(jīng)驗(yàn),屬最老一代程序員之一。早年從硬件設(shè)計(jì)與開(kāi)發(fā),后來(lái)轉(zhuǎn)向純 軟件領(lǐng)域,歷經(jīng)匯編開(kāi)發(fā)時(shí)代到今天的云計(jì)算開(kāi)發(fā)時(shí)代的整個(gè)歷程。目前在阿里軟件從事云計(jì)算方面的研究與開(kāi)發(fā)工作。
(本文來(lái)自《程序員》雜志10年01期) |
|