[原]漫談程序員系列:千奇百怪的程序員
原文 http://blog.csdn.net/foruok/article/details/42277133
干開發時間長了,遇見好多好玩兒的程序員。
看看你躺槍了沒。
留一手
有個哥們兒,在一合資公司做程序員,能力挺強,寫代碼很神的。
他的代碼我看過,深得 MFC 的精髓:大量的宏,很多函數就兩三個宏,一個BEGIN_XXX,一個END_XXX,中間再夾另外一個宏。諾,這就是漢堡包了。
我碰巧看他的代碼(題外話,沒和他在一個公司一塊兒待過),那個頭大啊……這玩意兒也能記得住嘛,厲害,真是厲害。
就是這么厲害個人兒,項目組數他牛 B ,他的代碼只有他能看懂,他的地盤他做主,沒人敢進去改東西。
這都不是真正的牛 B 之處,最牛逼的是,這哥們兒代碼里有不少 BUG ,每個版本都不改完,故意留上兩個,要是項目經理急了,就把舊的改完,埋兩個新雷進去。
因為沒人動得了他的代碼,他就這么一直搞著,項目經理恨得牙根癢癢,可愣是沒辦法。
全局變量控
看一段代碼:
/* Exported variables */ char hfile_name[MAXARGLEN+1], location[MAXARGLEN*2], *ppm = NULL, *gif = NULL, tzfile[MAXARGLEN+1], units[MAXARGLEN+1], units_abbrv[MAXARGLEN+1], tadjust_tzname[MAXARGLEN+1]; char next_ht_text[20], next_ht_date[20], next_lt_text[20], next_lt_date[20], *geometry = NULL, loadunits[80]; char *fgrise_color_arg = NULL, *fgfall_color_arg = NULL, *fgtext_color_arg = NULL, *fgmark_color_arg = NULL, *fgmllw_color_arg = NULL, *fgmiddle_color_arg = NULL; int Usetadjust=0, Itadjust = 0, tadjust = 0, utc = 0, list = 0, checkyear = 0, text = 0, skinny = 0, now = 0, graphmode = 0, httimeoff = 0, lttimeoff = 0, tstep = 180, middle = 0, mark = 0, mllw = 0, lines = 1, PPMWIDTH = 960, PPMHEIGHT = 300, hinc = 0, tinc = 0, loctz = 0, iscurrent = 0, curonly = 0, toplines = 0, hincmagic = 0, calendar = 0, banner = 0, weekday = 0, hairy = 0, linegraph = 0, ps = 0, noampm = 0, uutc = 0, have_offsets = 0, Ihttimeoff = 0, Ilttimeoff = 0, newload = 0, subproc=1,OnlyTCD=0, datemdy=0, mapZoom=0; double llevelmult = 1.0, hlevelmult = 1.0, Illevelmult = 1.0, Ihlevelmult = 1.0; time_t next_ht = 0, prev_ht = 0, next_ht_adj = 0, prev_ht_adj = 0, faketime = 0, epoch = 0, mark_time_adj = 0; double amplitude = 0.0, htleveloff = 0.0, ltleveloff = 0.0, DATUM, marklev, absmax = 0.0, absmin = 0.0, fakedatum = 0.0, fakeamplitude = 0.0, Ihtleveloff = 0.0, Iltleveloff = 0.0; double next_ht_amplitude, next_lt_amplitude; //mgh+ int num_epochs = 0, first_year = 0;
恐怖嗎?這是我在一個項目中的一個源文件里看到的,還有很多類似的源文件……
話說,有些程序員就愛這口,特別喜歡全局變量,只是,代碼寫完的第二天,他就可能被自己的全局變量們給吞噬了……
別想看我的代碼
還有的兄弟,對于自己的代碼,非常之在意,他把自己的代碼當作圣姑了,雖然必須行走江湖,但是我就是要給它戴個斗笠蒙個面紗,就是不讓你看。有時 候你看他一直埋頭電腦前,噼里啪啦的擊鍵之聲不絕,可是就是不知道他寫了什么。他從來不讓別人看他的代碼,誰看給誰急。不知道是怎么想的,我有時候只能猜 測,他啪啪啪敲鍵盤,其實是在聊 QQ 了,他之所以不讓人看,完全是因為,半個月過去了,一行代碼還沒寫呢。當然還有一種可能,他的代碼比較凌亂,不想讓人看出來……我們也可以往好的方面猜 猜,此君自視甚高,認為自己的代碼高深莫測,怕別人看了自慚形穢,怕打擊別人柔弱的小心臟;或者此君認為自己的代碼太優秀了,怕別人偷學了去……
不管怎么樣,死捂著代碼不放,終歸不是個辦法。
祥林嫂
“祥林嫂”原本是魯迅小說《祝福》中的人物,是舊中國農村勞動婦女的典型。而“祥林嫂”這個詞兒本身,現在又有了特別的含義,我只取其“牢騷滿腹”、“不斷 goto 當初”之意。
有個別程序員,對自己的技能比較珍視,采用二分法,認為這些技術是好的,是靈丹妙藥,認為那些技術是壞的,是穿腸毒藥。尤其是產品技術方案沒有選 擇他認為好的那個技術時,他會很長一段時間不能接受,但凡項目執行過程中遇到點兒不順,就會嘮叨:“要是當初選擇 XXX ,肯定沒這些問題”。類似的話,會不斷從他嘴里說出來,循環往復,一詠三嘆,簡直讓人崩潰。
我能干我不干我很忙
也許你遇見過這樣的隊友:分解任務時,說到哪個模塊,都能頭頭是道,看起來沒有他不懂的,可是你讓他干時,哪個都不愿意干,老推說我已經 take 了多少少 task 。到最后,他基本上沒什么 task ,還是很簡單的,但當你跟蹤進度時,他卻總是說遇到了這個問題,還得多長時間,遇到了那個問題,又得多長時間,你要幫他看看時,他又說不用自己能搞定。
未來戰士
未來戰士們對新的技術和工具特別熱衷,每個領域的前沿技術他都知道,都能說出個一二三,而且這些技術更迭時他也都知道,比辦公室里的其他人都知道得早。對于那些新技術,一旦他和你說起來,就神采飛揚,唾沫星星子四濺,此時即便你有事兒都不好意思走開。
未來戰士所開發的軟件所使用的 SDK 、 工具 ,只要有新的版本出現,一定要更新。哪怕是昨天剛剛更新過,今天也要更新。你不讓他更新他就坐立不安,一定要來說服你,新版本有千般好,舊版本性能差、漏洞多、使用不便、編譯緩慢等等問題都會被他找出來。
未來戰士的哲學思想非常明確:新的就是好的。
石器時代的守護神
與未來戰士相反,另有一些程序員,對自己掌握的技術、對既有產品所采用的技術堅定不移的維護,你要想讓他把軟件依賴的框架版本升級一下,那是比登天還難:Run得好好的,為毛要升級?用現在的版本可以應付一切!
石器時代的守護神具有很強的韌性和對抗一切新技術的定力,只要舊系統還可以用,他就可以曠日持久的堅持、維護下去,因為他們的原則就是:只要將就能用,不到萬不得已一定不要去更新,因為任何新的技術新的改動新的設計新的重構都是怪獸,不知道會帶來多大的破壞。
老子不需要幫助
見過沒?有的程序員就愛自己搞,就算是我被一個問題絆住,吭哧吭哧搞上一星期還搞不出來,你也別想幫助我!他們的信條是:老子能搞定,老子不需要幫助。
這種類型的程序員特別敏感,特別害怕別人瞧不起他,當然有時也有些自卑、多疑,擔心別人的幫助里夾帶著嘲笑,他們的敏感、多疑、驕傲、自卑等等復雜情感驅使他們拒絕接受別人的幫助,也驅使他們忘記時間盒的存在。
快來幫幫我吧
嘿嘿,這種類型的程序員,最愛說的就是:哎呀搞不定了,誰來幫幫我。
只要你一幫他,這活兒就成你的了,他們會讓你覺得幫人不到底你好意思嗎你,還會讓你覺得送佛不到西天就是你的罪過……我天,他們遇到問題都不想的,直接拉你過來調代碼。
他們是“老子不需要幫助”的反面。
別讓我讀代碼,我是文盲
我懂得一門語言的所有語法,關鍵字認得,控制結構懂得,繼承知道,多態了解,設計模式我也清楚,可你別讓我看代碼,看不懂,真心不懂。
這也是一類程序員,他們能夠了解編程語言的所有語法和細節,可就是看不懂別人的代碼。
精雕細琢的藝術家
咦,這里該不該斷行?
代碼編輯器里,到底這種字體好看還是那種字體好看?
這里的條件判斷,到底是三層 IF 語句嵌套好還是三個 IF-RETURN 好?
……
這些藝術家們把代碼當作一門藝術,從編輯器開始打磨,一直到每一行代碼到底多少個字符合適,花括號是放在行尾還是行首……都要仔細斟酌研究。對他們來講:美觀是高于一切的。
孤獨的人
有些人選擇軟件開發,就是因為:再也不用和別人打交道了。
所以,他們會回避任何與別人交流的機會,談話、電話、郵件、即時通信、微信……總之,他們理想的工作環境里只有代碼沒有人類。與同事或客戶溝通,對他們來講是巨大的負擔,感覺說一句話就會耗費他們一輩子力氣。