最近部落格上面抱怨的文章寫得太多了,害 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』。
***
***
PS:還記得『600 多個 bugs 要怎麼修?』 不擁抱 source code,給你三輩子你也修不完。
沒有留言:
張貼留言