我討厭智力題,我還是個程式設計師嗎?

發表於2011-03-17

大概是一兩個月前,朋友送了我和老婆一份禮物:一個有1000個小拼塊的拼圖版,拼的是艾歇爾名作:

昨天我們決定試一試身手。

仔細看了看這個圖片,60-70%的色塊都是灰的。這些拼塊都非常的小,只有少數幾塊能辨認出上面畫的是什麼東西:艾歇爾的眼睛和背景上窗戶的某些部分。等把這幾塊拼完後,我們就傻眼了。

為什麼人們會喜歡這種東西?如果你實在沒有任何事情可做,那就不說了——但我們還有很多有意義的事情要做。

我們決定放棄。我們再次確認了已知的一個事實:我們討厭做智力遊戲。


(拼圖)

這天晚些時候我在Reddit或是Hacker News或是其它的一個什麼地方發現了這個《21世紀程式設計》的漫畫。畫的是關於程式設計的樂趣。簡而言之:寫公式化的程式碼——無聊;嘗試新的演算法——有趣。

尋找新的演算法是程式設計師版的智力遊戲。當有問題時,能找出解決這個問題的最優演算法是一件非常有趣的事情——不是嗎?當我的博士學習快要結束時,我四處看了看可以去哪裡工作,我發現很多有趣的公司都想要:解決演算法問題能力很強的聰明的小夥和女孩。至少,他們招聘過程體現出來這些。

Facebook:

你喜歡智力題嗎?我們也是。

Google:

四個人需要在晚上通過一個損壞的橋。不幸的是,他們只有一個手電筒,而過這個橋不拿手電筒是很危險的。這座橋每次只能承受兩個人同時經過。每個人通過橋時所需的時間也不一樣。四個人分別用去:1分鐘,2分鐘,7分鐘,10分鐘。四個人都通過這個橋最短需要多少時間?

幾周前,舊金山的一個名聲很響的新銳公司聯絡到我——問我是否有興趣加入他們的團隊。是嗎!太好了!你能否在半個小時內把這個演算法難題解決掉?我失敗了。是否要我結果出來了。故事結束。

我討厭智力題。

不喜歡智力題我就不是一個好程式設計師了嗎?如果我不喜歡或很討厭這種型別的智力題我就不是程式設計師了嗎?有很多跡象表明我可不是一個真正的書呆子——比如,我不喜歡科幻小說。也許只是我不是這些公司要找的那種型別的程式設計師。這很公平。

我程式設計已經有18年了。非常少的機會我需要解決複雜的演算法問題。我喜歡程式設計並不是喜歡解決難題——我是喜歡設計。如何的方式能設計出一個大家都能理解的應用程式?什麼樣的工具能讓開發者們獲得更高的生產效率?

我第一個大工作量的程式設計專案——大概十年前——是YaBB。我需要一個論壇軟體,但你根本找不到一個好的免費的可用。在YaBB裡有很複雜的演算法嗎?幾乎沒有。然而,它對人們卻是非常的有用,而且當時也是非常的成功。

後來我開發了persistence.js 和 mobl。兩種產品都可以使開發人員獲得更多的工作效率。同樣,這裡的挑戰根本不是來自演算法。挑戰性來自API(persistence.js介面)和程式語言(以mobl為例)。兩者都很簡單,強大,靈活,有用。這些都不是簡單的活兒,但都跟演算法沒有什麼關係。它們是設計。

也許我更應該把自己當作一個軟體設計師,而不是一個程式設計師。

程式設計對你意味這什麼?是一種本質的演算法?還是根本不是?我不喜歡智力題是腦袋有問題嗎?

相關文章