程序員?還是小丑?
文章內(nèi)容如下:
這是我遇到的問(wèn)題。
和你從不認(rèn)識(shí)的人坐在一起,試圖弄清楚他是個(gè)程序員還是個(gè)小丑。
我沒(méi)有想侮辱任何人的意思,而且,我是第一個(gè)要感謝這么多年的教育和努力終于把我變成一個(gè)專業(yè)小丑的人。
但是,有些程序員,我的天。
就像最近,我面試了一位畢業(yè)生。我把他叫做Ada。對(duì)于程序員新手,我充滿憐憫,為了和緩的幫他熱熱身,我給了他一道溫和的問(wèn)題來(lái)消解我們之間的陌生。
我讓Ada寫一段程序,在紙上,打印出“hello“這個(gè)詞10次。用什么語(yǔ)言都行,我說(shuō)。
下面就是Ada寫出的。

不管怎么說(shuō),拼寫是完全沒(méi)有錯(cuò)誤的
我差點(diǎn)就被這些化妝成程序員的小丑給騙了。我本以為他會(huì)使用一些基本的循環(huán)句法。你說(shuō)這種東西還要去告訴他嗎?
是的,我覺(jué)得也沒(méi)必要。
有些人喜歡集郵。我喜歡收集詭異的代碼。我在代碼審查的過(guò)程中收集它們,這些年已經(jīng)有了豐富的收獲。我收集它們主要是好玩,但在面試中它們卻能派上大用場(chǎng)。
我會(huì)在一次面試中挑出10個(gè)代碼例子,大多少是C#和TSQL代碼,然后問(wèn)面試者如何評(píng)價(jià)它們。
事實(shí)上,由于經(jīng)常做這個(gè),我已經(jīng)記住了一段解說(shuō)詞,就像這樣:
我會(huì)向你展示一些代碼,這些代碼都是在正式的代碼審查中發(fā)現(xiàn)的,它們都是已經(jīng)準(zhǔn)備好要發(fā)布給客戶的代碼。你可以認(rèn)為它們是經(jīng)過(guò)編譯,測(cè)試,能符合需求要求運(yùn)行工作的代碼。你需要指出的是這些代碼中存在的一些涉及到日后維護(hù)工作的問(wèn)題。
語(yǔ)法型小丑
這樣,就比如我會(huì)展示一段像這樣的代碼
- if(long.TryParse(x, out number))
- number = long.Parse(x);
對(duì)于這段代碼,你可能會(huì)驚訝,我希望程序員能發(fā)現(xiàn)這第二行代碼完全是多余的。但語(yǔ)法型小丑會(huì)立即指出你沒(méi)有聲明x 和 number 變量。
“提醒一下”,我說(shuō),“這是從一大段程序中摘錄出來(lái)的,它是編譯通過(guò)的,而且經(jīng)過(guò)測(cè)試。“然后我滿懷希望的看著他。
語(yǔ)法型小丑執(zhí)著的回復(fù)說(shuō)“可是你確實(shí)沒(méi)有聲明這些變量!“
“你再說(shuō)一次這些變量沒(méi)有定義,
你他媽的再說(shuō)一次,我看你敢。”
萬(wàn)事通女孩羅西型小丑
語(yǔ)法型小丑歸罪于沒(méi)有好好聽(tīng),萬(wàn)事通女孩羅西型小丑問(wèn)題更大了。
羅西女孩拒絕相信代碼里有任何的錯(cuò)誤,即使在我明確的說(shuō)“這里有一些問(wèn)題,你要找出它們!“很顯然,在羅西女孩生活的魔幻世界里沒(méi)有任何不好的代碼。
“不會(huì)有寫的不好的代碼的,
而且,你看我這可愛(ài)的頭發(fā)!”
“我一眼就看出來(lái)了,我只是不知道如何向你解釋“型小丑
用力的一彈紙,確信的一點(diǎn)頭,很顯然,這種小丑清楚的知道問(wèn)題出在哪里。
但是就是在這關(guān)口,他們無(wú)法找到正確的詞來(lái)解釋清楚。
即使你給他幾分鐘讓他想想,他們還是想不出來(lái)。你等他一整天,還是如此。
即使你等到海枯石爛、對(duì)面只剩下一堆骨架,你也等不到他們能找到正確的詞語(yǔ)來(lái)答復(fù)你。
盡管他們有發(fā)現(xiàn)問(wèn)題的銳智和本能,這類小丑不能表達(dá)出來(lái),這不能不讓人惋惜。
“等等!我知道怎么回事!
可是,我怎么用簡(jiǎn)潔的話把它說(shuō)清楚呢…
小題大做型小丑
這種小丑很神奇。當(dāng)能用迭代器時(shí)他們絕對(duì)不愿意使用簡(jiǎn)單的循環(huán)。當(dāng)能用遞歸時(shí),他們絕對(duì)不愿意使用簡(jiǎn)單的迭代。如果你想派人參加代碼混淆技術(shù)大賽,這些小丑正是你要找的人。

“這代碼很明顯缺少抽象—代理—façade模式…”
憤怒型小丑
很多次我都會(huì)被禮貌的問(wèn)候,與他們愉快的談?wù)撎鞖?,倒杯茶,安排妥?dāng),開(kāi)始一場(chǎng)關(guān)于編程的對(duì)話。
接下來(lái)的事情會(huì)讓你無(wú)法招架。
憤怒型小丑很酷,沉著,鎮(zhèn)定—在你問(wèn)他第一個(gè)問(wèn)題前。
“我怎么他媽的會(huì)知道,這是他媽的什么破問(wèn)題”
并不是都這樣糟糕
公平的說(shuō),如果某個(gè)人在面試我,他也許會(huì)認(rèn)為我是個(gè)小丑,也許認(rèn)為我是這些類型小丑的混合體。這是面試官的特權(quán)。
不僅如此,一些程序員會(huì)認(rèn)為給他們面試的人正是馬戲團(tuán)團(tuán)長(zhǎng),這是他們的特權(quán)。
不管情形是怎樣,親愛(ài)的程序員們,你要明白,我只是想在我們之間建立一種融洽的關(guān)系。但有時(shí)候,我發(fā)現(xiàn)這很難。
還是很有趣的。
原文:http://www.aqee.net/coder-or-clown/
【編輯推薦】