l

2010年7月17日 星期六

亂談 Notes on the Synthesis of Form (1)

7/16 23:40 7/17 01:20

最近部落格上面抱怨的文章寫得太多了,害 Teddy 的氣質變得越來越差。(路人甲:什麼,這個部落格從頭到尾有哪一篇不是在抱怨的,只是『怨念含量』多寡的差別而已。)連 Lililala2 學弟都發現『你的措詞越來越強烈了,學長 XD 』。既然 Teddy 是屬於那種 EQ 很低的人,那還是回頭寫點技術的文章好了,比較不會牽涉到『人』的問題。


今天要談的是 Christopher Alexander 所寫的另一本世界名著 Notes on the Synthesis of Form。這本書 Teddy 從 2003 年 5 月 30 日拿到手到今天,只看了不到一半的內容,而且很多都看不懂。不過這不是重點,重點是這真的是一本好書。(路人甲:我聽你在放..風箏,看不懂還推什麼薦。)這麼說好了,據江湖傳言看完這一本大概等於練到『含冰掌第九重』的效果,再往上已無更高法門了。不過因為 Teddy 只懵懵懂懂看了半本,所以對於上述說法無法證實。

時間有限,言歸正傳,本書算是 Alexander 嘗試以正規方法來闡述自己所提出的 patterns 方法 。Teddy 手邊這一本書是 2002 年再版第 17 版,書前面有 Alexander 重新寫的序言,以下內容便摘錄自其中。

Today, almost ten years after I wrote this book, one idea stands out clearly for me as the most important in the book: the idea of the diagrams.

These diagrams, which, in my more recent work, I have been calling patterns, are the key to the process of creating form. In this book I presented the diagrams as the end results of a long process; I put the accent on the process, and gave the diagrams themselves only a few pages of discussion. But once the book was finished, and I began to explore the process which I had described, I found that the diagrams themselves had immense power, and that, in face, most of the power of what I had written lay in the power of these diagrams.

Teddy 補充說明:
  • form = solution.
  • Alexander 在本書中以正規(理論)的方法來討論設計流程,據說在本書出版之後,引起一波『設計方法論』的研究風氣。但是 Alexander 在寫完本書之後重新檢視自己書中所提的設計流程,赫然發現 diagrams (也就是 patterns) 本身其實就具有『巨大的力量』。『 I found that the diagrams themselves had immense power』這句話讀起來平凡無奇,但是卻是很重要的一個觀點。Teddy 幫鄉民們複習一下,在 『就是這個光: Scrum + Lean + XP』文章中 Teddy 提到 Jack W. Reeves 所寫的 "What is Software Design?" 這篇文章。Reeves 在該文章說明,code (程式碼) 本身才是『軟體設計』的產出物,而不是文件 ,所以得到『source code is the design』這個結論。同樣的,Alexander 討論設計流程,到後來自己認為『產出物』(patterns)本身就是設計啊。
***

But once the book was written, I discovered that it is quite unnecessary to use such a complicated and formal way of getting at the independent diagrams.

If you understand the need to create independent diagrams, which resolve, or solve, systems of interacting human forces, you will find that you can create, and develop, these diagrams piecemeal, one at a time, in the most natural way, out of your experience of buildings and design, simply by thinking about the forces which occur there and the conflicts between these forces.


這是 Alexander 在 The Timeless Way of Building 中經常提到的 piecemeal growth,patterns,applying one pattern at a time,forces,context 等觀念的超級濃縮版。

 *** 


If fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either.

看到這邊 Teddy 又要老調重彈了,再把 Kent Beck 大哥大大的話拿出來講一次:『If you stop coding, you stop learning.』Teddy 前幾天看到博士班學弟的部落格,學弟提到自己『很喜歡設計』,但是已經不再有時間寫那麼多程式了。其實 Teddy 唸完博速班最後悔的兩件事,其一就是『程式寫太少了啦』。Teddy 是在業界工作了六年多之後才重回學校唸書,在這六年多中,Teddy 紮紮實實寫了一堆程式,累積了許多日後做研究的『老本』 。很可惜唸書之後為了讓自己變得『理論』一點,寫程式的時間相對的便少了許多。畢竟只有出 journal papers 才能夠畢業,光靠寫程式是無法畢業滴。這樣聽起來好像有點諷刺,為了學如何開發軟體而跑去唸書,唸完書之後『快忘了』如何寫程式。(不要跟 Teddy 說開發軟體不等於寫程式這種廢話... Teddy 了解。)

以 Teddy 目前的工作,如果真的要『賴皮』的話,是可以『只出一張嘴』而不動手寫程式的,但是只要有機會 Teddy 還是會參與 coding 工作。每次 coding 都算是一種學習,透過實際的 coding,更能體會軟體目前所面臨到的真正問題,而不是靠一張嘴說:『做軟體,不就是改一改就可以了嗎?』很可惜 Teddy 的雜事太多,無法很專心的多多少少都參與到每一個模組的 coding,只參與了 30% 左右的 coding 工作。

把 source code 視為 design,coding 就是 design。好好耕耘 source code,Teddy 把 Alexander 的話修改一下:『 I found that the source code itself had immense power』

***

友藏內心獨白:要讓普羅大眾相信『 the source code itself had immense power』還真是『他,螞... 蟻的』,不容易啊。

***


PS:還記得『600 多個 bugs 要怎麼修?』 不擁抱 source code,給你三輩子你也修不完。

2010年7月16日 星期五

上下船請靠北邊走之麗晶遊輪石垣島之旅 Day 2, Part 1

7/15 22:48~23:56

第二天睡醒之後,往窗外一看,已經可以看到石垣島了。




八點開始下船,七點整先到四樓的四季餐廳吃西式早餐。早餐有附咖啡還有鮮奶,這一點還算是有點人性。Teddy 無法接受咖啡配奶精粉。

 啊,光顧著吃忘了拍照了


 這種歐式的炒蛋真的很好吃


 吃飯總是人山人海

吃飯的當中船正緩緩駛進石垣島港口,吃完飯之後回房間略做休息,準備痛苦的排隊下船行程。

影中人為 Teddy 本人,路上遇到不要欺負他 (襯衫好像太透明了一點..XD)


下船時排隊分成兩邊,一邊是有參加石垣島 local tour 的旅客,另一邊是自由行的旅客,不要排錯了喔。石垣島 local tour 可以在船上直接報名參加,因此會被安排比較快速下船。例如,local tour 這一排可能放行 30 個人,自由行的旅客才放行 10 個人之類的(Teddy 沒有時間去算幾比幾...)。雖然覺的有點不公平,不過這也沒辦法,誰叫自由行的旅客沒有讓船公司多賺一筆。

由於上下船冗長的排隊是此行的重點項目之一,因此連續來個四張排隊的照片瞧一瞧。


從四樓船中旅客服務台開始排起

開始緩步向前行

 繼續緩步向前行,來到星辰酒廊


 終於快到出關的地方了,不能再拍照了。前方有約 10 個日本海關人員上船辦理出境手續,要留下雙手食指指紋以及您的大頭照。護照在第一天上船的時候已經統一由船公司收走保管,出關只要帶船卡就好了。日本海關會給旅客一張登岸許可證,不要弄丟了,上船要繳回。


一下船之後有一位穿著和服的日本妹妹在出口跟每位乘客照相。不要以為石垣島居民很熱情,這是船公司派來的間諜啦。下面這張照片 Teddy 可是花了 275 元新台幣才『贖回』的。



 停靠在石垣島港口的天秤星號,旁邊看起來小小台的遊覽車就是來載參加 local tour 的乘客。


Teddy 在船上就看到港口邊有圍了一堆排班的計程車,下船之後就往計程車方向前進。正在擔心不會講日語等一下要如何與司機溝通的時候,發現現場有一位講『台語』的服務人員可以幫忙翻譯。


 照片右方背心繡有『交通安全』的這位先生就是服務人員,講台語也會通。乘客只要把行程告訴他,他會轉達給司機先生。


接下來是『心痛時刻』,哇哩勒,包一輛計程車居然這麼貴啊。現在時間是台灣時間早上 9:20 左右,台灣時間下午 4:30 之前就要上船,扣掉吃飯,逛街的時間,嗯,包個 4 個小時好了。短短四個小時花了 14000 日幣,這一輩子第一次花這麼多錢搭計程車。



Teddy  和  Kay 原本規劃的行程是先到『川平灣』搭玻璃船看海底景色,然後到『玉取展望台』,接著回到市區吃飯和逛街(路人甲:大老遠跑去石垣島才去兩個景點,你錢多啊!)。這樣算是繞了石垣島一大圈,只有最北的那一小段沒去(石垣島約 222 平方公里左右,比台北市小一點點)。

***


結論:未完待續。
***

友藏內心獨白:少了這些台灣旅客石垣島的司機伯伯們應該要失業了吧。

2010年7月14日 星期三

口袋不夠深

07/14 23:15~23:50

導入 Scrum (或是任何新的制度)都是很辛苦的事,特別是在缺乏『層鋒人士』力挺的情況下做起來更是『看』聲連連。幾個月前 Teddy 在讀某本 Scrum 書籍的時候,看到一句話『A dead Scrum Master is a useless Scrum Master』,大意是說該書作者之前因故與他所負責導入 Scrum 公司的高階主管意見不符,最後作者負氣不幹了。事後回想起來作者覺的這樣的舉動並不是很好,因此寫下了『A dead Scrum Master is a useless Scrum Master』的感想。鄉民們,牧羊犬(Scrum Master)自己都先陣亡了,那留下來的羊群還不是任人宰割嗎?所以作者鼓勵扮演 Scrum Master 角色的人要忍辱負重,不要輕言放棄。

這說來容易,但是做來真的很難。世界上同時具備『高階主管』『豬頭』這兩種身份的人何其多啊,可是能夠『臥薪嘗膽』的 Scrum Master 實在不容易尋覓。許多有本事的人,都是很有個性滴。

***

施文彬在 1998 年 11 月的時候出了一張台語專輯叫做『 按怎死都不知』,裡面有一首國語歌叫做『薪水寒』,歌詞如下:

    作詞:武雄 編曲:江建民

    風蕭蕭兮易水寒啊咧寒 壯士一樣要上班啊咧班
    世上沒有鐵飯碗 人在江湖自然要闖一闖
    不管流血 還是流汗 只為將來揚名立個萬啊咧萬

    自古頭家難過美人關 只要美人裙子穿夠短
    有時候想一想心都會酸 爭來爭去也不過一碗飯
    這個也來煩 那個也來煩 為了五斗米把腰都折斷啊咧斷

    做事容易做人難上難 明槍易躲暗箭怎麼防
    想想以後咬緊牙關 拿人手短你還能怎麼辦
    有什麼不爽 來粒威爾剛 (請自行換成『來瓶馬力夯』) 為了將來埋頭繼續幹啊咧幹

***
鄉民甲:上面這兩段好像有點接不太起來?

Teddy 內心獨白:Scrum Master 們,壯士一樣要上班,退休金還沒存夠之前繼續熬下去吧。

***
友藏內心獨白:A dead Scrum Master is a poor Scrum Master

2010年7月10日 星期六

別教我開發軟體

07/10 11:12~12:03

10 幾年前 Teddy 剛出社會還是年輕小伙子的時候,很希望有人可以教教 Teddy 如何開發軟體。雖然也從一些『長輩』口中學到許多軟體開發的知識,但是絕大部分還是要靠自己苦練。最近 Teddy 不知道走了什麼『狗屎運』,突然有一些『好朋友』想要教 Teddy 如何開發軟體。以下是這些『好朋友』的 賤言 建言:

  • 開發軟體,要先從『定義 problems』開始,然後才是分析,設計,實做。(Teddy 內心獨白:感謝你幫 Teddy 複習功課。)
  • Teddy,你有讀過『人月神話』這本書嗎?(Teddy 內心獨白:那你有讀過 The Timeless Way of Building 嗎?)
  • Scrum 裡面所談的,和『人月神話』的精神都一樣啦。(Teddy 內心獨白:啊你是沒看過其他的書嗎?講來講去都是這本。)
  • 要多聽聽客戶的意見,能挖多少算多少。(Teddy 內心獨白:繼續複習功課。)
  • 讓我來控管你們軟體專案的時程和軟體品質。(Teddy 內心獨白:你懂個『辟...邪劍法』啊)。
  • 軟體需求的 scope 定下來之後怎麼可以變動?你看這一份 N 年前的文件有寫到我們的軟體要提供功能 X,現在要 release 的這個版本沒有把功能 X 全部做完,我們確定要 release 嗎?(Teddy 內心獨白:這是在開發軟體還是在『考古』?)
『好朋友』們,Teddy 是很好學滴,不過要教也教點真功夫嘛。

 ***

友藏內心獨白:又是『A Name Without Quality』。

2010年7月5日 星期一

天堂

07/05 18:37~19:18

Teddy 年輕的時候很喜歡『鄭華娟』作詞,作曲,『鄭怡』主唱的『天堂』這首歌,前兩句歌詞是這樣的:

嘿 親愛的 不是我不想留在你身旁
我以為天堂總是在遠方


是滴,『我以為天堂總是在遠方』,因此:
  • 國家總是別人的比較好,所以要想辦法移民到國外。
  • 公司總是別人的好,所以要想辦法跳槽。
  • 工作總是別人的輕鬆,所以要不時的發發牢騷。
  • 軟體所使用的 framework,總是『還沒有用到的那一個比較好』,所以要不停的換設計 (何時才有 release 的一天?)。
  • 老婆(女朋友)總是別人的比較漂亮,所以要...看看就好,別想太多。
上面列表隨隨便便再加個 100 項都不是問題。

鄉民們有看過『清秀佳人』這部影集嗎?劇中女主角『安.雪麗』想寫一本書,她覺的她的故鄉(加拿大愛德華王子島)沒什麼特色值得寫,因此她離開故鄉尋找刺激與靈感,但是她寫出來的作品卻太虛無飄渺而不被出版社接受。若干年後她回到自己的故鄉,以故鄉周遭的人,事,物為背景寫了一本書,大獲好評。

很多人(包含  Teddy)都會有一個盲點,認為『天堂總是在遠方』,而忽略了手邊所擁有的。做研究的時候,看到新的技術,例如之前的 SOA 啦,或是現在正熱門的雲端計算啦(PS:有人說雲端計算就是錢在雲端,看得到拿不到。),就會想說:『靠...近一點,別人都在玩一些『高科技』的東西,為什麼我還在用這麼遜的技術在開發系統?』,卻忘記了一個根本的問題:

手邊的這個系統根本還沒真正地弄懂啊


技術是一時的,唯有真正下功夫,用心把一件事情從頭到尾完成,才會真正擁有深刻的體會,才有可能朝天堂之路而行。

友藏內心獨白:我不上天堂,誰上天堂?

2010年7月4日 星期日

無效研究人力

07/04 01:39~02:32

睡不著,眼看著快到下一場世足八強賽西班牙VS.巴拉圭開打的時間,寫篇部落格文章吧。

話說當年 Teddy 在念博速班的時候,幫忙指導教授帶了幾個碩士班學弟妹一起做研究。雖然學弟妹們的研究不見得都和 Teddy 的博速研究題目有關聯,這麼多年下來 Teddy 也算是盡心盡力,只差沒有效法諸葛亮『鞠躬盡瘁,死而後已』,但搞到得了『胃潰瘍』也總算是對得起國家,父母的栽培之恩了。


這麼多年下來,Teddy  發現實驗室每隔一,兩年總是會出現一個『怪咖』。每週指導教授和 Teddy 都會與學弟 meeting,針對延二學生討論碩士論文,延一的則主要關心一下修課狀況,或是看一下參與專案的進度。大部分的研究生就算是再怎麼混總是慢慢地會有一些進展,最可怕得就是遇到『今天暫時停止』這部電影裡所描述的情節,哇靠...過來一點,怎麼這著禮拜討論需求,下個禮拜討論需求,下下個禮拜討論需求,三個月後還在討論需求。總之就是每次開會一直圍繞相同的主題,研究進度則可以用『進一步,退三步』來形容。Teddy 原本也是抱持著『一個都不能少』的心態想要幫助學弟有所突破,但是卻是一再的被晃點,到底是誰要畢業啊?

早期系上每位老師每年可以收的研究生大概只有 2 - 3 個名額,所以每個研究生都算是『重要資產』。所以遇到這樣的情況很傷腦筋,因為有時候是一個大題目切給兩,三個研究生一起做,要是其中有一個人擺爛,就會影響到其他的人。

後來 Teddy 聽到一個新的名詞,叫做『無效研究人力』,一樣米養百樣人,有的人就是要來混吃等不當兵,任誰也拿他沒辦法。所以,認清事實,把這種類歸類為『無效研究人力』,雖然佔用一個『人頭』(名額),但是千萬不要期待『無效研究人力』會有任何實質的貢獻,反倒是要避免研究資源被這種人給濫用了,將損害降到最低。

***

每個公司也都會有類似『無效研究人力』的現象,Teddy 稱之為『無效員工』,兩者頗有許多共同點:
  • 佔用一個人頭,而且打死不退。
  • 剛接觸的時候,會讓人有一種『值得期待,有所貢獻』的錯覺。
  • 對於浪費公共資源毫不手軟。
  • 講得比唱的還好聽,但內容都是廢話。和這種人多講一秒鐘都是浪費生命。
  • 很會拍馬屁或是裝可憐。
俗話說『夢幻是成長的開始』,留心一下公司裡面的『無效員工』,在走廊,廁所,或是茶水間遇到時勉強奉送一個虛偽的笑容也就罷了,千萬不要存在任何不切實際的期待。

***

友藏內心獨白:啊,已經開打了。

2010年7月2日 星期五

我鬧,故我在

07/02 20:41~21:35

這幾天沒寫部落格,一方面是 Teddy 的整隻右手疼痛的老毛病又犯了(電腦一族的宿命),另一方面是白天忙著當瘋狗咬『狼』,回家後心力交瘁,實在沒力搞笑。之前看了某本書(還是某篇文章)提到,Scrum Master 就像『牧羊犬』一樣,要保衛『羊兒』(developers)不被大野狼叼走。Teddy 牢記於心,剛開始擔任 Scrum Master 沒幾個月,有一回 Teddy 發現大野狼蹤跡,於是費盡『喝珍珠奶茶』的力氣卯起來吠了一聲。沒想到羊沒有保護到,反倒是因為叫的太大聲而犯了『驚駕罪』。這在『大清』可是『斬立決』的死罪,還好現在已經是『民國』了, Teddy 命大逃過一劫,只是不小心被『曬黑』而已。

沒想到『草原』上居然這麼不安全,隨時都有大野狼『肖想』這些肥羊。有些大野狼嘗試一兩次失敗也就暫時作罷,最可惡的是哪種『閒閒沒事幹』,三不五時就跑來鬧一下的大野狼,這種大野狼簡稱 『野狼 125』『野狼 X』。以下為『野狼 X』的行為特徵,請鄉民們密切注意,小心提防:
  • 屬於草原上的資深動物,卡位卡的不錯。
  • 自己的『本業』閒閒沒事幹,到處串門子或假好心幫助其他部落的狼,以累積自己的『狼脈』。
  • 由於平常拍『狼屁』得宜,在『遠方大大野狼首領』的心目中,『野狼 X』絕對是草原上最優秀的一匹小狼
  • 在 email 中力求表現,把小羊兒的功勞全部搶走。
  • 不定時騷擾羊群,以彰顯自己的存在(我鬧,故我在)。
  • 配備 12英吋的加農嘴砲。
  • 立志於升官發財,只要自己能拿到一塊錢的好處,就算是把整個草原搞爛害羊兒沒草吃也在所不惜。
Scrum Master 遇到『野狼 X』也只能自認『衰小...朋友』(倒楣)。對於從小聽到大的『內除軍閥,外抗強鄰』這兩句歌詞,Teddy 終於有了深切的體認。

結論:反正 Teddy 已經曬的夠黑了... 宋世傑,哈, 爛命一條,早就料到。

***

友藏內心獨白:內除軍閥,外抗強鄰,為 Scrum 而反狼,圖羊群之復興。