jim yeh on 一月 25th, 2006

記得當初跟隨老師學太極拳時,老師常跟我們講忽靈勁,看老師表演得出神入化,但刻意去練卻怎麼也得不到要領。老師只教我們先學完整套拳架再練勁,等我們練完的拳架以後才發現,在我們招式熟悉後,體會到放鬆,勁道就自然出來了。正如太極拳論所言:由招熟而漸悟懂勁,由懂勁而「階」至神明。軟體設計開發,又何嘗不是如此。

軟體開發就如同練拳一樣,程式實作就相當於招式,一招一式好像是理所當然;但設計技巧如何,因人而異,面對相同問題,每個人可能會有不一樣的設計手法,程式寫得愈多,對設計愈有不同的體會,如果你對程式如何解決問題沒有深切的體認,很難設計出彈性及功能兼具的系統。所以以個人的心得來說,業務流程、演算邏輯及程式語言的技巧是招式的運用,而內化的領域知識、OOAD 的分析設計原則、封裝、抽象化乃至於 Pattern 的運用則是心法的展現。這兩者互相反覆搭配、增長。

招式的變化在於個人平常願意動手作及努力練習的心得;心法的流露則是懂得在特定的時機及場合採用適合的招式來因應、兩者相互配合才能開發出良好的軟體系統,設計實作系統原來和練功夫一樣。「階」字巧妙地說明了心法的加深是需要經驗不斷累積的,每個人會有不同的觀點,所以為避免陷於受限知識框架下,適當的社會化的交流是必要的。「相觀而善謂之摩」,透過相互溝通不同的觀點,以不斷地超越軟體設計開發的招式與心法。



     

3 Responses to “由招熟而漸悟懂勁”

  1. […] 總之,沒有問題就沒有設計,只有設計也無法解決沒有問題的問題。所以設計是因需求而調適的,沒有絕對的設計,而是要根據需求而演化。類別的演化,其實是存乎於設計者的巧思;然而,更重要的是招熟而漸悟懂勁,由懂勁而階至神明。[…]

  2. [...] 然而,design pattern 的學習看似簡單,但學了之後,要真正用在軟體開發上,卻又不是那麼一回事。看得懂是一回事,要實際去用卻是另外一回事:為什麼那些大師可以「化腐朽為神奇」,運用 design pattern 使設計變得更有彈性,而我們常把能用的 pattern 都用上了,不但沒讓設計變簡單,反而讓設計變得相當繁複,要了解它都很困難了,更不用說實作與維護了。〈由招熟漸悟懂勁〉告訴我們設計招式與心法搭配的其中奧妙所在: 設計技巧如何,因人而異,面對相同問題,每個人可能會有不一樣的設計手法,程式寫得愈多,對設計愈有不同的體會,如果你對程式如何解決問題沒有深切的體認,很難設計出彈性及功能兼具的系統。所以以個人的心得來說,業務流程、演算邏輯及程式語言的技巧是招式的運用,而內化的領域知識、OOAD 的分析設計原則、封裝、抽象化乃至於 Pattern 的運用則是心法的展現。這兩者互相反覆搭配、增長。 [...]

  3. [...] 資訊技術是一門新興的學科,因此我們在程式設計過程中,所用的觀念與技術,其實有很多是向其它領域借用過來的。程式設計,只要您想學就能學得好,事在人為,並不是資訊科班生的專利。同人並不是否定學校的資訊教育,學校的課程所教的通常只是一個初略的介紹,告訴我們程式在觀念上是什麼(know what)?但如果我們對程式設計有興趣,想知道原理(know why)或怎麼做(know how)的話,則必須自己在這方面下功夫。所以程式設計的基礎,並不在學校的課程,而在程式設計者的實際體悟,要培養紮實的程式寫作基礎,不論你是不是科班生都一樣,除了由招熟而漸悟懂勁的道理外,請再切記:練拳不練功,到老一場空。 [...]

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">