jim yeh on 一月 19th, 2010

在軟體開發的過程中,有沒有方法可以避免我們浪費心力在無謂的堅持上,然後用比較簡單而又有效率的方式來完成我們的工作呢?經過與同事上面的對話,同人想到運用到我在分享會中所提到的觀念與實務,可以很輕易地掌握設計演進的節奏。藉由此篇文章分享出來,也算當做同人在 1/9 敏捷開發分享會後的一個註腳吧。

Continue reading about 掌握設計演進的節奏

     
jim yeh on 十二月 31st, 2009

技術經理當教練如果對公司是不好的徵兆,問題應該還是出在領導上,誠如同人過去發表過的文章所講的:強將手下無弱兵,但也不會有強將。沒有辦法訓練培養人才的教練,還是因為技術經理不諳教練之道呀!

Continue reading about 再談技術經理當教練

     
jim yeh on 十二月 16th, 2009

表面上看起來好像實作泛型可以讓某一段程式碼重複使用,但 Java 在泛型的限制,也增加他重構程式碼的困難度與複雜度。這麼說來,假如石頭成的想法是正確的,用 Java 的泛型來重構程式碼,只會讓程式員沒事自討苦吃。然而,同人在仔細研究他的程式碼之後,發現可以用更簡潔的方式來使用 Java 的泛型。

Continue reading about Java 泛型複雜嗎?

     
jim yeh on 七月 17th, 2009

世界愈複雜,我們就更需要簡單。簡單讓我們看清楚事物的脈絡,掌握重點,以協助做出選擇,並在適當時機採取行動。然而,簡單其實是困難的,因為要做到簡單,意味著我們必須清楚事物的全貎,行動必須要更有原則。尤其是在複雜多變的環境當中,簡單不能只靠直覺,而是有紀律的思考與行動。 那麼,用有紀律的思考與行動,以做到簡單,我們該怎麼做呢?前一陣子,同人閱讀了《越簡單越有力量》,我覺得這本書的觀念與方法,剛好可以提供我們複雜世界簡單之道的思考方向與指引。

Continue reading about 簡單,複雜世界的致勝之道

     
jim yeh on 七月 10th, 2009

朋友的分享讓同人看到,她的主管用一些不大精確的語言來讓她感覺問題不大。比如說用「c++、vb 都只是工具而已,不管你用那一種工具來開發系統,其實都不會有太大的差異,所以我們大可不用擔心」的說法,正是用不精確的語言來表達不當的概念,這其實是相當要不得的簡化。

Continue reading about 當聽到不精確的溝通用詞時

     
jim yeh on 五月 8th, 2009

在台灣,品質最大的問題是人們習慣將品質流程獨立於設計及開發過程之外,以為兩者是可以完全分割的。然而這種思維對品質的結論就會是「把做好的東西丟到另一端去」,讓開發人員認為品質是品質部門的責任,而品質部門則認為提昇品質不是他們的責任,以為最多只能做到知道產品有問題,而不知道如何改善它們,只能退回到開發人員那邊來解決。

Continue reading about 聚餐也談品質流程

     
jim yeh on 二月 3rd, 2009

在〈開發者的 common sense〉的留言中,同人看到一些網友的批評。我發現這些批評顯示了有些開發者不擅於抽象化思考,而習慣於用經驗法則來取代思考。然而,誠如 Brooks 所言:「軟體的本質是複雜的,而不是偶然發生的」對治複雜度本來就是開發者的天職,而軟體開發的抽象化思考則是其用以統理複雜度的利器。由此看來,那些網友的批評著實令人為他們捏一把冷汗呀。 從路邊的垃圾桶與路人的留言,我們可以發現他們弄錯 common sense 的意思。他們認為 common sense 不能一概而論,因為每個人的 common sense 都不同。但這樣的觀點令人感到疑惑,如果每個人的 common sense 都不一樣,所以無法一概而論,那這種 common sense 還能叫做 common sense 嗎? 到底他們觀點上邏輯的矛盾,問題是出在那裡呢?同人認為問題並不是開發者的 common sense 不存在,而是忽略了開發者應該將經驗化成一般性的通用概念。舉例來說,軟體工程領域本身就是從實務發展出來的理論,其中許多概念就是開發者必須知道的 common sense,對開發者來說是合理的知識,也是他們都知道、無須解釋或加以論證的常識。 由此可知,如果開發者缺乏一般性的通用概念,那他碰到問題就很難舉一反三,自然也就難以掌握重點,而只能依據表相來處理問題,往往使得問題變得更複雜。oofunp 的留言就很像欠缺概念思考的開發者常見的反應,一開始以自己熟悉的技術來看問題,最後才發現自己對問題的理解是錯誤的。尤其「以為抽象化是將資料庫定義抽象化」的想法,更是整個弄錯抽象化思考的意義,結果最後他還是誤解了業務規則的意思。 同人前一篇文章所提到的業務規則,並非來自技術領域上萬用的設計,而是對問題領域經過抽象化思考後,所萃取而得到可以解決業務需求的重要概念。顯然 oofunp 的誤解是以技術的角度來看待抽象化思考,才會產生嚴重的觀念混淆。事實上,抽象化思考重視的不是技術實作,而是如何從實際問題當中萃取出重要的抽象概念,以增進我們對問題領域的瞭解,才能採用最適當的技術來開發軟體系統。 此外,過份強調技術經驗而輕忽概念性思維的開發者,很容易表現出自己對問題的盲目。就像 X files 留言的批評一樣,責怪同人沒有交待清楚是 XML 格式的問題,直到別人提出質疑才說明與列出參考文獻,認為同人缺乏部落格文章寫作的 common sense。但我的文章已經很清楚地提到是有關「交易訊息」語法的問題,難道他不瞭解交易訊息是 XML 技術的一般化抽象概念表述嗎?XML 只是實現交易訊息概念的一種技術,用以解決跨系統整合的問題。如果他要看到 XML 字眼才知道是訊息格式的問題,那改天換了另一種交易訊息的實作方式,我想大概他腦筋又要轉不過來了吧。 以上網友的三種批評,表面上看起來好像是不同的問題,但其背後都存在同樣的本質,那就是從交易訊息的問題中可見一斑,他們無法以抽象性思考來看待軟體開發的問題。但為什麼開發者需要抽象化思考呢?

Continue reading about 訊息交易的抽象化思考

     
jim yeh on 一月 5th, 2009

元旦假期到高雄遊玩,我們搭乘高鐵到高雄,然後以高捷做為連結各個景點的主要交通工具,最後再搭乘台鐵回台北。藉著這次機會,讓同人有了第一次體驗乘坐高捷的經驗,本來對服務人員的悉心解說、與親切的服務態度,讓我對高捷有很好的印象。但可惜在最後,搭高捷到火車站卻因為服務人員的一句話,改變了我對高捷系統的服務評價

Continue reading about 一句話改變我對高捷的評價

     
jim yeh on 十月 23rd, 2008

專案經理利用軟體缺陷的創造信用來進行短期信用的流通,把 bug fixing 變成 feature request 的好處就等同於創造增加軟體開發修改 bug 代價的貨幣。然而,把 feature request 變成信用商品的後遺症,正是讓信用生產結構的迂迴,使信用崩潰延遲發生。

Continue reading about 軟體缺陷的信用創造

     
jim yeh on 八月 13th, 2008

新政府團隊似乎想要在就職典禮的活動上,改變舊制以發揮新創意,營造出耳目一新的感覺。但實際上卻反而把問題複雜化,造成一團混亂。這讓筆者想到在軟體開發過程中,也經常出現同樣的情況。改革的困難正是考驗著領導者的領導能力,他應該如何領導團隊來進行成功的改革呢?

Continue reading about 新官上任三把火