怎樣尊重一個程序員

轉(zhuǎn)載自王垠博客,原帖鏈接請點擊


得知一位久違的同學來到了舊金山灣區(qū)猜惋,然而我見到他時,這人正處于一生中最痛苦的時期培愁。他告訴我著摔,自己任職的公司在他加入之前和之后,判若兩人定续。錄取的時候公司對他說谍咆,我們對你在實習期間的表現(xiàn)和學術(shù)背景非常滿意禾锤,你不用面試,甚至不用畢業(yè)拿學位摹察,直接就可以加入我們公司成為正式員工恩掷。然而短短一年后的今天,這位同學已經(jīng)完全感覺不到公司對自己技能的尊重供嚎。Manager讓他做一些亂七八糟沒技術(shù)含量的事情黄娘,還抱怨說他做事太慢,并且在他的evaluation上很是寫了一筆克滴。在人格尊嚴和工作安全感的雙重打擊之下逼争,這位同學壓力非常大,周末經(jīng)常偷偷地加班劝赔,仍然無法讓manager滿意氮凝。
我很了解這位同學的能力,在任何一流公司任職望忆,肯定是綽綽有余了罩阵。他的名字我當然保密,然而他所任職的公司因為太過囂張启摄,我不得不直接指出來——這就是被很多人向往得像天堂一樣的地方稿壁,Google。這位同學所描述的遭遇歉备,跟我?guī)啄昵霸贕oogle的實習經(jīng)歷如出一轍傅是。我仍然記得,Google的隊友在旁邊看著我用Emacs蕾羊,用小學老師似的口氣對我說:“按Ctrl-k喧笔!” 我仍然記得,在提交隊友完全無法寫出來的高難度代碼時龟再,被指責和嘲笑不會用Perforce书闸。我仍然記得,吃飯時同事們對所謂“Google牛人”眉飛色舞的艷羨利凑。我仍然記得浆劲,最后我一個人做出整個團隊做夢都做不出來的項目的時候,有人發(fā)出沉悶的咆哮:“快——寫——測——試哀澈!” ……
我的這位同學也算得上本領(lǐng)域頂尖的專家了牌借。如此的踐踏一個專家的價值,用膚淺的標準來評判和對待他們割按,Google并不是唯一一個這樣的公司膨报。我之前任職的好幾個公司,或多或少都存在類似的問題。很多時候也不一定是公司管理層無端施加壓力现柠,而是程序員之間互斗的厲害院领,互相評判,傷害自尊晒旅。從最近Linus Torvalds在演講現(xiàn)場公然對觀眾無理,你可以看出這種只關(guān)心技術(shù)汪诉,不尊重人的思潮废恋,在程序員的社區(qū)里是非常普及的。
后來我發(fā)現(xiàn)扒寄,并不是程序員故意想要藐視對方或者互相攻擊鱼鼓,而是他們真的不明白什么叫做“尊重”,他們不知道如何說話才可以不傷害另一個程序員该编,所以有時不小心就讓人怒火中燒迄本。所以說,尊重他人其實是一個“技術(shù)問題”课竣,而不是有心就可以做到的嘉赎。因為這個原因,我想在下文里從心理和技術(shù)角度出發(fā)于樟,指出IT業(yè)界不尊重人現(xiàn)象的起源公条,同時提出幾點建議,告訴人們?nèi)绾握嬲淖鹬匾粋€程序員迂曲。我希望這些建議對公司的管理層有借鑒意義靶橱,也希望它們能給與正在經(jīng)受同樣痛苦的程序員們一些精神上的鼓勵。
我覺得為了建設(shè)一個程序員之間互相尊重的公司文化路捧,應(yīng)該注意以下幾個要點关霸。

認識和承認計算機系統(tǒng)里的歷史遺留糟粕


很多不尊重人現(xiàn)象的起源,都是因為某些人偏執(zhí)的相信某種技術(shù)就是世界上最好的杰扫,每個人都必須知道队寇,否則他就不是一個合格的程序員。這種現(xiàn)象在Unix(Linux)的世界尤為普遍章姓。Unix系統(tǒng)的鼓吹者們(我曾經(jīng)是其中之一)喜歡到處布道英上,告訴你其它系統(tǒng)的設(shè)計有多蠢,你應(yīng)該遵從Unix的“哲學”啤覆。他們仿佛認為Unix就是世界終極的操作系統(tǒng)苍日,然而事實卻是,Unix是一個設(shè)計非常糟糕的系統(tǒng)窗声。它似乎故意被設(shè)計為難學難用相恃,容易犯錯,卻美其名曰“強大”笨觅,“靈活”拦耐。眼界開闊一點的程序員都知道耕腾,Unix的設(shè)計者其實基本不懂設(shè)計,他們并不是世界上最好的程序員杀糯,卻有一點做得很成功扫俺,那就是他們很會制造宗教,煽動人們的盲從心理固翰。Unix設(shè)計者把自己的設(shè)計失誤推在用戶身上狼纬,讓用戶覺得學不會或者搞錯了都是自己的錯。
如果你對計算機科學理解到一定程度骂际,就會發(fā)現(xiàn)我們其實仍然生活在計算機的石器時代疗琉。特別是軟件系統(tǒng),建立在一堆歷史遺留的糟糕設(shè)計之上歉铝。各種蹩腳腦殘的操作系統(tǒng)(比如Unix盈简,Linux),程序語言(比如C++太示,JavaScript柠贤,PHP,Go)类缤,數(shù)據(jù)庫种吸,編輯器,版本控制工具呀非,…… 時常困擾著我們坚俗,這就是為什么你需要那么多的所謂“經(jīng)驗”和“知識”。然而岸裙,很多IT公司不喜歡承認這一點猖败,他們一向以來的作風是“一切都是程序員的錯!”降允,“作為程序員恩闻,你應(yīng)該知道這些!” 這就造成了一種“皇帝的新裝現(xiàn)象”——大家都不喜歡用一些設(shè)計惡劣的工具剧董,卻都怕別人嘲笑或者懷疑自己的能力幢尚,所以總是喜歡顯示自己“會用”,“能學”翅楼,而沒有人敢說它難用尉剩,敢指出設(shè)計者的失誤。
我這個人呢毅臊,就是這種“黑客文化”的一個反例理茎。我所受到的多元化教育,讓我從這些偏激盲從,教條主義的心理里面跳了出來皂林。每當有人因為不會某種工具或者語言來請教我時朗鸠,我總是很輕松的調(diào)侃這工具的設(shè)計者,然后告訴他础倍,你沒理由知道這些破玩意兒烛占,但其實它就是這么回事。然后我一針見血的告訴他這東西怎么回事沟启,怎么用忆家,是哪些設(shè)計缺陷導致了我們現(xiàn)在的詭異用法…… 我覺得所有的IT從業(yè)人員對于這些工具,都應(yīng)該是這樣的調(diào)侃態(tài)度美浦。只有這樣弦赖,軟件行業(yè)才會得到實質(zhì)性的進步项栏,而不是被一些自虐的設(shè)計所困擾浦辨,造成思維枷鎖。
總之沼沈,這是一個非常重要的“態(tài)度問題”流酬。雖然在現(xiàn)階段,我們有必要知道如何繞過一些蹩腳的工具列另,利用它們來完成自己的任務(wù)芽腾。然而在此同時,我們必須正視和承認這些工具的惡劣本質(zhì)页衙,而不能拿它們當教條摊滔,把什么事都怪罪于程序員。只有分清工具設(shè)計者的失誤和程序員自己的失誤店乐,不把工具的設(shè)計失誤怪罪于程序員艰躺,我們才能有效地尊重程序員們的智商,鼓勵他們做出簡單眨八,優(yōu)雅腺兴,完善的產(chǎn)品。

分清精髓知識和表面知識廉侧,不要太拿經(jīng)驗當回事


在任何領(lǐng)域页响,都只有少數(shù)知識是精髓的,另外大部分都是表面的段誊,膚淺的闰蚕,是從精髓知識衍生出來的。精髓知識和表面知識都是有用的连舍,然而它們的分量和重要性卻是不一樣的陪腌。所以必須區(qū)分精髓知識和表面知識,不能混為一談,對待它們的態(tài)度應(yīng)該是不一樣的诗鸭。由于表面知識基本是死的染簇,而且很容易從精髓知識推導衍生出來。我們不應(yīng)該因為自己知道很多表面知識强岸,就自以為比掌握了精髓知識的人還要強锻弓。不應(yīng)該因為別人不知道某些表面知識,就以為自己高人一等蝌箍。
IT公司經(jīng)常有這樣的人青灼,以為精通一些看似復雜的命令行,或者某些難用的程序語言就很了不起似的妓盲。他們?nèi)绻犝f你不知道某個命令的用法杂拨,那簡直就像法國人不知道拿破侖,美國人不知道華盛頓一樣悯衬。這些人沒有發(fā)現(xiàn)弹沽,自己身邊有些同事其實掌握著精髓的知識,他們完全有能力從自己已有的知識,衍生制造出所有這些工具,而不只是使用它們蒂誉,甚至設(shè)計得更加完善和方便易用杨伙。這種能夠設(shè)計制造出更好工具的人,往往身負更加重要的任務(wù),所以他們往往會在被現(xiàn)有工具的用法迷惑的時候,非常謙虛的請同事幫助解決,大膽的承認自己的糊涂沛婴。
如果你是這個精通工具用法的人,切不可以把同事的謙虛請求當成可以顯擺自己“資歷”的時候督赤。這同事往往真的是在“不恥下問”嘁灯。他并不是搞不懂,而是根本不屑于够挂,也沒有時間去考慮這種低級問題旁仿。他的迷惑,往往來源于工具設(shè)計者的失誤孽糖。他很清楚這一點枯冈,他也知道自己的技術(shù)水平其實是高于這工具的設(shè)計者的。然而為了禮貌办悟,他經(jīng)常不直接批評這工具的設(shè)計尘奏,而是謙虛的責怪自己。所以同事向你“虛心請教”病蛉,完全是為了制造一種友好融洽的氣氛炫加,這樣可以節(jié)省下時間來干真正重要的事情瑰煎。這種虛心并不等于他在膜拜你,承認自己的技術(shù)能力不如你俗孝。
所以正確的對待方式應(yīng)該是誠懇的表示對這種迷惑的理解酒甸,并且坦率的承認工具設(shè)計上的不合理,蹩腳之處赋铝。如果你能夠以這種謙和的態(tài)度插勤,而不是自以為專家的態(tài)度,同事會高興地從你這里“學到”他需要的革骨,膚淺的死知識农尖,并且記住它,避免下次再為這種無聊事來打擾你良哲。如果你做出一副“天下只有我知道這奇技淫巧”的態(tài)度盛卡,同事往往會對你,連同這工具一起產(chǎn)生鄙視的情緒筑凫。他下次會照樣記不住這東西的用法滑沧,然而他卻再也不會來找你幫忙,而是一拖再拖漏健。

不要自以為聰明嚎货,不要評判別人的智商和能力


在IT公司里橘霎,總是有很多人覺得自己聰明蔫浆,想顯示自己比別人聰明。這種人似乎隨時都在評判(judge)別人姐叁,你說的任何話瓦盛,不管認真的還是開玩笑的,都會被他們拿去作為評估你智商和能力的依據(jù)外潜。
有時候你寫了一些代碼原环,自己知道時間不夠,可是當時有更重要的事情要做处窥,所以打算以后再改進嘱吗。如果你提交代碼時被這種人看到了,他們就會堅定地認為你一輩子只能寫出那樣的代碼滔驾。這就是所謂“wishful thinking”谒麦,人只能看到他希望看到的東西。這種人隨時都在希望自己比別人聰明哆致,所以他們隨時都在監(jiān)聽別人顯得不如他聰明的時候绕德,而對別人比他高明的時候視而不見。他們只能看到別人疏忽的時候摊阀,因為那是可以證明他們高人一等的有利證據(jù)耻蛇。
當然踪蹬,誰會喜歡這樣的人呢,可是他們在IT公司里相當?shù)钠毡槌伎АD悴桓腋麄冋f話跃捣,特別是不敢開玩笑,因為他們會把你稀里糊涂的玩笑話全部作為你智商低下或者經(jīng)驗不足的證據(jù)夺蛇。你不敢問他們問題枝缔,因為他們會認為你問問題,說明你不懂蚊惯!我發(fā)現(xiàn)具有這種心理的人愿卸,一般潛意識里都存在著自卑。他們有某些方面(包括智力在內(nèi))不如別人截型,所以總是找機會顯得高人一等趴荸。我還沒有想出可以糾正這種心理問題的有效方法,但如我上節(jié)所說宦焦,意識到整個行業(yè)发钝,包括你仰慕的鼻祖?zhèn)儯鋵嵍疾欢芏鄸|西波闹,都是混飯吃的酝豪,是一個有效的放松這種心理的手段。
有時候我喜歡自嘲精堕,對人說:“我們這行業(yè)的祖先做了這么多BUG來讓我們修補》跆裕現(xiàn)在你做了一坨屎,我也做了一坨屎歹篓,我的屎貌似比你的屎香一點瘫证。”這樣一來庄撮,不但顯示出心理的平等和尊重背捌,而且避免了因為謙虛而讓對方產(chǎn)生高人一等的情緒。說真的洞斯,做這行根本不需要很高的智力毡庆,所以最好是完全放棄對人智力的判斷。你不比任何人更聰明烙如,也不比他們笨么抗。

解釋高級意圖,不要使用低級命令


隨時都要記住厅翔,同事和下屬是跟你智力相當?shù)娜斯宰埂K麄兪峭ㄇ檫_理的人,然而卻不會簡單地服從你的低級命令刀闷。像我在Google的隊友的做法熊泵,就是一個很好的反面教材仰迁。其實這位Googler只是想告訴我:“刪掉這行文本,然后改成這樣……” 就是如此一個簡單的事情顽分,然而她卻故弄玄虛徐许,不直接告訴我這個“高級意圖”,而是使用非常低級的指令:“按Ctrl-k卒蘸!……” 語氣像是在對一個不懂事的小學生說話雌隅,好像自己懂很多,別人什么都不知道似的缸沃。
有哪個Emacs用戶不知道Ctrl-k是刪掉一行字呢恰起,況且你現(xiàn)在面對的其實是一個資深Emacs用戶。我想大家都看出來這里的問題了吧趾牧。這樣的低級命令不但邏輯不清楚检盼,而且是對另一個人的智力的嚴重侮辱。你當我是什么扒痰ァ吨枉?猴子?如果這位Googler表明自己的高級意圖哄芜,就會很容易在心理上和邏輯上讓人接受貌亭,比如她可以說:“配置文件的這行應(yīng)該刪掉,改成……”
在項目管理的時候也需要注意认臊。在讓人做某一件事之前圃庭,應(yīng)該先解釋為什么要做這件事,以及它的重要性美尸。這樣才能讓人理解冤议,才能尊重程序員的智商斟薇。

不要期望新人向自己學習


很多IT公司喜歡把新人當初學者师坎,期望他們“從新的起跑線出發(fā)”,向自己“學習”堪滨。比如胯陋,Google把新員工叫做“Noogler”(Newbie Googler的意思),甚至給他們發(fā)一種特殊的螺旋槳帽子袱箱,其寓意在于告訴他們遏乔,小屁孩要謙虛,要向偉大的Google學習发笔,將來才可以飛黃騰達盟萨。



這其實是非常錯誤的作法,因為它完全不尊重新員工早已具備的背景知識了讨,把自己的地位強加于他們頭上捻激。并不是你說“新的起跑線”就真的可以把人的過去都抹殺了的制轰。新人不了解你們的代碼結(jié)構(gòu)和工程方式,并不等于你們的方式就會先進一些胞谭。Google里面真的有很多值得學習的東西嗎垃杖?學校的教育真的一文不值嗎?其實恰恰相反丈屹。我可以坦然的說调俘,我從自己的教授身上學會了最精髓的知識,而從Google得到的旺垒,只是一些很膚淺的彩库,死記硬背就可以掌握的技能,而且其中有挺多其實是糟粕先蒋。我在Google做出的所有創(chuàng)新成果侧巨,全都是從學校獲得的精髓知識的衍生物。很多PhD學生鄙視Google鞭达,就是因為Google不但自己技術(shù)平庸司忱,反倒喜歡把自己包裝成最先進的,超越其它公司和學校的畴蹭,并且囂張的期望別人向他們“學習”坦仍。
一個真正尊重人才的公司會去了解,尊重和發(fā)揮新人從外界帶來的特殊技能叨襟,施展他們特有的長處繁扎,而不是一味期望他們向自己“學習”。只有這樣糊闽,我們才能保持這些銳利武器的棱角梳玫,在激烈的競爭中讓自己立于不敗之地。如果你一味的讓新人“學習”右犹,而無視他們特有的長處提澎,最后就不免淪為平庸。

不要以老師自居念链,分清“學習”和“了解”


如上文所說盼忌,IT行業(yè)的很多所謂“知識”,只不過是一些奇技淫巧掂墓,用以繞過前人設(shè)計上的失誤谦纱。所以遇到別人不知道一些東西的時候,請不要以為你“教會”了別人什么東西君编,不要以為自己可以當老師了跨嘉。以老師自居,使用一些像“跟我學”一類的語言吃嘿,其實是一種居高臨下祠乃,不尊重人的行為窘游。
人們很喜歡在獲得了信息的時候用“學習”這個詞,然而我覺得這個詞被濫用了跳纳。我們應(yīng)該分清兩種情況:“學習”和“了解”忍饰。前者指你通過別人的指點和自己的理解,獲得了精髓的寺庄,不能輕易制造出來的知識艾蓝。后者只是指你“了解”了原來不知道的一些事情。舉個例子斗塘,如果有人把一件物品放在了某個你不知道的地方赢织,你找不到,問他馍盟,然后他告訴你了于置。這種信息的獲取,顯然不叫“學習”贞岭,這種信息也不叫做“知識”八毯。
然而,IT行業(yè)很多時候所謂的“學習”瞄桨,就是類似這種情況话速。比如,有人寫了一些代碼芯侥,設(shè)計了一些框架模塊泊交。有人不知道怎么用,然后有人告訴他了柱查。很多人把這種情況稱為“學習”廓俭,這其實是對人的不尊重。這跟有人告訴你他把東西放在哪里了唉工,是同樣性質(zhì)的研乒。這樣的代碼和設(shè)計,我也可以做酵紫,甚至做得更好告嘲,憑什么你說我在向你學習呢?我只是了解了一下而已奖地。
所謂學習,必須是更加高級的知識和技能赋焕,必須有一種“有收獲”参歹,“有提高”的感覺。簡單的信息獲取不能叫做“學習”隆判,只能叫做“了解”犬庇。分清“了解”和“學習”僧界,不以老師自居,是尊重人的一個重要表現(xiàn)臭挽。

明確自己的要求捂襟,不要使用指責的語氣


有些人很怪異,他根本沒告訴過你他想要什么欢峰,有什么特別的要求葬荷,可他潛意識里假設(shè)已經(jīng)告訴你了。到了后來纽帖,他發(fā)現(xiàn)你的作法不符合要求宠漩,于是嚴厲指責你沒有按照他“心目中的要求”辦事。這種現(xiàn)象不止限于程序員懊直,而且包括日常生活中的普通人扒吁。舉個例子,我媽就是這種人的典型室囊,所以我以前在家生活經(jīng)常很辛苦雕崩。她心目中有一套“正確”的做事方式,如果你沒猜出來就會挨罵融撞。你為了避免挨罵晨逝,干脆什么事都不要做,然后她又會說你懶懦铺,所以你就左右不是人 :)
IT公司里面也有挺多這樣的人捉貌,他們假設(shè)有些信息他已經(jīng)告訴你了,而其實根本沒告訴你冬念。到了后來趁窃,他們開始指責你沒有按照要求做事。有些極其奇葩的公司急前,里面的程序員不但喜歡以老師自居醒陆,而且他們“傳授”你“知識”的主要方式是指責。他們事先不告訴你任何規(guī)則裆针,然后只在你違反的時候來責備你刨摩。我曾經(jīng)在這樣一個公司待過,名字就不提了世吨。
現(xiàn)在舉一個具體的場景例子:
A: 你push到master了澡刹?B: 是啊耘婚?怎么了罢浇?A: 不準push到master!只能用pull request!B: 可是你們之前沒告訴過我啊……A: 現(xiàn)在你知道了嚷闭?攒岛!
注意到了嗎?這不是一個技術(shù)問題胞锰,而是一個禮節(jié)(etiquette)問題灾锯。你沒有事先告訴別人一些規(guī)則,就不該用怪罪的語氣來對人說話嗅榕,況且你的規(guī)則還不一定總是對的顺饮。所以我現(xiàn)在提醒各位IT公司,在技術(shù)上的某些特殊要求必須事先提出來誊册,確保程序員知道并且理解领突。如果沒有事先提出,就不要怪別人沒按要求做案怯,因為這是非常傷害人自尊的作法君旦。其實,在任何時候都不應(yīng)該使用指責的語氣嘲碱,它不但對解決問題沒有任何正面作用金砍,而且會惡化人際關(guān)系,最終導致更加嚴重的后果麦锯。

程序員的工作量不可用時間衡量


很多IT公司管理層不懂得如何估算程序員的工作量恕稠,所以用他們坐在自己位置上工作的時間來估算。如果你能力很強扶欣,在很短的時間內(nèi)把最困難的問題解決了鹅巍,接下來他們不會讓你閑著,而會讓你做另外一些很低級的活料祠。這是很不合理的作法骆捧。打個比方,能力強的員工就像一輛F1賽車髓绽,馬力和速度是其他人的幾十倍敛苇。當然,普通人需要很長時間才能解決顺呕,甚至根本沒法解決的問題枫攀,到他手里很快就化解掉了。這就像一輛F1賽車株茶,眨眼工夫就跑完了別人需要很久的路程来涨。如果你用時間來衡量工作量,那么這輛賽車跑完全程只需要很短時間忌卤,所以你算出來的工作量就比普通車子小很多扫夜。你能因此說賽車工作不夠努力,要他快馬再加鞭嗎驰徊?這顯然是不對的笤闯。
物理定律是這樣:能量 = 功率 x 時間。工作量也應(yīng)該是同樣的計算方法棍厂。英明的颗味,真正理解程序員的公司,就不會指望高水平的程序員不停地工作牺弹。高水平程序員由于經(jīng)常能夠另辟蹊徑浦马,一個就可以抵好幾個甚至幾十個普通程序員。他們處理的問題比常人的困難很多张漂,費腦力多很多晶默,當然他們需要更好的休息,保養(yǎng)航攒,娛樂磺陡,…… 如果你讓高水平的程序員太忙了,一刻都不停著漠畜,有趣有挑戰(zhàn)性的事情做完了就讓他們做一些低級無聊的事情币他,他們悟出這個道理之后,就會故意放慢速度憔狞,有時候明明很快做完了也會說沒做完蝴悉。與其這樣,不如只期望他們工作短一點的時間瘾敢,把事情做完就可以拍冠。
當然這并不是說初級的程序員就應(yīng)該過量工作。編程是一項艱苦的腦力活動簇抵,超時超量的工作再加上壓力庆杜,只會帶來效率的低下,質(zhì)量的降低正压。

不要讓其他人修補自己的BUG


這個我已經(jīng)在一篇專門的文章里討論過欣福。讓一個程序員修補另外一個程序員的BUG,不但是效率低下焦履,而且是不尊重程序員個人價值的作法拓劝,應(yīng)該盡量避免。
在軟件行業(yè)嘉裤,經(jīng)持A伲看到有的公司管理讓一個人修補另一個人代碼里的BUG。有時候有人寫了一段代碼屑宠,扔出來不管了厢洞,然后公司管理讓其他工程師來修復它。我想告訴你們,這種方法會很失敗躺翻。
首先丧叽,讓一個人修復另一個人的BUG,是不尊重工程師個人技術(shù)的表現(xiàn)公你。久而久之會降低工程師的工作積極性踊淳,以至于失去有價值的員工。代碼是人用心寫出來的作品陕靠,就像藝術(shù)家的作品一樣迂尝,它的質(zhì)量牽掛著一個人的人格和尊嚴。如果一個人A寫了代碼垄开,自己都不想修復里面的BUG税肪,那說明A自己都認為他自己的代碼是垃圾,不可救藥寸认。如果讓另一個人B來修復A代碼里的BUG签财,就相當于是讓B來收拾其他人丟下的垃圾〕簦可想而知灸叼,B在公司的眼里是什么樣的地位神汹,受到什么樣的尊重。
其次古今,讓一個人修復另一個人的BUG屁魏,是效率非常低下的作法捉腥。每個人都有自己寫代碼的風格和技巧抵碟,代碼里面包含了一個人的思維方式。人很難不經(jīng)解釋理解別人的思想拟逮,所以不管這兩人的編程技術(shù)高下,都會比較難理解恋追。不能理解別人的代碼,不能說明這人編程技術(shù)的任何方面嗅绸。所以讓一個人修補另一個人的BUG沿彭,無論這人技術(shù)多么高明尖滚,都會導致效率低下漆弄。有時候技術(shù)越是高的人,修補別人的BUG效率越是低撼唾,因為這人根本就寫不出來如此糟糕的代碼倒谷,所以他無法理解蛛蒙,覺得還不如推翻重寫一遍渤愁。
當我在大學里做程序設(shè)計課程助教的時候抖格,我發(fā)現(xiàn)如果學生的代碼出了問題,你基本是沒法簡單的幫他們修復的收奔。我的水平顯然比學生的高出許多滓玖,然而我卻經(jīng)常根本看不懂,也不想看他們的代碼翩肌,更不要說修復里面的BUG殊霞。就像上面提到的,有些人自己根本不知道自己在寫什么棒卷,做出一堆垃圾來∪艉瘢看這樣的代碼跟吃屎的感覺差不多蜒什。對于這樣的代碼灾常,你只能跟他們說這是不正確的。至于為什么不正確钞瀑,你只能讓他們自己去改雕什,或者建議他們推翻重寫。也許你能指出大致的方向和思路壹士,然而深入到具體的細節(jié)卻是不可能的偿警,而且不應(yīng)該是你的職責户敬。這就是我的教授告訴我的做法:如果代碼不能運行,直接打一個叉尿庐,不用解釋抄瑟,不用推敲,等他們自己把程序改好鞋拟,或者實在沒辦法惹资,來office hours找你,向你解釋他們的思想猴誊。
如果你明白我在說什么,從今天起就對自己的代碼負起責任來乖杠,不要再讓其它人修補自己的BUG澄成,不要再修補其他人的BUG墨状。如果有人離開公司,必須要有人修補他遺留下來的BUG汛兜,那么說話應(yīng)該特別特別的小心通今。你必須指出需要他幫忙的特殊原因肛根,強調(diào)這件事本來不是他的錯派哲,本來是不應(yīng)該他來做的,但是有人走了储矩,沒有辦法褂乍,并且誠懇的為此類事情的發(fā)生表示歉意。只有這樣屡拨,程序員才會心甘情愿的在這種特殊關(guān)頭褥实,修補另外一個人的BUG损离。

不要嚷著要別人寫測試


在很多程序員的腦子里,所謂的“流程”和“測試”貌踏,比真正解決問題的代碼還重要。他們跟你說起這些绷跑,那真的叫正兒八經(jīng)凡资,義正言辭啊垦藏!所以有時候你很迷惑掂骏,這些人除了遵守這些按部就班的規(guī)矩厚掷,還知道些什么。大概沒有能力的人都喜歡追究各種規(guī)矩吧田绑,這樣可以顯得自己“沒有功勞有苦勞”抡爹。這些人自己寫的代碼很平庸冬竟,不知道如何簡單有效地解決困難的問題摔握,卻喜歡在別人提交代碼讓他review的時候叫喊:“測試很重要单寂!覆蓋很重要袋狞!你要再加一些測試才能通過我的review!”
本來code review是讓他們幫忙發(fā)現(xiàn)可能存在的問題同蜻,有些人卻仿佛把它作為了評判(judge)其他人能力早处,經(jīng)驗砌梆,甚至智商的機會贬循。他們根本不明白別人代碼的實質(zhì)價值杖虾,就知道以一些表面現(xiàn)象來判斷媒熊。我在Google實習,最后提交了質(zhì)量和難度都非常高的代碼嚷往,然而一些完全沒能力寫出這樣代碼的人柠衅,不但沒表示出最基本的肯定菲宴,反而發(fā)出沉悶的咆哮:“快——寫——測——試!” 你覺得我會高興嗎付燥?
我并不否認測試的用處愈犹,然而很多人提起這些事情時候漩怎,語氣和態(tài)度是非常不尊重嗦嗡,讓人反感的侥祭。這些人不但沒有為解決問題作出任何實質(zhì)貢獻,當有人提交解決方案的時候谈宛,他們沒有表達對真正做出貢獻的人的尊重和肯定胎署,反而指責別人沒寫測試琼牧。好像比他高明的人解決了問題哀卫,他反倒才是那個有發(fā)言權(quán)的撬槽,可以評判你的代碼質(zhì)量似的:“我管你代碼寫得多好侄柔,我完全沒能力寫出來,但你沒寫測試就是不夠?qū)I(yè)勋磕。你懂不懂測試的重要性啊敢靡,還做程序員啸胧!”
人際交往的問題經(jīng)常不在于你說了什么,而在于你是怎么說的贝椿。所以我的意思并不是說你不該建議寫測試陷谱,然而建議就該有建議的語氣和態(tài)度烟逊。因為你沒有做實際的工作,所以一些禮貌用語乔宿,比如“請”详瑞,“可不可以”……是必須的臣缀。經(jīng)常有人說話不注意語氣和態(tài)度,讓人反感驳庭,卻以自己是工程師,不善于跟人說話為借口蹲堂。永遠要記住柒竞,你沒有做事播聪,說話就應(yīng)該委婉离陶,切不可使用光禿禿的祈使句,說得好像這事別人非做不可霎俩,不做就是不懂規(guī)矩一樣沉眶。
禮貌的語言谎倔,跟人的職業(yè)完全沒有關(guān)系。身為工程師捌肴,完全不能作為說話不禮貌的借口藕咏。

關(guān)于Git的禮節(jié)


Git是現(xiàn)在最流行的代碼版本控制工具侈离。用外行話說筝蚕,Git就是一個代碼的“倉庫”或者“保管”起宽,這樣很多人修改了代碼之后,可以知道是誰改了哪一塊绿映。其實不管什么工具叉弦,不管是編輯器,程序語言库车,還是版本控制工具樱拴,比起程序員的核心思想來晶乔,都是次要的東西,都是起輔助作用的阵漏「し梗可是Git這工具似乎特別惹人惱火呛占。
Git并不像很多人吹噓的那么好用,其中有明顯的蹩腳設(shè)計疹味。跟Unix的傳統(tǒng)一脈相承糙捺,Git沒有一個良好的包裝笙隙,設(shè)計者把自己的內(nèi)部實現(xiàn)細節(jié)無情地泄露給了用戶竟痰,讓用戶需要琢磨者設(shè)計者內(nèi)部到底怎么實現(xiàn)的,否則很多時候不知道該怎么辦铅檩。用戶被迫需要記住挺多稀奇古怪的命令昧旨,而且命令行的設(shè)計也不怎么合理,有時候你需要加-f之類的參數(shù)蒋得,各個參數(shù)的位置可能不一致粘拾,而且加了還不一定能起到你期望的效果缰雇。各種奇怪的現(xiàn)象械哟,比如”head detached”,都強迫用戶去了解它內(nèi)部是怎么設(shè)計的锋爪。隨著Git版本的更新爸业,新的功能和命令不斷地增加扯旷,后來你終于看到命令行里出現(xiàn)了foreach钧忽,才發(fā)現(xiàn)它的命令行就快變成一個(劣質(zhì)的)程序語言。如果你了解ydiff的設(shè)計思想桃煎,就會發(fā)現(xiàn)Git之類基于文本的版本控制工具为迈,其實屬于古代的東西缺菌。然而很多人把Git奉為神圣男翰,就因為它是Linus Torvalds設(shè)計的纽乱。
Git最讓人惱火的地方并不是它用起來麻煩,而是它的“資深用戶”們居高臨下的態(tài)度給你造成的心理陰影鹏倘。好些人因為自己“精通Git”就以為高人一等纤泵,擺出一副專家的態(tài)度镜粤。隨著用戶的增加,Git最初的設(shè)計越來越被發(fā)現(xiàn)不夠用公荧,所以一些約定俗成的規(guī)則似乎越來越多循狰,可以寫成一本書绪钥!跟Unix的傳統(tǒng)一脈相承关炼,Git給你很多可以把自己套牢的“機制”盗扒,到時候出了問題就怪你自己不知道。所以你就經(jīng)常聽有人煞有介事的說:“并不是Git允許你這么做甸祭,你就可以這么做的池户!Unix的哲學是不阻止傻人做傻事……” 如果你提交代碼時不知道Git用戶一些約定俗成的規(guī)則校焦,就會有人嚷嚷:“rebase了再提交统倒!” “不要push到master房匆!” “不要merge!” “squash commits井氢!” 如果你不會用git submodule之類的東西花竞,有人可能還會鄙視你,說:“你應(yīng)該知道這些零远!”
打個比方遍烦,這樣的嚷嚷給人的感覺是服猪,你得了奧運會金牌之后拐云,把練習用的器材還回到器材保管科叉瘩,結(jié)果管理員對你大吼:“這個放這邊薇缅!那個放那邊!懂不懂規(guī)矩啊你泳桦?” 看出來問題了嗎汤徽?程序員提交了有高價值的代碼(奧運金牌),結(jié)果被一些自認為Git用的很熟的人(器材保管員)厲聲呵斥灸撰。
一個尊重程序員的公司文化谒府,就應(yīng)該把程序員作為運動健將,把程序員的代碼放在尊貴的地位浮毯。其它的工具完疫,都應(yīng)該像器材保管科一樣。我們尊重這些器材保管員债蓝,然而如果運動員們不懂你制定的器材擺放規(guī)矩壳鹤,也應(yīng)該表示出尊重和理解饰迹,說話應(yīng)該和氣有禮貌器虾,不應(yīng)該騎到他們頭上讯嫂。所以,對于Git的一些命令和用法兆沙,我建議大家向新手介紹時,這樣開場:“你本來不該知道這些的莉掂,可是現(xiàn)在我們沒有更好的工具葛圃,所以得這樣弄一下……”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市憎妙,隨后出現(xiàn)的幾起案子库正,更是在濱河造成了極大的恐慌,老刑警劉巖厘唾,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褥符,死亡現(xiàn)場離奇詭異,居然都是意外死亡抚垃,警方通過查閱死者的電腦和手機喷楣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹤树,“玉大人铣焊,你說我怎么就攤上這事『辈” “怎么了曲伊?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長追他。 經(jīng)常有香客問我坟募,道長,這世上最難降的妖魔是什么邑狸? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任懈糯,我火速辦了婚禮,結(jié)果婚禮上推溃,老公的妹妹穿的比我還像新娘昂利。我一直安慰自己,他們只是感情好铁坎,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布蜂奸。 她就那樣靜靜地躺著,像睡著了一般硬萍。 火紅的嫁衣襯著肌膚如雪扩所。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天朴乖,我揣著相機與錄音祖屏,去河邊找鬼助赞。 笑死,一個胖子當著我的面吹牛袁勺,可吹牛的內(nèi)容都是我干的雹食。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼期丰,長吁一口氣:“原來是場噩夢啊……” “哼群叶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钝荡,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤街立,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后埠通,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赎离,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年端辱,在試婚紗的時候發(fā)現(xiàn)自己被綠了梁剔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡掠手,死狀恐怖憾朴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喷鸽,我是刑警寧澤众雷,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站做祝,受9級特大地震影響砾省,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜混槐,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一编兄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧声登,春花似錦狠鸳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脯厨,卻和暖如春铅祸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工临梗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涡扼,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓盟庞,卻偏偏與公主長得像吃沪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子什猖,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容