註冊 | 登入 | RSS Feeds
ZDNet | Taiwan.CNET.com |

廣告:
2007/08/23 05:00:03
大型公共建設軟體專案:讀者回響總結
同人
PlurkFacebook
   

同人先聲明,本篇文章不談高鐵,而是從我所寫的〈從高鐵談大型公共建設軟體開發專案〉的篇的讀者迴響中,發現有一些值得探討的議題,在此做個整理。

委外分包商管理

有讀者提到,大型公共建設軟體開發專案要讓大部分的人滿意,需要整體的合作與共識,所以他認為”分包委外服務提供者”既然受人之託,就要忠人之事,若能做到的話,相信”做好關係人管理,達到同時兼顧所有關係人的期待”將不會是一項挑戰。

對於這個看法,同人在情感上認同”受人之託,就要忠人之事,就可以做好關係人管理”,但在理智及經驗上,卻往往發現我們事情往往出乎我們意料之外。為什麼呢?人的問題實在複雜得超乎我們原先預期,除了資訊不對稱之外,利益的不相容所造成的代理問題外,還有對方是否值得信任的風險考量,背景與專業所造成的溝通困難等,都讓做好關係人管理這件事,充滿了變數,這對參與軟體開發實務管理者及開發者而言,是如人飲水,冷暖自知的呀。

當然,回到初心是最美的。讓專案關鍵關係人共同朝著目標前進,專案才會有成功的機會,這是大家都很清楚的,然而,壞就壞在我們常忽略了目標是有可能是不相容的,大家對目標的優先順序常常是不一樣的,分包委外提供者有時候並不是不願意忠人之事,而是一旦其公司遭逢更大的壓力時,這時他是很難再履行他原先的承諾的。同人就曾聽過有分包委外提供者向主包委外提供者兩手一攤,即使主包委外提供者可以向他們求償甚至讓他們倒閉,對專案也無濟於事,這時對主包委外提供者來說,真是苦不堪言。

所以,主包業者提供者即使情感上相信分包廠商者可以「受人之託,忠人之事」,但卻不可以把分包商管理的成功與否置於這個假設當中,而要認清它是風險的來源並加以管理,這樣才能展現出專案管理者的積極態度與專業。

分析或猜測?

許多讀者對於同人的「不要猜測問題」的觀點,表達了他們的看法。Luke 認為當系統出問題時,需要猜測問題的所在,而且應該假設有錯誤的地方不在表面上看到的那樣,並透過排除絕對不可能的部份,試圖讓問題縮小,然後找到最可能的原因,最後再靠一針見血的猜測把問題抓出來。

NOVAASKA 認為,資深的技術人員對於問題發生的第一時間,會根據過往的經驗來加以分析問題可能出現的癥結,在這之前只能稱做是『分析』,而不是『解決』。他疑惑同人的說法,以為這樣變成「用猜測的方式來解決」,並質疑:難道「資深的技術人員」習慣分析後不需要實做和驗證就宣稱「問題已解決」了嗎?

同人認為這些對於猜測問題的爭議點,是出在我們對文字上定義的不同。同人在文中提到許多技術人員習於以自己所熟知的技術經驗,來尋求問題解答,卻未先去深入探討問題本身。所強調的是開發者沒有先進行分析問題的步驟,就逕自動手處理問題的猜問題行為,而不是指在解決問題的過程中,試圖找出問題成因的歸納手法。

所以,如果我們對問題所做的猜測或假設都經過求證的步驟,就不是我文中所言的「猜測問題」。不過,在此同人還是要提醒一件事,那就是即使如 Luke 所說的,我們能一針見血的猜測把問題抓出來,還是需要經過求證的過程,問題不可能只用猜的就可以把它找出來。

分析或猜測問題的差異,表面上看起來做法差不多,但其實其關鍵在於態度。同人認為猜測與分析的差別所在,就是前者在猜測未證實以前就採取行動,動手修改程式,卻常常愈改愈慘,因為這種處理問題心態靠的是運氣。

後者會根據程式運作的記錄與數據來研判,必要時,會寫測試程式來驗證假設是否成立,確認無誤後才動手修改程式。

不幸的是,實務上,前者的情況非常常見,所以我才會特別強調”解決問題的心態”。同人依據實務工作經驗認為,解決問題一定會要先弄清楚問題的徵結在那裡,而不要先思考如何修改程式,因為這樣做就好像亂槍打鳥,要根本解決問題的機率是很低的。

很明顯地,同人文中提到的「猜問題」與許多讀者心中所認定的「猜測」定義並不相同。他們的猜測是動詞,是問題的歸納過程,但我所謂的猜問題是名詞,指的是”以懷疑當事實,推論當結論”的過程,未經驗證假設就貿然採取解決問題的行動。然而,很多時候,相同詞彙本來就會因人、因時、因地而有不同定義,其實只要說清楚就不會有認知上的誤解了。

省略測試

有讀者提到他的經驗,認為猜測在經驗老到的人而言是很精準的,問題在有經驗的人腦中事實上經過分析,挑出最可能的原因來看程式碼來測試。

同人認為這樣做當然沒問題,但我擔心的是有些自認經驗老到的人,會挑出他認為最有可能的原因來改程式碼,未詳加測試而交付修正。在實務上,據我的觀察,有些人都認為要一眼看出問題,才能顯露出他的神力,所以愈不做測試愈代表他很利害,於是乎就有那麼多的問題會該測到卻沒真正測到。

一旦期待用整合測試來取代功能或單元測試時,這是品質必出問題的先兆,而實務上,許多專案管理者甚至開發者卻常忽略這個重點,他們實在不能體會測試上的蝴蝶效應將足以將系統帶向混沌的失控局面,關鍵還是面對現實的態度,將問題延後其實是很笨的做法,因為在測試上相信人性無異於向惡魔打交道。

  繼續閱讀: 開發過程的管理>>

| 第1頁 | 開發過程的管理 |
 
 

thumbs Upthumbs Down
+0
推薦
0/0 票
 

 
加入我的圖書館 訂閱關鍵字 單頁閱讀
加入網路書籤> 加入funP | 加入Google書籤 | 加入Yahoo!奇摩分享書籤 | 加入twitter | 加入facebook | 加入plurk |
友善列印 | 轉寄朋友

回應   對本則報導有任何意見或看法嗎?歡迎留言
23.SONET.ALL 於 2007/11/30 21:40 回應
”你無法提出一個「非猜測」,因為你無法提出一個「己經驗証的猜測」
你也無法提出一個「猜測」,因為你無法確定之後猜測「會不會被驗証」”

這是時空的問題,邏輯上正確,但是我們必須檢驗他的前提,他的前提是包含時間這個座標軸嗎?

事實上科學驗證過程一定要經過猜測(假設)這個程序,前面有人提出RS232那個例子,事實上A & B兩者都經過猜測,這個猜測並不是指他們最後如何?或是他們做了什麼事,你可以這麼想;當你在 證明某個題目時 , 是不是會先排除已知的証明,我們會先假設那些已知是正確的,而這個過程就是猜;因為我們沒有真實去驗證他,如果偏激一點來看這件事,你們沒有證明過你所使用的語言沒有BUGS,怎麼能說你的程式沒有BUGS? 因為我們是把它當成假設(猜測),所以不需要去證明它 , 科學看的不是表象,不是那個RS232的問題是怎麼解決,而是解決的理論基礎是什麼? 所以在使用歸納法時,我們或先說 N=1 成立 先假設 N 也成立,來證明N+1 是不是成立就是這個道理,而計算機的領域裡數學是程式內涵,程式是數學的表徵,如果你要科學一點來看程式這回事,他就是如此
讚?讚0 個人喜歡這個留言
 
22.匿名 於 2007/09/02 22:07 回應
笑死人, 悖論的兩條理論都不成立, 會主張不猜問題是悖論的開發者, 根本就是沒有解決能力/態度的卸責之辭.
讚?讚0 個人喜歡這個留言
 
21.匿名 於 2007/08/31 18:29 回應
如果您仔細看的話,論點之所以不會成立的原因是paradox,也就是您對於非猜測所下的定義。所以之前我才建議請你將相關定義及建議修改成正確的,如此就不會引出成立不了的論點了。
讚?讚0 個人喜歡這個留言
 
20.同人 於 2007/08/31 17:36 回應
既然有人依然看不懂,那我就說清楚一點吧。

合乎邏輯並不是要讓對方非得要用自己的觀點來世界,一旦你如此做,你會發現雙方的世界並不一致,而且忘了尊重對方的觀點,在你眼中看來,對方當然是錯了,但你在對方眼中,又何嘗不是大錯特錯呢?我們來看看,對於提出悖論的網友提到說:

”你無法提出一個「非猜測」,因為你無法提出一個「己經驗証的猜測」
你也無法提出一個「猜測」,因為你無法確定之後猜測「會不會被驗証」”

這兩個論點一定都會成立嗎?想一想,如果專案管理者要開發者驗證他對系統失常的猜測,他可以接受開發者說:「我做不到,因為我無法提出一個己驗證的猜測」或是「猜測之所以是猜測,是因為它是無法確定之後會不會被驗證的」的答案嗎?如果開發者這麼說,大部分的專案管理者會稱許開發者真是專業呀,還是認為他是自以為是,對他不以為然呢?所以由此可知,這兩個論點根本就是不合乎客觀而理性的邏輯的。

積極的解決問題解決者都清楚,如果對問題的猜測無法被驗證,則這個猜測對問題解決是不具意義的。在軟體工程的領域,甚至認為一個好的系統分析,必須要是可以測試及驗證的。其實有助於解決問題的猜測或假設並不是天馬行空胡亂猜測,它們通常是合情合理,也就是假設是基於常情或公認的理論所發展出來的,但更重要的是它們的成立與否必須能夠被檢定或驗證出來,這是眾所週知的研究方法的重要觀念,其實就是問題解決的公認過程,驗證的目的是力求嚴謹,而不是只靠猜測,如果這是悖論的話,那麼研究方法不就是就是個天大的笑話嗎?把不猜問題的觀點視為悖論,同人認為這種看法真是井蛙之見呀。
讚?讚0 個人喜歡這個留言
 
19.匿名 於 2007/08/31 15:48 回應
唉,若是我再提醒你關於"自己為是"這句話的涵意,恐怕就更不受歡迎了…
讚?讚0 個人喜歡這個留言
 
18.同人 於 2007/08/31 15:41 回應
”如果你認為,講究(自以為是的)邏輯的人,就不是你的讀者”
以上只是你的想法而已,不過,你漏了括號中的字。
讚?讚0 個人喜歡這個留言
 
17.匿名 於 2007/08/31 15:13 回應
好吧好吧,如果你認為,講究邏輯的人,就不是你的讀者,那請自便吧。而且我本來也認為要改正邏輯並非難事,若你認為這樣不尊重你,那也叨擾了。
讚?讚0 個人喜歡這個留言
 
16.同人 於 2007/08/31 14:54 回應
何謂品質?品質是符合讀者的需求,為他們創造價值。可是讀者那麼多,又要維持服務水準,我是有所選擇的。

一個人成天把邏輯或悖論掛在嘴邊講的人,用以抽取他們自以為是的意義用以聲稱他人的錯誤,好像他是專家一樣。但實際上,很多愈強調邏輯的人我愈感受到所謂的邏輯令人不敢領教的偏見,好像所有的人只能按照他們的觀點來看世界,否則就是邏輯不通,就是錯的,如果這樣的人又是匿名者,我需要理會他嗎?

我認為話要說得讓人聽得懂而且討論過程是必須互相尊重的,我知道我和我的讀者在談什麼,而且從很多讀者那兒吸收了不少有創造性的觀點,讓我獲益不少,但最重要的是對話過程我們是互相尊重的。所以對於自以為是的匿名者,他又不是我的讀者呀,也就沒有所謂讀者流失的問題了。
讚?讚0 個人喜歡這個留言
 
15.匿名 於 2007/08/31 14:22 回應
文字不同當然是沒關係,但邏輯不對就有問題。容我坦白地說一句,您的實務經驗是不可能跟邏輯上不存在的東西扯上關係的,除非是你不小心(或刻意)用了錯誤的方式解釋。

說辭錯了改正又有何難?訂正之後又是一條好漢。相反的,若只當自己是在隨口談談談,或是本身能夠容忍這樣的邏輯,其它人又要如何相信您說的"品質"呢?如此讀者的信心便很難不流失了…
讚?讚0 個人喜歡這個留言
 
14.同人 於 2007/08/31 13:18 回應
從樓下的文字當中,我可以很清楚地感受他對文字的絕對對錯的在意,而非我說”不要猜測”的實際意義。這是個多元化的社會,每個人都可以有不同的表達方式,前以提及,文字定義不同沒關係,只要把意思說清楚就行了,我只關心事情表達的內涵,不想拘泥文字的鑽研,所以對於文字該如何使用的爭議,我認為那是沒有意義的爭論。

我從來就不認為我在發表理論,該篇文章只是分享我實務的體驗,當然可以有人說我是錯的,但對錯對我而言根本就不重要,重要的是我在過程中是不是學習到了更多的東西,所以被指陳為錯的那個”我”根本不須存在。下次看到有開發者亂猜問題而沒有求證就處理問題時,我還是會說:”解決問題不要用猜的”。而這只是我針對解決問題態度的堅持罷了,當然一定有人不認同,但你不相信的事不代表它不存在呀。
讚?讚0 個人喜歡這個留言
 
13.匿名 於 2007/08/31 12:02 回應
可能有人會想,正因為這篇文章本身的一個重點,正好是解答過程的品質,而作者寫作這篇文章的過程品質,本身便是所提出理論的最好的範例。如果作者寫作時本身的品質就有問題,那應該如何讓人相信,按照你所說的這樣做,品質就會好?

在所有討論的大半的內容之中,"不要猜測"幾乎貫穿了整個主題,但結果很明顯那是錯的。而在您說明科學精神的"大膽假設,小心求証"這句話當中,也很明顯地並沒有否定猜測。

一個最快改正這問題的方法,就是改正對於"非假設定義"的悖論,並且拿掉"不要猜測"這句話。並非我對你的要求特別嚴格,事實上對任何該領域的專家而己,應該都不可能容忍這樣的邏輯問題。

雖然你可以改選擇去做更多文字上的解釋,去說明你所說的"非假設定義"、"不要猜測"代表的是其它的意思,或是有其它非字面上的解釋,包括去用更多的名言去舉例,或是說那觀點不同的問題,或是別人情緒上的反應…

但另一個可選擇的方法,就是去做一個簡單的改正,如此就能讓你的理論變強固,別人對於邏輯的問題也再無話可說,何樂而不為?
讚?讚0 個人喜歡這個留言
 
12.同人 於 2007/08/31 10:14 回應
"科學理論的建立,比之這些商業行為了更加嚴謹,但還是能看到有後人推翻前人的決定,何況平凡的一般人?"

正因為如此, 所以我訴求的重點不是結果論的對與錯, 而是問題解決過程的選擇, 開發者有沒有選擇思考問題, 還是只是憑記憶中的刻板印象來反應問題, 這兩者對解決問題的成效是會有很大的差別的.

"大膽假設, 小心求證" 不正也是科學的重要精神嗎? 結果固然重要, 但好的過程就會有好的結果, 菩薩畏因, 眾生畏果, 你是不是謹慎地在過程中確認你的工作品質, 如果沒有, 或把這個責任推給其他單位或部門, 結果只是忠實地反映你的品質罷了, 問題出在那裡其實已經很清楚了, 只是當局者未意識到罷了, 但不管能否意識的到, 他都必須承受問題無法解決的苦果.

這個問題用常人可以理解的邏輯就可了解, 不需要用深奧的悖論, 對於一般人而言, 對猜不猜的看法如果要把它吊詭地說成像"箭永遠射不到目的地"的說法, 那是不具意義的. 或許我們可以運用文字本身的侷限性來主張他人的看法不成立, 但我關心的只是問題如何更有品質地解決, 解決問題的過程中, 假設問題當然是一種猜測, 但假設以後, 開發者有沒有去審視假設真的成立嗎? 這種態度才是我所要強調的, 但我發現似乎許多人仍舊對我說"猜測"這個詞充滿了情緒反應, 似乎我說不能猜讓他們無所適從, 我發現這與國內大部分開發者解決問題的積習有很大的關聯, 實在是值得令人省思的一件事呀.

我很喜歡庖丁解牛的故事, 它讓我體會到輕鬆解決問題的態度, 樂於面對問題, 循著脈絡來解決難題, 當然大刀亂砍也是可以解決問題, 但刀會鈍, 人會累, 這將不是我的風格. 解決問題的重點其實在於過程, 從面對它, 處理它, 解決它, 放下它的過程中, 我們也隨著這過程而成長了.
讚?讚0 個人喜歡這個留言
 
11.匿名 於 2007/08/30 18:27 回應
大家都以結果論來判斷是不是用猜的,最後發現A錯了,所以說A是猜,最後B說對了,所以說B是判斷分析…但世上哪有絕對會對的決定呢?

例如科學理論的建立,比之這些商業行為了更加嚴謹,但還是能看到有後人推翻前人的決定,何況平凡的一般人?

所以若是更進一步地看看作者對於猜的定義,也可以發現"不猜"只是一種不可能的的謊言。作者對猜測的定義是:"非猜測的行為是指對於自己所做的分析猜測,後來做了驗証的動作。"但因為驗証必在提出猜測之後才能發生,仔細想想就知道這是矛盾的,而這種定義即是所謂的paradox(悖論)。

你無法提出一個"非猜測",因為你無法提出一個"己經驗証的猜測"
你也無法提出一個"猜測",因為你無法確定之後猜測"會不會被驗証"

一個邏輯上就有問題的規則,怎麼有人還能去遵守?不如把心力放在真正要關心的事情之上…其實世上無人是全知全能,人類的每一個決定最終都只是猜測
讚?讚0 個人喜歡這個留言
 
10.同人 於 2007/08/28 18:12 回應
感謝樓下匿名兄的補充,得確這樣說明清楚多了,也提醒了我舉例說明重點的重要性,真是十分有建設性的觀點。

BTW,我在此對匿名兄的看法加一點小補充,我不會說A工程師的做法是錯的,我只會說他的行為對解決問題無效的,造成無效的原因是因為他不對問題深入思考。當然這是個人特質,但我擔心的是他們很容易教壞孩子大小,所以才一直雞婆地強調解決問題的態度呀。
讚?讚0 個人喜歡這個留言
 
9.匿名 於 2007/08/28 17:09 回應
說「不要猜」或「要有正確的態度」是很難說清楚的,有案例輔以說明才不會讓大家看不到作者所要表達的重點。

RS232 這個案例很適合討論,工程師 A 認為 display 亂掉是 baudrate 太快,所以把 baudrate 調慢,的確問題沒發生了。所以他的結論是 baudrate 太快,解法是把 baudrate 調低。但另一工程師 B 去查為何亂掉,發現是 buffer overflow。所以他把 buffer 加大,或雙方加入 flow control 的機制,而且 baudrate 還可以加快。

這兩個工程師正是兩種不同的典型。工程師 B 是真正找到問題點。但工程師 A 的作法是錯的,因為傳輸久一點 buffer 才會 overflow,或換不同機器當 terminal, 問題就又發生了。A 的作法就是同人兄所說的「猜」。

我認為解決問題的態度是屬於「個人特質」,有的人會想徹底了解事情的「真相」,有人天生馬馬虎虎,只是把問題「變不見」就認為問題處完了。有「想了解事情真相」的人才能當工程師,而一個工程師需要我們去跟他說「不要猜」時,很可能這工程師是不適任的。
讚?讚0 個人喜歡這個留言
 


留下你的意見
會員 * 帳號:
* 密碼:
  1. 欄位可選填,若全不填,則顯示為「匿名」。
  2. 不支援html語法
非會員

*姓名:
*E-Mail:

Blog:
  重新載入驗證碼
* 驗證碼: 記住我