程式設計師是我見過的最樂觀的一些人。要問我們完成一件事情需要多久,而我們的估計通常和實事相差十萬八千里。
不是因為我們討厭你(才故意說錯),也不是因為我們不能估計得更好。我們只是對所有事情都太樂觀:專案、技能、技術、規格書、未知的事物……
未知的事物尤其是個大問題 —— 要判斷出所有可能出錯的事情幾乎是不可能的。
現在看起來我們可以在一個小時之內完成,但奇怪的事情接連發生,可能我們要耗上一整天。
作為程式設計師,我們要假設最簡單複雜度的情況,甚至是乘以Pi。
還有一種職業在面對不確定性時通常給予很多預測——醫生。當醫生預測錯了,人們通常歡欣雀躍。什麼?
讓我來告訴你一則兩個有關預測的故事——一個保守的預測和一個程式設計師的預測。
兩個關於預測的故事
上週五我的肩膀受傷了,更準確的說是鎖骨和肩部的連線處。是因為我玩滑板時,作了錯誤的動作,重重的摔在了碎石路上。
早上我需要用我的左手吃早餐,幾乎不能拾起勺子。
醫生告訴我,嘿,骨頭和結合處看起來還好(沒有脫臼),但我把肌腱弄傷了。要我做好準備三個星期都會很疼。“如果很疼的話就用些止痛藥”,他們說。
今天,第六天,我們肩膀肩膀已經90%痊癒了。咬咬牙,今早我還是可以完成60個伏地挺身(我通常做150個)。跳神也不是什麼大問題。昨天我甚至可以用右手提起4公斤重的滑板提很長一段時間。
一兩天後我會痊癒,醫生個估計足足有3倍的誤差。我開心得不得了,一整天都很興奮!
程式設計師的預測
我在做一個網頁的分割演算法,就是要拿到一個網頁,判斷哪些部分是頭,哪些是側邊欄等。這是個非常有趣的問題,因為其他人只關心最主要的部分。
這個演算法從這周初起就成功了,僅僅要做的是將最後的結果和原始的HTML程式碼合併。
我說我這週五早上會完成。
我意思是這有多困難嗎?我只是用了一種我討厭的語言(Java),還有我沒經驗也不喜歡還試著去迴避的圖表,以及兩週前才開始碰的一個庫。
我想我在週五早晨之前可以完成一個我沒有完全理解的工作!這個估算脫口而出,它必然是正確的。我是個經驗老道的程式設計師!
不,我最終食言了。
我發現我並沒有理解boilderpipe物件的層次——在擴充套件某個物件的功能時花了我好多個小時。
然後我發現HTML分析器是線性的,所以沒有簡單明瞭的方法可以確定哪些子節點屬於哪些父節點。
最後我幾乎花了所有的時間,僅僅去設法找出如何用最原生態的方法將演算法的結果新增到HTML中去——在DOM中的每個節點前加個數字。
哎喲。
程式設計師都是樂天派
當你和程式設計師聊天時,請記住,他們都是樂天派。是的,就算是最沮喪的邋遢的老程式設計師也是樂觀得要命。我們是這樣的人:
● 帶著僥倖的心理投入到時時在變的專案
● 碰到一堆沒聽過的工具,並在一些未知的領域中使用它們,最後還奏效了
● 每個新專案都是完全不同的世界
● 每隔幾年就要更換所有的工具
● 誰不是樂天派的話就不可能成為一個程式設計師。
其他的職業的人會怎麼描述自己?
原文:swizec.com 編譯:伯樂線上 – 唐小娟
【如需轉載,請標註並保留原文連結、譯文連結和譯者等資訊,謝謝合作!】