Archive for the ‘閱讀’ Category

5
二月

本質與存在的矛盾

   Posted by: jim yeh   in 問題解決, 寫作, 思考, 新時代, 生活感觸, 閱讀, 電影

從古至今,人類花費許多心力來探尋事物的本質。不論是哲學、宗教乃至於近代的科學在這方面的努力,不外乎是為了讓人們更認識自己、世界乃至於整個宇宙。到目前為止,人類對宇宙的認識已經有長足的進步。我們可以運用牛頓力學預測天體的運行,絲毫不差;而達爾文進化論也告訴我們物競天擇,優勝劣敗,生物演化最後留存下來的物種,也早就是由基因所決定,絶非偶然。

如果宇宙是按照必然的本質在運行,那麼非本質的偶然是否就應該被忽略的呢?近代科學的演進,告訴我們在宇宙必然性的背後,其實存在相對的隨機性。雖然宇宙在表相的物質巨觀層面上,似乎可以預測必然性,但在微觀的粒子層面上,卻是以我們很難理解的隨機方式在運作。

也就是說,事物的本質不見得是單一地存在,而是可能以多種完全不同的樣貌來呈現,甚至會看到客觀的本質與主觀的存在會產生相互的矛盾。特別是在最近在網路上的討論中,同人就很清楚地看到這樣的矛盾如此深刻地影響人們的想法與行為。 Read the rest of this entry »

昨天寫的〈測試驅動開發要徹底重構〉,曾經提到 Steven 說到「如果像閣下文中說:『系統不斷演進及需求不斷改變之下,也可能會使架構或設計愈來愈複雜而變得難以維護』,我則認為是在進行 TDD 時候沒有徹底去重構系統。」,同人認為這段話有根本上的邏輯的繆誤,於是回應:

假如上面的話是成立的,那麼代表只要徹底重構系統就不會造成「系統不斷演進及需求不斷改變之下,也可能會使架構或設計愈來愈複雜而變得難以維護」嗎?如果是這樣,那 XP 根本就不需要 Refactoring 這個實務來改善程式的結構,因為你都徹底重構程式,程式結構變差的情況是根本不可能發生。

而且依照本人 20 年來軟體開發的經驗,我還不沒有看到有程式一開始就寫得很好,到後來可以不用改變架構而符合新需求的。倒是隨著對問題的更清楚,或是程式需求的變化,讓程式必須重構的現象時常履見不鮮!

所以如果自以為自己博覽群書,很懂得TDD的實務。也不要忘了用心思考,以免自己對TDD的最佳實務的認知,不小心犯了根本上的邏輯繆誤?

結果,後來同人在 Facebook 的 Scrum community in Taiwan 看到 Steven 做了以下的回應:

先說件簡單易明的事情,其實我很不喜歡閣下把 TDD 放到 『精神』 層次,卻忘記了基本步驟。

之前的討論根本連事實層次都被忽略,根本談不上是什麼多少年的經驗或者如何用心思考,連 TDD 的最基本步驟也忘記,TDD 的基本步,不是閣下做多少年工作就可以把人家的定義去改變的,我也不明白為何有 20 年工作經驗就可以把 『Refactoring』 說成 『並不必然是 TDD 的必要的步驟』,這不是邏輯問題,更不是有過什麼開發經驗然後用心思考就可以改變的事情,這是就算對軟體開發的認知不夠閣下那麼 『全面』 的都能看出的謬誤,如果閣下這樣就認為是因為說不過閣下就建議多看書本,本人深表遺憾。

我是來討論問題的,我沒有興趣去傷害閣下感情,好好閱讀書本,只是反映 TDD 三個步驟是什麼根本不存在爭議,更沒有 『好好閱讀什麼書或文章才能跟我討論』 的意思,我還未自大得要別人看過多少書才可以討論問題,亦正如討論問題我也不用跟別人說我有多少年工作經驗一樣,而且本人是衷心認為多讀書是有益的(不管是閣下還是什麼人),多讀書亦不是為上來辯論的,不過閣下如果感到有所不悅的,我就先行道歉,還是希望冷靜一點討論問題。

而簡單的例子也是思辦的過程的一部份,一方面是簡單易明地討論問題,另一方面是如果連簡單的例子也說不通,又怎麼能去談更複雜的問題呢?

上面提到:』那XP根本就不需要 refactoring 這個實務來改善程式的結構,因為你都徹底重構程式,程式結構變差的情況是根本不可能發生。』

不如冷靜一點再讀讀這句子,』XP 不需要 Refactoring 是因為徹式地進行 Refactoring』,我就看不明白這是什麼邏輯,一邊說不需要,另一邊說徹底地進行。

這裡的問題是軟件是會改變的,可能是新增功能,也可能發現有其他問題,每次帶來的變更其實都需要進行重構的。所以說 XP 不需要 Refactoring 也不正確。

世上的確沒有一寫就好的代碼,而且世界是會變的,Refactoring 就是避免以後的更改越來越困難。把 『徹底地進行重構』 理解成 『XP 不需要重構這實踐』 完全沒有邏輯可言。

我也沒有反對不用改變程式架構就能滿足新需求,亦沒有否定 Refactoring 的重要性,只不過我還是建議新的功能以 TDD 方式進行開發,有測試、有代碼、然後進行重構的。

在足夠測試覆蓋下進行重構是可使系統在不斷演進及需求不斷改變之下,使架構或設計仍然處於可以維護的狀態,相反我指出的是,如果程式架構和設計越來越難維護,是重構的力度不足夠。

前面還提到:』但重構的目的為何?就重構的定義在不改變功能的情況下改善程式結構,以增加程式碼的彈性以利未來增加或改變功能。因此如同那第三步所言,為了去掉重覆性而重構。』

如果重構只是為了去掉重覆性,那 TDD 的第三步不如叫 『Remove Duplication』 好了,無可否認代碼重覆是很常見的問題,但把這裡的重構限制成消除代碼其實會局限系統的將來發展,而且到了 TDD 的第三步,系統是應該有足夠的測試去覆蓋系統,重構的力度沒理由只局限於新增功能和現有程式的重覆。

我就相信閣下是 Refactoring 的專家,也應該會知道一些 Refactoring 的模式是完全相反的,例如 『Pull Up Method』 和 『Push Down Method』,更是需要觀察當時的情況來作決定,而沒有一面倒那個才是好的模式,我實在不明白為何要把 TDD 的 Refactoring 局限到只做 『去掉重覆性』。

這是實務上會發生的事情,消除代碼重覆以外的重構還是會發生的,如果只是單單只是 『消除重覆』,這會是另一個我認為進行重構不夠徹底的事情。

上面已經不單單是用心思考,而是由理論到實踐都可以看得到的事情。

跟討論 Refactoring 和 TDD 觀點以外的聲音,就引用 Chet Henderickson 的說法,全部都是我錯好了,現在可以解決問題嗎?

看了 Steven 的回應,同人當下的反應是不想浪費時間與心力與他周旋下去,但後來想到或許是因為 1/9 敏捷開發分享會我要分享實施 XP 的經驗與心得,也許這是一個巧妙的同步事件。我可以趁這個機會,導正對 XP 或是 Agile 的一些錯誤觀念。

例如敏捷開發並不是教條式的照本宣科,開發者要懂得變通最重要的是用心思考,而非把必要的思考都看成精神層面的問題,這並非適用於敏捷開發的心智模式。以下是同人在 Facebook 的 Scrum community in Taiwan 的回應,但一些詞句有略為做過一番修飾,以清楚表達我對測試驅動開發步驟的看法。 Read the rest of this entry »

前一陣子在河道上,看到 Zulu 分享〈好人從政的理由〉,引起同人的興趣,就和他討論了這個話題

Zulu 的文章提到蘇格拉底和格勞孔的對話。蘇格拉底說,沒有人願意甘願當統治者去糾正別人的惡,因為在統治發布命令的時候,並不是為了統治者,而是為了被治理的對象。所以我們想要讓有人願意擔任這種工作時,必須給予他名或利,如果他不願意,就給予懲罰。

格勞孔不大明白蘇格拉底提到用懲罰來當做報酬的道理何在。蘇格拉底說,懲罰可以使最優秀的人來領導人民,他們視貪圖名利為可恥。因此,好人不肯為了名利當官。他們不肯因擔任治理工作公開領取報酬,而被當成佣人,更不肯假公濟私,暗中舞弊,被人當作小偷。名譽也打動不了他們,因為他們並沒有野心。於是要他們同意當官,就只能用懲罰來強制了。

蘇格拉底提到大家看不起那些沒有受到強迫,就自己想要當官的人。但最大的懲罰莫過於,自己不去管人,卻被更壞的人管了。他認為好人最怕這種懲罰,所以勉強出來。他們不是為了自己的榮華富貴,而是迫不得已,實在找不到比他們更好,或同樣好的人來擔當這個責任。

蘇格拉底以為,假如全國都是好人,大家會爭著不當官,就像現在大家爭著當官一樣熱烈。這樣就可以清楚看到,一個真正的統治者追求的不是他自己的利益,而是被統治者的利益。所以聰明人寧可服從他人,也不願要他人服從自己。

以上有關「好人從政」的觀點,同人一開始沒有看得很清楚,以為與中國人的傳統觀念是相違背的。我想到〈論語述而篇〉的一段對話: Read the rest of this entry »

這篇文章是投稿 ZDNet Taiwan 的文章原稿,由 ZDNet Taiwan 以〈如何在系統異常前發現錯誤?〉、〈如何在系統異常前發現錯誤?(下)〉兩篇文章刊登。文章原稿未經 ZDNet Taiwan 編輯,內容可能與 ZDNet Taiwan 約略有所不同。

前一陣子有兩個與資訊系統失常有關,而且眾所矚目的新聞事件,也就是戴爾電腦網路購物系統與台北捷運內湖線的系統異常。相信很多人都認為這兩個系統會發生系統異常相當離譜,在系統上線之後才發現系統無法正常運作,造成系統使用者的困擾,同時也會讓人對系統可靠度與穩定度失去信心,而增加系統的失敗成本。

雖然平心而論,想要事前預料系統可能發生的問題,並加以預防或因應其實並不容易,因為開發系統,尤其是軟體開發常會碰到事先難以預料的問題。但如果能在錯誤造成危害之前,就能夠發現問題並採取適當的行動來解決它,應該就能減少系統的失敗成本。因此,看到戴爾與台北捷運內湖線的重大系統異常,讓筆者想探討如何在系統失敗前發現錯誤,以避免系統失敗的巨大損失。 Read the rest of this entry »

8
十月

是誰理盲又濫情?

   Posted by: jim yeh   in 利害關係人, 專案團隊, 思考, 新聞, 生活感觸, 閱讀

早上在 News 98 聽到陳鳳馨評論吳德榮提前退休的新聞事件,她提到吳德榮說:「人們理盲又濫情,說也沒用」對此,她表示人們理盲又濫情她同意,但吳德榮自己何嘗不是理盲又濫情呢?然而,聽完陳鳳馨的評論反而讓人更困惑,或許同人應該好好思考一下,弄清楚到底是誰理盲又濫情。 Read the rest of this entry »

上個禮拜在噗浪河道上看到馬總統抱怨「好人沒好報」的新聞,提到馬以南爆料說馬英九在寫給她的 email 提到「做了好多好多事,卻還要被罵!」的心路歷程,最後一句話是「哼!好人沒好報」,她看了以後回信給馬英九「放心啦,好人一定有好報,只是時候未到」。

同人看到這則新聞的第一個反應是,總統在救災過程中受到批評,心裡面會產生一些情緒是人之常情。因此透過 email 中將這些情緒發洩出來,跟家人訴訴苦以免情緒積壓而損害身心健康,我認為是很自然的一件事。只不過,馬大姐把這些用來宣洩情緒的對話,在公開場合中公開,似乎只會為她的弟弟帶來麻煩,顯然她又失言了!

不過,除了馬以南的失言之外,同人認為這則新聞更重要的意義是,讓我們看到領導者應該如何面對批評。在現實上,領導者所碰到的難處是,不管領導者碰到問題怎麼做,他都很難做到沒有人批評。因此想要成為優秀的領導者,其實無須太在意外界的批評,而是應該將這些批評轉化成更積極正向的領導作為。

就像在《領導的黃金法則》中,作者約翰‧麥斯威爾提到「當你後面被踢一腳,你知道你已超越在前」。 Read the rest of this entry »

在當上父親之後,同人才能體會到教養孩子不比想像中的容易。在教育理念上,受到新時代思維的影響,讓我希望以愛的教育來代替以懲罰來控制孩子的行為。但當真的碰到孩子做出不好的行為之時,又找不到比懲罰他們更有效率的管教方式。

尤其是女兒又是那種聰明又調皮的小孩子;她總是會想辦法來破壞你所設立的規矩,用理性來溝通又似乎並不適用在她這個年紀。不過打罵的懲罰看起來雖然可以達到喝阻的效果,以控制她的行為,但同人和老婆也發現這種管教法副作用很大。我們常發現在公園她會對其他的小朋友施展暴力,而脾氣也變得愈來愈情緒化。

當然,前一陣子同人夫妻帶女兒參加控制理論的研習課程,對我們學習教養女兒的獲益很大。但除此之外,有沒有更簡單而直接的教養法能夠矯正女兒的行為呢?最近同人在《一分鐘爸爸媽媽》看到一分鐘教養法。它包括三項教養的秘訣,也就是對孩子實施一分鐘懲罰與一分鐘獎勵、以及幫助孩子設定一分鐘目標。

同人覺得一分鐘教養法是相當不錯的教養法。 Read the rest of this entry »

25
八月

夢中的水域

   Posted by: jim yeh   in 心理, 新時代, 生活感觸, 閱讀

最近在噗浪看到綠波提到她夢到演員老演員張冰玉的臉,讓她產生「髒冰域」的聯想,直覺到夢境與冰河、與天氣暖化有關。同人不知道這個夢是否與地球環境惡化的擔憂有關,但「髒冰域」讓我聯想到與綠波的情感態度有關。

因為一般而言,夢中的水域代表我們的情感。海水代表情感是深沉與廣博並具有包容力的,但結冰則代表凝結與冰封或是過於冷靜以致產生抽離的態度。骯髒的冰則為混濁的海水代表情感之中牽涉許多的複雜因素而出現混亂的狀態。

綠波表示她的夢可能是源自於她對噗浪的不安感,同人認為這不無可能,但我想到一個夢境的心理測驗,並分享在噗浪上,讓有興趣的噗友觀察自己對情感態度的表現。 Read the rest of this entry »

16
八月

別關注心力在負面情緒上

   Posted by: jim yeh   in 問題解決, 思考, 新時代, 生活感觸, 閱讀

最近在噗浪,看到許多噗友討論中南部八八水災的災情。同人從一些討論的字裡行間可以感受到網友對在八八水災受到災害損失的朋友的關心。但同人也發現到其中不乏容易讓人陷入不滿及悲哀情緒的討論,我覺得這些對救災並沒有太大的實質意義,而且還會因此加深人們的痛苦。 Read the rest of this entry »

世界愈複雜,我們就更需要簡單。簡單讓我們看清楚事物的脈絡,掌握重點,以協助做出選擇,並在適當時機採取行動。然而,簡單其實是困難的,因為要做到簡單,意味著我們必須清楚事物的全貎,行動必須要更有原則。尤其是在複雜多變的環境當中,簡單不能只靠直覺,而是有紀律的思考與行動。

More about 越簡單越有力量那麼,用有紀律的思考與行動,以做到簡單,我們該怎麼做呢?前一陣子,同人閱讀了《越簡單越有力量》,我覺得這本書的觀念與方法,剛好可以提供我們複雜世界簡單之道的思考方向與指引。 Read the rest of this entry »