iT邦幫忙

12

這篇文章給他X的中肯

「這個網站相當簡單,你要做的就是完成X、Y、Z。你看起來技術很好,所以,我相信,你不需要花費太多時間就能把它做出來。」
這個網站相當簡單,你要做的就是完成X、Y、Z。你看起來技術很好,所以,我相信,你不需要花費太多時間就能把它做出來。」

我不時的就會收到這樣的Email。寫這些信的人幾乎都是跟技術沾不上邊的人,或正在研究他們的第一個產品。一開始,當聽到人們這樣講,我總是十分的惱怒。他們以為是在跟誰討論軟體開發所需時間?

但後來我發覺,即使我自己對自己的計劃預測要花多少開發時間,我也是沒那麼有把握。如果連我自己都做不好,我何必對那些人惱怒呢?真正讓我覺得悶的不是他們預估的錯誤。問題在於他們竟然認為自己可以做出正確的估計。作為開發人員,我們經常會發現,在軟體開發的問題上,一個外行人會很自然的把複雜的事情估計的很簡單。

這並不是為我們的憤怒找藉口,但倒是提醒了我們另外一個有趣的問題:為什麼我們天生預測複雜性的能力在遇到程式開發時會失靈?

為了回答這個問題,讓我們來認識一下我們的大腦如何評估事情的。有些事情對於一些沒有經驗的人也很容易預估正確,但有些事情則不然。

我們來想想,觀看某人演奏吉他。即使你從來沒有彈過吉他,在看了一場彈奏「瑪麗有隻小羊(Mary had a Little Lamb)」的吉他表演後,你也能大概推測出這很簡單,一個人不需要好的技巧就能演奏出來。同樣,當觀看某人演奏D大調的「卡農(Pachabel's Canon)」後,你也很容易推測出,這很複雜,需要很長時間的練習才能演奏的出來。

為什麼我們能夠很迅速準確的預估這兩首曲子的複雜性呢?這跟我們用來判斷一個事情簡單和還是複雜的方法有關。

我們大腦有一些現成的模式來完成這些事情,首先一個就是根據速度。這種情況下,大腦會辨別每秒鐘演奏的東西。根據每秒鐘演奏了多少東西,我們很容易有一個直觀判斷,來決定曲子的複雜度。因為用吉他演奏一首歌是一種物理過程、一種感官上的活動,我們的大腦很容易依此來推測速度,繼而轉換成複雜度。

我們還有另外一個天生的推測依據:體積。想想把一個帳篷和一棟公寓放在一起對比。即使一個人從來沒有學過建築學,他也能告訴你通常設計建造一個帳篷會比設計建造一棟公寓要簡單。

為什麼?因為我們天生的會使用物理體積作為事物複雜性的一個指標。

當然。上面說的這兩種邏輯分析並不總是100%有效。但大多數情況下,人們就是這樣做,而且很奏效。大多數情況中,我們在對物理過程評估時,我們的大腦會對物理事物進行有效的關聯,不需要依賴之前的經驗。

現在讓我們來談談軟體。當一個不懂技術的人試圖對軟體開發時間進行評估時,有兩個很基本的直觀指標在輔助他們:以體積為指標的複雜度和以速度為指標的複雜度。但他們沒有意識到,軟體跟他們想像的不一樣。軟體本質上不是有形物質。沒有體積和速度。它的極小的組成部分可能會時不時的在電腦螢幕上閃現。正因為如此,當面對開發一個網路應用程式時(或任何類型的軟體),我們的基本直觀感覺失效了。

這第一點,速度,很顯然根本不可能被外行人拿來對軟體進行評估。於是很自然的,他們傾向於使用體積指標進行評估。要嘛是根據需求描述的文件頁數,要嘛是根據軟體的功能範例數或功能數。

有時候,這種評估手段確實有效,面對一個靜態網站,沒有特別的設計要求,外行人很容易用這種方法估計出開發時間。但是,通常情況下,對於軟體開發,體積​​並不能真實有效的反映複雜度。不幸的是,對於軟體的複雜度,唯一有效的推測方法是依據經驗。而且還不是每次都好用。

作為一個程式開發者,我知道,根據我之前開發過的相似的功能,我可以估算出現在的這些功能各自要多少開發時間。然後,我把總時間加起來,這就得到了完成整個計劃需要的大概時間。然而,事實情況中,每個計劃在開發過程中都會遇到二、三個瓶頸。這些瓶頸會肆意的消耗開發者的大量時間,你在遇到它們之前根本不會料想到。它們會拖住整個計劃,使得開發時間延後數週甚至數月。

這些是沒有經驗的人在評估複雜度時不會理解的。他們不明白在其他事情上都有效的方法,為什麼放到軟體開發上就不靈了。所以,下一次當你聽到有人說「我想你幾天時間就能把它開發出來」時,不管是誰說的,都不要懊惱。深呼吸一下,給他這篇文章的連結,然後繼續做自己該做的事。


0
賽門
iT邦超人 1 級 ‧ 2013-01-26 07:55:36

我更常面臨的問題是, 相同的複雜度的程式, 這個程式設計師要花一個星期交出全是Bug的程式, 另一個程式設計師可以在兩天內交出已經完全除錯的完整程式.

所以...

Do not ask what your boss can do for you, ask what you can do for your boss....毆飛

May the force be with you...(請想像一隻熊俠對著你比'耶~~'的手勢...)

0
海綿寶寶
iT邦大神 1 級 ‧ 2013-01-26 12:57:41

還有一些人的口頭禪更令人為之氣結
就是
「技術我是不懂啦」
但是如果可不可以怎麼做怎麼做怎麼做
然後就可以怎麼樣怎麼樣怎麼樣
不耐煩

花輪 iT邦大師 1 級 ‧ 2013-01-26 17:01:49 檢舉

讚讚讚讚讚讚

0
賽門
iT邦超人 1 級 ‧ 2013-01-26 16:36:32

iT邦幫忙MVPantijava提到:
「技術我是不懂啦」

通常我會接一句:
等你搞懂再來談, 現在我們散會!

如果對方還是堅持...

iT邦幫忙MVPantijava提到:
但是如果可不可以怎麼做怎麼做怎麼做
然後就可以怎麼樣怎麼樣怎麼樣

我會接著說:
技術上, 你的建議都不可能做到, 請搞懂後再來討論, 現在, 我們散會!

如果, 對方講...這樣不就議而不決了嗎?
我會接著說:
決而不果更是問題, 照你這樣搞法, 根本做不出成果, 等你搞懂我們再來開會, 現在, 散會!

看更多先前的回應...收起先前的回應...
wiseguy iT邦超人 1 級 ‧ 2013-01-26 17:07:20 檢舉

這句通常是老闆壓榨員工的開場白:
『技術我是不懂啦,不過如果這個時程做不出來,大家看著辦。』

cmwang iT邦大師 1 級 ‧ 2013-01-26 17:10:01 檢舉

wiseguy提到:
這句通常是老闆壓榨員工的開場白:
『技術我是不懂啦,不過如果這個時程做不出來,大家看著辦。』

那員工也回老闆一句您就看著辦時不知會發生啥事啊哈哈哈哈....

wiseguy提到:
這句通常是老闆壓榨員工的開場白:

果然是有聽過的經驗之談
搖頭

賽門 iT邦超人 1 級 ‧ 2013-01-26 19:54:11 檢舉

wiseguy提到:
通常是老闆壓榨員工的開場白

老闆, 你不懂技術就算了, 還押個不可能的時間表, 要人沒人, 要錢沒錢!
算啦何必呢? 這是我的辭呈, Bye

cmwang iT邦大師 1 級 ‧ 2013-01-26 20:10:13 檢舉

其他同事:Good Job哈哈哈哈....
老闆:Good Job(剛好讓我找其他新鮮的肝進來,還不用付資遣費偷笑偷笑)....

賽門 iT邦超人 1 級 ‧ 2013-01-26 20:41:59 檢舉

CM老大的看法是常見的反應, 這也是台灣公司的生態與常態, 所以, 台灣的公司多半很短命.
老闆也動不動就被淘汰.

cmwang iT邦大師 1 級 ‧ 2013-01-28 09:18:29 檢舉

simon581923提到:
CM老大的看法是常見的反應, 這也是台灣公司的生態與常態, 所以, 台灣的公司多半很短命.
老闆也動不動就被淘汰.

台灣的老闆最擅長的就是反淘汰,所以鵝很不幸的就是被優先淘汰的那一類哈哈哈哈....

0
花輪
iT邦大師 1 級 ‧ 2013-01-26 17:14:59

賽大: 這比較像 BOSS LEVEL 才敢講的話,我們 職位低、薪水低、講話沒人要聽..Orz

N年前,小的有幸參與公司一項新產品的研發,負責站在 "使用者" 的立場提出產品開發的建議(包括售後服務),當產品雛型出來後的某次會議,我把"它"批評的一無是處,並建議停止或重新再來,但畢竟'人單勢孤'加上'人微言輕',在座全都是研發單位相關人員,我的老闆也沒出席,會議主持人撂下一句"放棄的話,已經花的幾百萬預算由誰吸收?是否請貴單位吸收,我......是誰啊!然後主持人就宣布 "繼續開發",後來的結果,真的是...慘不忍睹,還好我那時已經調單位了,不然,屁股真的擦不完,而該產品也很快就 EOL 了,連帶該研發單位也...解散了。所以,小的對您的景仰,如滔滔江水,綿延不絕...

花輪 iT邦大師 1 級 ‧ 2013-01-26 17:15:31 檢舉

哈哈哈哈哈哈哈哈哈哈哈哈
飛

賽門 iT邦超人 1 級 ‧ 2013-01-26 19:56:11 檢舉

iT邦幫忙MVPfran633提到:
BOSS LEVEL

這好像是要拿到死光槍才能打敗的Level...毆飛

0
門神JanusLin
iT邦超人 1 級 ‧ 2013-01-26 20:09:14

xyz Cityhunter
牙羽獠(孟波)

賽門 iT邦超人 1 級 ‧ 2013-01-26 21:17:34 檢舉

solzxer提到:
你要做的就是完成X、Y、Z。

是指這個嗎?

XYZ牙羽獠(孟波)
的任務還真是辛苦啊 XDDD
國立圖書館有整套的漫畫
我都還會去翻一翻
城市獵人
天使心

0
wawa
iT邦新手 5 級 ‧ 2013-01-27 13:17:13

最後一段也真他X的太中肯了!(氣結到最後可以溫馨起來~泡湯XD)

0
Albert
iT邦高手 1 級 ‧ 2013-01-27 17:50:46

作為一個程式開發者,我知道,根據我之前開發過的相似的功能,我可以估算出現在的這些功能各自要多少開發時間。然後,我把總時間加起來,這就得到了完成整個計劃需要的大概時間。然而,事實情況中,每個計劃在開發過程中都會遇到二、三個瓶頸。這些瓶頸會肆意的消耗開發者的大量時間,你在遇到它們之前根本不會料想到。它們會拖住整個計劃,使得開發時間延後數週甚至數月。

沒試作此系統=沒接單資格
它們會拖住整個計劃,使得開發時間延後數週甚至數月
這是把企業當 學院的[試作實驗]
這真是好厲害
這樣發包 跟 這樣接單 都是在玩企業
真是利害

看更多先前的回應...收起先前的回應...
Albert iT邦高手 1 級 ‧ 2013-01-27 18:07:10 檢舉

albertachen提到:
它們會拖住整個計劃,使得開發時間延後數週甚至數月。

他們根本妹有資格進入團隊

他們的妹妹有沒有資格進入團隊應該不關這檔事吧⊙_⊙?

花輪 iT邦大師 1 級 ‧ 2013-01-28 08:54:10 檢舉

有喔~~ 有妹有士氣咩...逃跑

小狼兄看到妹子們 要變大狼了嗎驚

0
newkevin
iT邦高手 1 級 ‧ 2013-01-29 11:58:36

XYZ 是客戶要求 使命必達射門

技術不行
是專案主管找錯人 應該考慮其他技術踹共

技術可以 但做不出來
主管領導不足 員工訓練不足 及 人事主管 面試官 要加強磨練毆飛
哈哈

我要留言

立即登入留言