為什麼程式設計師不會最簡單的100到1的輸出?

2015-04-13    分類:程式設計師人生41人評論發表於2015-04-13

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

我最近寫了一本書,是關於我們作為程式設計師應該停止抱怨,專注於發展技能的。

其中一個資料要點是基於我在兩個月的時間裡為我的一個客戶執行的22場程式設計師職位面試。

雖然這很難被認為是可取的樣本數量,但它確實暴露了一些關於程式設計師的有趣事實。下面這兩個看似完全無關的問題,是我們在面試中不同時間段提出的:

  • 談談當前單位或管理人員的哪些事情是你不喜歡/不滿意的。
  • 解決一個簡單的程式設計問題(絕對比著名的Fizz Buzz 問題要容易得多)。

我們的目的是為了研究抱怨和編碼能力之間的相關性。下面是我們收集的資料集合(當然由於我沒有攜帶秒錶,所以已經將資料四捨五入至單位秒):

儘管曲線並不是非常一致,但是總的趨勢依然十分明顯——抱怨和解決簡單程式設計問題的能力之間有很強的聯絡。

挺有趣的,是不是。而更有趣的是,這個實際要求應聘人員解決的程式設計問題難倒了很多人,並且我敢保證這問題絕對比Fizz Buzz 問題要容易得多:

  • 約14%的人無法在10分鐘以內解決—— 這時我們需要提下一個問題了。
  • 約40%的人需要5分鐘以上的時間才能解決問題,和/或不止一次的修改。
  • 只有約14%的人能在2分鐘及以內解決這個問題。
  • 約82%的人在解決問題之前,至少得修改一次。 (這意味著實際上他們第一次寫的程式碼是錯的!)

那麼他們要解決什麼問題呢?

輸出100到1。

這就是問題。

關鍵點是什麼?

一開頭你就需要寫“for(int i = 0;”,然後再繼續——在“for(int i = 0;”之前,你不能寫任何東西,並且你不能使用兩個迴圈。

按照這個方向試試。最多兩分鐘,最多4行程式碼,包括花括號在內——但是如果方向不對,就會衍生出很多很多行程式碼。

如果你能在合理的時間內,不犯錯誤地輸出正確的結果,那麼我們就認為你的答案是正確的。

但是特別讓人難以理解的是,無數程式設計師面對這問題——抓耳撓繞,絞盡腦汁,最後甚至於不得不放棄。

不相信?那我告訴你,我曾碰到過兩個程式設計師,在10分鐘攻擂失敗之後,居然說這個問題太複雜了,他們搞不來。

雖然這個小小的試驗顯示了抱怨與技能之間的相關性,但卻並沒有建立任何因果關係。換句話說,我們從這些資料上看不出,是因為程式設計師不具備完成工作的足夠技能才抱怨的呢,還是因為愛抱怨從而使得他們不具備做好工作的技能,這是無法確定的。

也許程式設計師之所以技能不嫻熟是因為喜歡怨天尤人喋喋不休地抱怨,又或許是因為他們總是在抱怨,從而降低了我們對於他們的期望值,不會對他們做過多的要求,於是他們自己也鬆懈了,甚至連最基本的程式設計技巧也荒廢了。

無論是哪種原因,現在存在於IT行業的一個非常可悲的事實就是,你甚至都不需要使用Fizz Buzz這種難度的問題來考校程式設計師的優劣,—— 只要讓他們輸出100到1就夠了。

譯文連結:http://www.codeceo.com/article/why-programmer-not-print-100-1.html
英文原文:hy Can't Programmers Print 100 to 1?
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章