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