偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

這樣做才算是對(duì)程序員真真正正的尊重!

開發(fā) 后端
得知一位久違的同學(xué)來到了舊金山灣區(qū),然而我見到他時(shí),這人正處于一生中最痛苦的時(shí)期。他告訴我,自己任職的公司在他加入之前和之后,判若兩人。錄 取的時(shí)候公司對(duì)他說,我們對(duì)你在實(shí)習(xí)期間的表現(xiàn)和學(xué)術(shù)背景非常滿意,你不用面試,甚至不用畢業(yè)拿學(xué)位,直接就可以加入我們公司成為正式員工。

得知一位久違的同學(xué)來到了舊金山灣區(qū),然而我見到他時(shí),這人正處于一生中最痛苦的時(shí)期。他告訴我,自己任職的公司在他加入之前和之后,判若兩人。錄 取的時(shí)候公司對(duì)他說,我們對(duì)你在實(shí)習(xí)期間的表現(xiàn)和學(xué)術(shù)背景非常滿意,你不用面試,甚至不用畢業(yè)拿學(xué)位,直接就可以加入我們公司成為正式員工。然而短短一年 后的今天,這位同學(xué)已經(jīng)完全感覺不到公司對(duì)自己技能的尊重。Manager讓他做一些亂七八糟沒技術(shù)含量的事情,還抱怨說他做事太慢,并且在他的 evaluation上很是寫了一筆。在人格尊嚴(yán)和工作安全感的雙重打擊之下,這位同學(xué)壓力非常大,周末經(jīng)常偷偷地加班,仍然無法讓manager滿意。

我很了解這位同學(xué)的能力,在任何一流公司任職,肯定是綽綽有余了。他的名字我當(dāng)然保密,然而他所任職的公司因?yàn)樘^囂張,我不得不直接指出來——這 就是被很多人向往得像天堂一樣的地方,Google。這位同學(xué)所描述的遭遇,跟我?guī)啄昵霸贕oogle的實(shí)習(xí)經(jīng)歷如出一轍。我仍然記得,Google的隊(duì) 友在旁邊看著我用Emacs,用小學(xué)老師似的口氣對(duì)我說:“按Ctrl-k!” 我仍然記得,在提交隊(duì)友完全無法寫出來的高難度代碼時(shí),被指責(zé)和嘲笑不會(huì)用Perforce。我仍然記得,吃飯時(shí)同事們對(duì)所謂“Google牛人”眉飛色 舞的艷羨。我仍然記得,最后我一個(gè)人做出整個(gè)團(tuán)隊(duì)做夢都做不出來的項(xiàng)目的時(shí)候,有人發(fā)出沉悶的咆哮:“快——寫——測——試!” ……

我的這位同學(xué)也算得上本領(lǐng)域頂尖的專家了。如此的踐踏一個(gè)專家的價(jià)值,用膚淺的標(biāo)準(zhǔn)來評(píng)判和對(duì)待他們,Google并不是唯一一個(gè)這樣的公司。我之 前任職的好幾個(gè)公司,或多或少都存在類似的問題。很多時(shí)候也不一定是公司管理層無端施加壓力,而是程序員之間互斗的厲害,互相評(píng)判,傷害自尊。從最近Linus Torvalds在演講現(xiàn)場公然對(duì)觀眾無理,你可以看出這種只關(guān)心技術(shù),不尊重人的思潮,在程序員的社區(qū)里是非常普及的。

后來我發(fā)現(xiàn),并不是程序員故意想要藐視對(duì)方或者互相攻擊,而是他們真的不明白什么叫做“尊重”,他們不知道如何說話才可以不傷害另一個(gè)程序員,所以 有時(shí)不小心就讓人怒火中燒。所以說,尊重他人其實(shí)是一個(gè)“技術(shù)問題”,而不是有心就可以做到的。因?yàn)檫@個(gè)原因,我想在下文里從心理和技術(shù)角度出發(fā),指出 IT業(yè)界不尊重人現(xiàn)象的起源,同時(shí)提出幾點(diǎn)建議,告訴人們?nèi)绾握嬲淖鹬匾粋€(gè)程序員。我希望這些建議對(duì)公司的管理層有借鑒意義,也希望它們能給與正在經(jīng)受 同樣痛苦的程序員們一些精神上的鼓勵(lì)。

我覺得為了建設(shè)一個(gè)程序員之間互相尊重的公司文化,應(yīng)該注意以下幾個(gè)要點(diǎn)。

認(rèn)識(shí)和承認(rèn)計(jì)算機(jī)系統(tǒng)里的歷史遺留糟粕

很多不尊重人現(xiàn)象的起源,都是因?yàn)槟承┤似珗?zhí)的相信某種技術(shù)就是世界上最好的,每個(gè)人都必須知道,否則他就不是一個(gè)合格的程序員。這種現(xiàn)象在 Unix(Linux)的世界尤為普遍。Unix系統(tǒng)的鼓吹者們(我曾經(jīng)是其中之一)喜歡到處布道,告訴你其它系統(tǒng)的設(shè)計(jì)有多蠢,你應(yīng)該遵從Unix的 “哲學(xué)”。他們仿佛認(rèn)為Unix就是世界終極的操作系統(tǒng),然而事實(shí)卻是,Unix是一個(gè)設(shè)計(jì)非常糟糕的系統(tǒng)。它似乎故意被設(shè)計(jì)為難學(xué)難用,容易犯錯(cuò),卻美 其名曰“強(qiáng)大”,“靈活”。眼界開闊一點(diǎn)的程序員都知道,Unix的設(shè)計(jì)者其實(shí)基本不懂設(shè)計(jì),他們并不是世界上最好的程序員,卻有一點(diǎn)做得很成功,那就是 他們很會(huì)制造宗教,煽動(dòng)人們的盲從心理。Unix設(shè)計(jì)者把自己的設(shè)計(jì)失誤推在用戶身上,讓用戶覺得學(xué)不會(huì)或者搞錯(cuò)了都是自己的錯(cuò)。

如果你對(duì)計(jì)算機(jī)科學(xué)理解到一定程度,就會(huì)發(fā)現(xiàn)我們其實(shí)仍然生活在計(jì)算機(jī)的石器時(shí)代。特別是軟件系統(tǒng),建立在一堆歷史遺留的糟糕設(shè)計(jì)之上。各種蹩腳腦 殘的操作系統(tǒng)(比如Unix,Linux),程序語言(比如C++,JavaScript,PHP,Go),數(shù)據(jù)庫,編輯器,版本控制工具,…… 時(shí)常困擾著我們,這就是為什么你需要那么多的所謂“經(jīng)驗(yàn)”和“知識(shí)”。然而,很多IT公司不喜歡承認(rèn)這一點(diǎn),他們一向以來的作風(fēng)是“一切都是程序員的 錯(cuò)!”,“作為程序員,你應(yīng)該知道這些!” 這就造成了一種“皇帝的新裝現(xiàn)象”——大家都不喜歡用一些設(shè)計(jì)惡劣的工具,卻都怕別人嘲笑或者懷疑自己的能力,所以總是喜歡顯示自己“會(huì)用”,“能學(xué)”, 而沒有人敢說它難用,敢指出設(shè)計(jì)者的失誤。

我這個(gè)人呢,就是這種“黑客文化” 的一個(gè)反例。我所受到的多元化教育,讓我從這些偏激盲從,教條主義的心理里面跳了出來。每當(dāng)有人因?yàn)椴粫?huì)某種工具或者語言來請(qǐng)教我時(shí),我總是很輕松的調(diào)侃 這工具的設(shè)計(jì)者,然后告訴他,你沒理由知道這些破玩意兒,但其實(shí)它就是這么回事。然后我一針見血的告訴他這東西怎么回事,怎么用,是哪些設(shè)計(jì)缺陷導(dǎo)致了我 們現(xiàn)在的詭異用法…… 我覺得所有的IT從業(yè)人員對(duì)于這些工具,都應(yīng)該是這樣的調(diào)侃態(tài)度。只有這樣,軟件行業(yè)才會(huì)得到實(shí)質(zhì)性的進(jìn)步,而不是被一些自虐的設(shè)計(jì)所困擾,造成思維枷 鎖。

總之,這是一個(gè)非常重要的“態(tài)度問題”。雖然在現(xiàn)階段,我們有必要知道如何繞過一些蹩腳的工具,利用它們來完成自己的任務(wù)。然而在此同時(shí),我們必須 正視和承認(rèn)這些工具的惡劣本質(zhì),而不能拿它們當(dāng)教條,把什么事都怪罪于程序員。只有分清工具設(shè)計(jì)者的失誤和程序員自己的失誤,不把工具的設(shè)計(jì)失誤怪罪于程 序員,我們才能有效地尊重程序員們的智商,鼓勵(lì)他們做出簡單,優(yōu)雅,完善的產(chǎn)品。

#p#

分清精髓知識(shí)和表面知識(shí),不要太拿經(jīng)驗(yàn)當(dāng)回事

在任何領(lǐng)域,都只有少數(shù)知識(shí)是精髓的,另外大部分都是表面的,膚淺的,是從精髓知識(shí)衍生出來的。精髓知識(shí)和表面知識(shí)都是有用的,然而它們的分量和重 要性卻是不一樣的。所以必須區(qū)分精髓知識(shí)和表面知識(shí),不能混為一談,對(duì)待它們的態(tài)度應(yīng)該是不一樣的。由于表面知識(shí)基本是死的,而且很容易從精髓知識(shí)推導(dǎo)衍 生出來。我們不應(yīng)該因?yàn)樽约褐篮芏啾砻嬷R(shí),就自以為比掌握了精髓知識(shí)的人還要強(qiáng)。不應(yīng)該因?yàn)閯e人不知道某些表面知識(shí),就以為自己高人一等。

IT公司經(jīng)常有這樣的人,以為精通一些看似復(fù)雜的命令行,或者某些難用的程序語言就很了不起似的。他們?nèi)绻犝f你不知道某個(gè)命令的用法,那簡直就像 法國人不知道拿破侖,美國人不知道華盛頓一樣。這些人沒有發(fā)現(xiàn),自己身邊有些同事其實(shí)掌握著精髓的知識(shí),他們完全有能力從自己已有的知識(shí),衍生制造出所有 這些工具,而不只是使用它們,甚至設(shè)計(jì)得更加完善和方便易用。這種能夠設(shè)計(jì)制造出更好工具的人,往往身負(fù)更加重要的任務(wù),所以他們往往會(huì)在被現(xiàn)有工具的用 法迷惑的時(shí)候,非常謙虛的請(qǐng)同事幫助解決,大膽的承認(rèn)自己的糊涂。

如果你是這個(gè)精通工具用法的人,切不可以把同事的謙虛請(qǐng)求當(dāng)成可以顯擺自己“資歷”的時(shí)候。這同事往往真的是在“不恥下問”。他并不是搞不懂,而是 根本不屑于,也沒有時(shí)間去考慮這種低級(jí)問題。他的迷惑,往往來源于工具設(shè)計(jì)者的失誤。他很清楚這一點(diǎn),他也知道自己的技術(shù)水平其實(shí)是高于這工具的設(shè)計(jì)者 的。然而為了禮貌,他經(jīng)常不直接批評(píng)這工具的設(shè)計(jì),而是謙虛的責(zé)怪自己。所以同事向你“虛心請(qǐng)教”,完全是為了制造一種友好融洽的氣氛,這樣可以節(jié)省下時(shí) 間來干真正重要的事情。這種虛心并不等于他在膜拜你,承認(rèn)自己的技術(shù)能力不如你。

所以正確的對(duì)待方式應(yīng)該是誠懇的表示對(duì)這種迷惑的理解,并且坦率的承認(rèn)工具設(shè)計(jì)上的不合理,蹩腳之處。如果你能夠以這種謙和的態(tài)度,而不是自以為專 家的態(tài)度,同事會(huì)高興地從你這里“學(xué)到”他需要的,膚淺的死知識(shí),并且記住它,避免下次再為這種無聊事來打擾你。如果你做出一副“天下只有我知道這奇技淫 巧”的態(tài)度,同事往往會(huì)對(duì)你,連同這工具一起產(chǎn)生鄙視的情緒。他下次會(huì)照樣記不住這東西的用法,然而他卻再也不會(huì)來找你幫忙,而是一拖再拖。

不要自以為聰明,不要評(píng)判別人的智商和能力

在IT公司里,總是有很多人覺得自己聰明,想顯示自己比別人聰明。這種人似乎隨時(shí)都在評(píng)判(judge)別人,你說的任何話,不管認(rèn)真的還是開玩笑的,都會(huì)被他們拿去作為評(píng)估你智商和能力的依據(jù)。

有時(shí)候你寫了一些代碼,自己知道時(shí)間不夠,可是當(dāng)時(shí)有更重要的事情要做,所以打算以后再改進(jìn)。如果你提交代碼時(shí)被這種人看到了,他們就會(huì)堅(jiān)定地認(rèn)為 你一輩子只能寫出那樣的代碼。這就是所謂“wishful thinking”,人只能看到他希望看到的東西。這種人隨時(shí)都在希望自己比別人聰明,所以他們隨時(shí)都在監(jiān)聽別人顯得不如他聰明的時(shí)候,而對(duì)別人比他高明 的時(shí)候視而不見。他們只能看到別人疏忽的時(shí)候,因?yàn)槟鞘强梢宰C明他們高人一等的有利證據(jù)。

當(dāng)然,誰會(huì)喜歡這樣的人呢,可是他們在IT公司里相當(dāng)?shù)钠毡椤D悴桓腋麄冋f話,特別是不敢開玩笑,因?yàn)樗麄儠?huì)把你稀里糊涂的玩笑話全部作為你智商 低下或者經(jīng)驗(yàn)不足的證據(jù)。你不敢問他們問題,因?yàn)樗麄儠?huì)認(rèn)為你問問題,說明你不懂!我發(fā)現(xiàn)具有這種心理的人,一般潛意識(shí)里都存在著自卑。他們有某些方面 (包括智力在內(nèi))不如別人,所以總是找機(jī)會(huì)顯得高人一等。我還沒有想出可以糾正這種心理問題的有效方法,但如我上節(jié)所說,意識(shí)到整個(gè)行業(yè),包括你仰慕的鼻 祖?zhèn)?,其?shí)都不懂很多東西,都是混飯吃的,是一個(gè)有效的放松這種心理的手段。

有時(shí)候我喜歡自嘲,對(duì)人說:“我們這行業(yè)的祖先做了這么多BUG來讓我們修補(bǔ)?,F(xiàn)在你做了一坨屎,我也做了一坨屎,我的屎貌似比你的屎香一點(diǎn)。”這 樣一來,不但顯示出心理的平等和尊重,而且避免了因?yàn)橹t虛而讓對(duì)方產(chǎn)生高人一等的情緒。說真的,做這行根本不需要很高的智力,所以最好是完全放棄對(duì)人智力 的判斷。你不比任何人更聰明,也不比他們笨。

#p#

解釋高級(jí)意圖,不要使用低級(jí)命令

隨時(shí)都要記住,同事和下屬是跟你智力相當(dāng)?shù)娜?。他們是通情達(dá)理的人,然而卻不會(huì)簡單地服從你的低級(jí)命令。像我在Google的隊(duì)友的做法,就是一個(gè) 很好的反面教材。其實(shí)這位Googler只是想告訴我:“刪掉這行文本,然后改成這樣……” 就是如此一個(gè)簡單的事情,然而她卻故弄玄虛,不直接告訴我這個(gè)“高級(jí)意圖”,而是使用非常低級(jí)的指令:“按Ctrl-k!……” 語氣像是在對(duì)一個(gè)不懂事的小學(xué)生說話,好像自己懂很多,別人什么都不知道似的。

有哪個(gè)Emacs用戶不知道Ctrl-k是刪掉一行字呢,況且你現(xiàn)在面對(duì)的其實(shí)是一個(gè)資深Emacs用戶。我想大家都看出來這里的問題了吧。這樣的 低級(jí)命令不但邏輯不清楚,而且是對(duì)另一個(gè)人的智力的嚴(yán)重侮辱。你當(dāng)我是什么啊?猴子?如果這位Googler表明自己的高級(jí)意圖,就會(huì)很容易在心理上和邏 輯上讓人接受,比如她可以說:“配置文件的這行應(yīng)該刪掉,改成……”

在項(xiàng)目管理的時(shí)候也需要注意。在讓人做某一件事之前,應(yīng)該先解釋為什么要做這件事,以及它的重要性。這樣才能讓人理解,才能尊重程序員的智商。

不要期望新人向自己學(xué)習(xí)

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

[[134473]]

這其實(shí)是非常錯(cuò)誤的作法,因?yàn)樗耆蛔鹬匦聠T工早已具備的背景知識(shí),把自己的地位強(qiáng)加于他們頭上。并不是你說“新的起跑線”就真的可以把人的過去 都抹殺了的。新人不了解你們的代碼結(jié)構(gòu)和工程方式,并不等于你們的方式就會(huì)先進(jìn)一些。Google里面真的有很多值得學(xué)習(xí)的東西嗎?學(xué)校的教育真的一文不 值嗎?其實(shí)恰恰相反。我可以坦然的說,我從自己的教授身上學(xué)會(huì)了最精髓的知識(shí),而從Google得到的,只是一些很膚淺的,死記硬背就可以掌握的技能,而 且其中有挺多其實(shí)是糟粕。我在Google做出的所有創(chuàng)新成果,全都是從學(xué)校獲得的精髓知識(shí)的衍生物。很多PhD學(xué)生鄙視Google,就是因?yàn)?Google不但自己技術(shù)平庸,反倒喜歡把自己包裝成最先進(jìn)的,超越其它公司和學(xué)校的,并且囂張的期望別人向他們“學(xué)習(xí)”。

一個(gè)真正尊重人才的公司會(huì)去了解,尊重和發(fā)揮新人從外界帶來的特殊技能,施展他們特有的長處,而不是一味期望他們向自己“學(xué)習(xí)”。只有這樣,我們才 能保持這些銳利武器的棱角,在激烈的競爭中讓自己立于不敗之地。如果你一味的讓新人“學(xué)習(xí)”,而無視他們特有的長處,最后就不免淪為平庸。

#p#

不要以老師自居,分清“學(xué)習(xí)”和“了解”

如上文所說,IT行業(yè)的很多所謂“知識(shí)”,只不過是一些奇技淫巧,用以繞過前人設(shè)計(jì)上的失誤。所以遇到別人不知道一些東西的時(shí)候,請(qǐng)不要以為你“教 會(huì)”了別人什么東西,不要以為自己可以當(dāng)老師了。以老師自居,使用一些像“跟我學(xué)”一類的語言,其實(shí)是一種居高臨下,不尊重人的行為。

人們很喜歡在獲得了信息的時(shí)候用“學(xué)習(xí)”這個(gè)詞,然而我覺得這個(gè)詞被濫用了。我們應(yīng)該分清兩種情況:“學(xué)習(xí)”和“了解”。前者指你通過別人的指點(diǎn)和 自己的理解,獲得了精髓的,不能輕易制造出來的知識(shí)。后者只是指你“了解”了原來不知道的一些事情。舉個(gè)例子,如果有人把一件物品放在了某個(gè)你不知道的地 方,你找不到,問他,然后他告訴你了。這種信息的獲取,顯然不叫“學(xué)習(xí)”,這種信息也不叫做“知識(shí)”。

然而,IT行業(yè)很多時(shí)候所謂的“學(xué)習(xí)”,就是類似這種情況。比如,有人寫了一些代碼,設(shè)計(jì)了一些框架模塊。有人不知道怎么用,然后有人告訴他了。很 多人把這種情況稱為“學(xué)習(xí)”,這其實(shí)是對(duì)人的不尊重。這跟有人告訴你他把東西放在哪里了,是同樣性質(zhì)的。這樣的代碼和設(shè)計(jì),我也可以做,甚至做得更好,憑 什么你說我在向你學(xué)習(xí)呢?我只是了解了一下而已。

所謂學(xué)習(xí),必須是更加高級(jí)的知識(shí)和技能,必須有一種“有收獲”,“有提高”的感覺。簡單的信息獲取不能叫做“學(xué)習(xí)”,只能叫做“了解”。分清“了解”和“學(xué)習(xí)”,不以老師自居,是尊重人的一個(gè)重要表現(xiàn)。

明確自己的要求,不要使用指責(zé)的語氣

有些人很怪異,他根本沒告訴過你他想要什么,有什么特別的要求,可他潛意識(shí)里假設(shè)已經(jīng)告訴你了。到了后來,他發(fā)現(xiàn)你的作法不符合要求,于是嚴(yán)厲指責(zé) 你沒有按照他“心目中的要求”辦事。這種現(xiàn)象不止限于程序員,而且包括日常生活中的普通人。舉個(gè)例子,我媽就是這種人的典型,所以我以前在家生活經(jīng)常很辛 苦。她心目中有一套“正確”的做事方式,如果你沒猜出來就會(huì)挨罵。你為了避免挨罵,干脆什么事都不要做,然后她又會(huì)說你懶,所以你就左右不是人 :)

IT公司里面也有挺多這樣的人,他們假設(shè)有些信息他已經(jīng)告訴你了,而其實(shí)根本沒告訴你。到了后來,他們開始指責(zé)你沒有按照要求做事。有些極其奇葩的 公司,里面的程序員不但喜歡以老師自居,而且他們“傳授”你“知識(shí)”的主要方式是指責(zé)。他們事先不告訴你任何規(guī)則,然后只在你違反的時(shí)候來責(zé)備你。我曾經(jīng) 在這樣一個(gè)公司待過,名字就不提了。

現(xiàn)在舉一個(gè)具體的場景例子:

A: 你push到master了?
B: 是???怎么了?
A: 不準(zhǔn)push到master!只能用pull request!
B: 可是你們之前沒告訴過我啊……
A: 現(xiàn)在你知道了?!

注意到了嗎?這不是一個(gè)技術(shù)問題,而是一個(gè)禮節(jié)(etiquette)問題。你沒有事先告訴別人一些規(guī)則,就不該用怪罪的語氣來對(duì)人說話,況且你的 規(guī)則還不一定總是對(duì)的。所以我現(xiàn)在提醒各位IT公司,在技術(shù)上的某些特殊要求必須事先提出來,確保程序員知道并且理解。如果沒有事先提出,就不要怪別人沒 按要求做,因?yàn)檫@是非常傷害人自尊的作法。其實(shí),在任何時(shí)候都不應(yīng)該使用指責(zé)的語氣,它不但對(duì)解決問題沒有任何正面作用,而且會(huì)惡化人際關(guān)系,最終導(dǎo)致更 加嚴(yán)重的后果。

#p#

程序員的工作量不可用時(shí)間衡量

很多IT公司管理層不懂得如何估算程序員的工作量,所以用他們坐在自己位置上工作的時(shí)間來估算。如果你能力很強(qiáng),在很短的時(shí)間內(nèi)把最困難的問題解決 了,接下來他們不會(huì)讓你閑著,而會(huì)讓你做另外一些很低級(jí)的活。這是很不合理的作法。打個(gè)比方,能力強(qiáng)的員工就像一輛F1賽車,馬力和速度是其他人的幾十 倍。當(dāng)然,普通人需要很長時(shí)間才能解決,甚至根本沒法解決的問題,到他手里很快就化解掉了。這就像一輛F1賽車,眨眼工夫就跑完了別人需要很久的路程。如 果你用時(shí)間來衡量工作量,那么這輛賽車跑完全程只需要很短時(shí)間,所以你算出來的工作量就比普通車子小很多。你能因此說賽車工作不夠努力,要他快馬再加鞭 嗎?這顯然是不對(duì)的。

物理定律是這樣:能量 = 功率 x 時(shí)間。工作量也應(yīng)該是同樣的計(jì)算方法。英明的,真正理解程序員的公司,就不會(huì)指望高水平的程序員不停地工作。高水平程序員由于經(jīng)常能夠另辟蹊徑,一個(gè)就可 以抵好幾個(gè)甚至幾十個(gè)普通程序員。他們處理的問題比常人的困難很多,費(fèi)腦力多很多,當(dāng)然他們需要更好的休息,保養(yǎng),娛樂,…… 如果你讓高水平的程序員太忙了,一刻都不停著,有趣有挑戰(zhàn)性的事情做完了就讓他們做一些低級(jí)無聊的事情,他們悟出這個(gè)道理之后,就會(huì)故意放慢速度,有時(shí)候 明明很快做完了也會(huì)說沒做完。與其這樣,不如只期望他們工作短一點(diǎn)的時(shí)間,把事情做完就可以。

當(dāng)然這并不是說初級(jí)的程序員就應(yīng)該過量工作。編程是一項(xiàng)艱苦的腦力活動(dòng),超時(shí)超量的工作再加上壓力,只會(huì)帶來效率的低下,質(zhì)量的降低。

不要讓其他人修補(bǔ)自己的BUG

這個(gè)我已經(jīng)在一篇專門的文章里討論過。讓一個(gè)程序員修補(bǔ)另外一個(gè)程序員的BUG,不但是效率低下,而且是不尊重程序員個(gè)人價(jià)值的作法,應(yīng)該盡量避免。

在軟件行業(yè),經(jīng)??吹接械墓竟芾碜屢粋€(gè)人修補(bǔ)另一個(gè)人代碼里的BUG。有時(shí)候有人寫了一段代碼,扔出來不管了,然后公司管理讓其他工程師來修復(fù)它。我想告訴你們,這種方法會(huì)很失敗。

首先,讓一個(gè)人修復(fù)另一個(gè)人的BUG,是不尊重工程師個(gè)人技術(shù)的表現(xiàn)。久而久之會(huì)降低工程師的工作積極性,以至于失去有價(jià)值的員工。代碼是人用心寫 出來的作品,就像藝術(shù)家的作品一樣,它的質(zhì)量牽掛著一個(gè)人的人格和尊嚴(yán)。如果一個(gè)人A寫了代碼,自己都不想修復(fù)里面的BUG,那說明A自己都認(rèn)為他自己的 代碼是垃圾,不可救藥。如果讓另一個(gè)人B來修復(fù)A代碼里的BUG,就相當(dāng)于是讓B來收拾其他人丟下的垃圾??上攵?,B在公司的眼里是什么樣的地位,受到 什么樣的尊重。

其次,讓一個(gè)人修復(fù)另一個(gè)人的BUG,是效率非常低下的作法。每個(gè)人都有自己寫代碼的風(fēng)格和技巧,代碼里面包含了一個(gè)人的思維方式。人很難不經(jīng)解釋 理解別人的思想,所以不管這兩人的編程技術(shù)高下,都會(huì)比較難理解。不能理解別人的代碼,不能說明這人編程技術(shù)的任何方面。所以讓一個(gè)人修補(bǔ)另一個(gè)人的 BUG,無論這人技術(shù)多么高明,都會(huì)導(dǎo)致效率低下。有時(shí)候技術(shù)越是高的人,修補(bǔ)別人的BUG效率越是低,因?yàn)檫@人根本就寫不出來如此糟糕的代碼,所以他無 法理解,覺得還不如推翻重寫一遍。

當(dāng)我在大學(xué)里做程序設(shè)計(jì)課程助教的時(shí)候,我發(fā)現(xiàn)如果學(xué)生的代碼出了問題,你基本是沒法簡單的幫他們修復(fù)的。我的水平顯然比學(xué)生的高出許多,然而我卻 經(jīng)常根本看不懂,也不想看他們的代碼,更不要說修復(fù)里面的BUG。就像上面提到的,有些人自己根本不知道自己在寫什么,做出一堆垃圾來。看這樣的代碼跟吃 屎的感覺差不多。對(duì)于這樣的代碼,你只能跟他們說這是不正確的。至于為什么不正確,你只能讓他們自己去改,或者建議他們推翻重寫。也許你能指出大致的方向 和思路,然而深入到具體的細(xì)節(jié)卻是不可能的,而且不應(yīng)該是你的職責(zé)。這就是我的教授告訴我的做法:如果代碼不能運(yùn)行,直接打一個(gè)叉,不用解釋,不用推敲, 等他們自己把程序改好,或者實(shí)在沒辦法,來office hours找你,向你解釋他們的思想。

如果你明白我在說什么,從今天起就對(duì)自己的代碼負(fù)起責(zé)任來,不要再讓其它人修補(bǔ)自己的BUG,不要再修補(bǔ)其他人的BUG。如果有人離開公司,必須要 有人修補(bǔ)他遺留下來的BUG,那么說話應(yīng)該特別特別的小心。你必須指出需要他幫忙的特殊原因,強(qiáng)調(diào)這件事本來不是他的錯(cuò),本來是不應(yīng)該他來做的,但是有人 走了,沒有辦法,并且誠懇的為此類事情的發(fā)生表示歉意。只有這樣,程序員才會(huì)心甘情愿的在這種特殊關(guān)頭,修補(bǔ)另外一個(gè)人的BUG。

#p#

不要嚷著要?jiǎng)e人寫測試

在很多程序員的腦子里,所謂的“流程”和“測試”,比真正解決問題的代碼還重要。他們跟你說起這些,那真的叫正兒八經(jīng),義正言辭?。∷杂袝r(shí)候你很 迷惑,這些人除了遵守這些按部就班的規(guī)矩,還知道些什么。大概沒有能力的人都喜歡追究各種規(guī)矩吧,這樣可以顯得自己“沒有功勞有苦勞”。這些人自己寫的代 碼很平庸,不知道如何簡單有效地解決困難的問題,卻喜歡在別人提交代碼讓他review的時(shí)候叫喊:“測試很重要!覆蓋很重要!你要再加一些測試才能通過 我的review!”

本來code review是讓他們幫忙發(fā)現(xiàn)可能存在的問題,有些人卻仿佛把它作為了評(píng)判(judge)其他人能力,經(jīng)驗(yàn),甚至智商的機(jī)會(huì)。他們根本不明白別人代碼的實(shí) 質(zhì)價(jià)值,就知道以一些表面現(xiàn)象來判斷。我在Google實(shí)習(xí),最后提交了質(zhì)量和難度都非常高的代碼,然而一些完全沒能力寫出這樣代碼的人,不但沒表示出最 基本的肯定,反而發(fā)出沉悶的咆哮:“快——寫——測——試!” 你覺得我會(huì)高興嗎?

我并不否認(rèn)測試的用處,然而很多人提起這些事情時(shí)候,語氣和態(tài)度是非常不尊重,讓人反感的。這些人不但沒有為解決問題作出任何實(shí)質(zhì)貢獻(xiàn),當(dāng)有人提交 解決方案的時(shí)候,他們沒有表達(dá)對(duì)真正做出貢獻(xiàn)的人的尊重和肯定,反而指責(zé)別人沒寫測試。好像比他高明的人解決了問題,他反倒才是那個(gè)有發(fā)言權(quán)的,可以評(píng)判 你的代碼質(zhì)量似的:“我管你代碼寫得多好,我完全沒能力寫出來,但你沒寫測試就是不夠?qū)I(yè)。你懂不懂測試的重要性啊,還做程序員!”

人際交往的問題經(jīng)常不在于你說了什么,而在于你是怎么說的。所以我的意思并不是說你不該建議寫測試,然而建議就該有建議的語氣和態(tài)度。因?yàn)槟銢]有做 實(shí)際的工作,所以一些禮貌用語,比如“請(qǐng)”,“可不可以”……是必須的。經(jīng)常有人說話不注意語氣和態(tài)度,讓人反感,卻以自己是工程師,不善于跟人說話為借 口。永遠(yuǎn)要記住,你沒有做事,說話就應(yīng)該委婉,切不可使用光禿禿的祈使句,說得好像這事別人非做不可,不做就是不懂規(guī)矩一樣。

禮貌的語言,跟人的職業(yè)完全沒有關(guān)系。身為工程師,完全不能作為說話不禮貌的借口。

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

Git是現(xiàn)在最流行的代碼版本控制工具。用外行話說,Git就是一個(gè)代碼的“倉庫”或者“保管”,這樣很多人修改了代碼之后,可以知道是誰改了哪一 塊。其實(shí)不管什么工具,不管是編輯器,程序語言,還是版本控制工具,比起程序員的核心思想來,都是次要的東西,都是起輔助作用的。可是Git這工具似乎特 別惹人惱火。

Git并不像很多人吹噓的那么好用,其中有明顯的蹩腳設(shè)計(jì)。跟Unix的傳統(tǒng)一脈相承,Git沒有一個(gè)良好的包裝,設(shè)計(jì)者把自己的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)無情 地泄露給了用戶,讓用戶需要琢磨者設(shè)計(jì)者內(nèi)部到底怎么實(shí)現(xiàn)的,否則很多時(shí)候不知道該怎么辦。用戶被迫需要記住挺多稀奇古怪的命令,而且命令行的設(shè)計(jì)也不怎 么合理,有時(shí)候你需要加-f之類的參數(shù),各個(gè)參數(shù)的位置可能不一致,而且加了還不一定能起到你期望的效果。各種奇怪的現(xiàn)象,比如"head detached",都強(qiáng)迫用戶去了解它內(nèi)部是怎么設(shè)計(jì)的。隨著Git版本的更新,新的功能和命令不斷地增加,后來你終于看到命令行里出現(xiàn)了 foreach,才發(fā)現(xiàn)它的命令行就快變成一個(gè)(劣質(zhì)的)程序語言。如果你了解ydiff的設(shè)計(jì)思想,就會(huì)發(fā)現(xiàn)Git之類基于文本的版本控制工具,其實(shí)屬于古代的東西。然而很多人把Git奉為神圣,就因?yàn)樗荓inus Torvalds設(shè)計(jì)的。

Git最讓人惱火的地方并不是它用起來麻煩,而是它的“資深用戶”們居高臨下的態(tài)度給你造成的心理陰影。好些人因?yàn)樽约?ldquo;精通Git”就以為高人一 等,擺出一副專家的態(tài)度。隨著用戶的增加,Git最初的設(shè)計(jì)越來越被發(fā)現(xiàn)不夠用,所以一些約定俗成的規(guī)則似乎越來越多,可以寫成一本書!跟Unix的傳統(tǒng) 一脈相承,Git給你很多可以把自己套牢的“機(jī)制”,到時(shí)候出了問題就怪你自己不知道。所以你就經(jīng)常聽有人煞有介事的說:“并不是Git允許你這么做,你 就可以這么做的!Unix的哲學(xué)是不阻止傻人做傻事……” 如果你提交代碼時(shí)不知道Git用戶一些約定俗成的規(guī)則,就會(huì)有人嚷嚷:“rebase了再提交!” “不要push到master!” “不要merge!” “squash commits!” 如果你不會(huì)用git submodule之類的東西,有人可能還會(huì)鄙視你,說:“你應(yīng)該知道這些!”

打個(gè)比方,這樣的嚷嚷給人的感覺是,你得了奧運(yùn)會(huì)金牌之后,把練習(xí)用的器材還回到器材保管科,結(jié)果管理員對(duì)你大吼:“這個(gè)放這邊!那個(gè)放那邊!懂不 懂規(guī)矩啊你?” 看出來問題了嗎?程序員提交了有高價(jià)值的代碼(奧運(yùn)金牌),結(jié)果被一些自認(rèn)為Git用的很熟的人(器材保管員)厲聲呵斥。

一個(gè)尊重程序員的公司文化,就應(yīng)該把程序員作為運(yùn)動(dòng)健將,把程序員的代碼放在尊貴的地位。其它的工具,都應(yīng)該像器材保管科一樣。我們尊重這些器材保 管員,然而如果運(yùn)動(dòng)員們不懂你制定的器材擺放規(guī)矩,也應(yīng)該表示出尊重和理解,說話應(yīng)該和氣有禮貌,不應(yīng)該騎到他們頭上。所以,對(duì)于Git的一些命令和用 法,我建議大家向新手介紹時(shí),這樣開場:“你本來不該知道這些的,可是現(xiàn)在我們沒有更好的工具,所以得這樣弄一下……”

責(zé)任編輯:王雪燕 來源: yinwang.org
相關(guān)推薦

2015-06-09 15:28:14

編程能力編程

2015-03-18 09:51:45

2012-05-25 10:54:24

程序員

2022-08-22 12:03:25

代碼技術(shù)

2015-03-25 09:55:34

程序員程序員修補(bǔ)BUG真正原因

2013-11-15 09:03:43

程序員職業(yè)

2022-08-11 09:41:35

阿里程序員

2009-06-02 13:43:04

程序員定義職場

2015-07-14 10:21:58

2018-02-28 13:00:19

2019-01-02 07:36:28

微軟 Windows 程序員

2018-06-25 13:37:13

2018-08-02 16:00:26

程序員專家自我學(xué)習(xí)

2017-12-07 16:13:18

程序員編程代碼

2014-07-30 13:44:57

2012-11-01 11:31:56

程序員編程開發(fā)

2011-03-22 10:16:48

程序員

2013-07-09 09:11:50

程序員

2019-06-06 20:09:30

小米MIUI

2021-03-03 23:25:28

程序員工具效率
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)