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

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

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