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

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

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


















