一開始對agile這個名詞的印象來自教授當時說的”是比O-O還高階,但是由JAVA開發”,對這點感到非常奇怪,JAVA不是屬於O-O的一種嗎,怎麼會由更低接的來開發更高階的呢?
但隨著agile ppt一頁頁的讀完心中也有了答案,原來當時所說的高階,意思是更能貼近人類的思考,就如JAVA相對於assembly,machine language一樣更容易看懂吸收。
造成能讓Java更為高階的技術,Agile method(Process),就其內容,大致可分為一下3點:
1. communication:方式有很多種,如兩人傳e-mail,兩人講電話,兩人白板前面對面溝通(ref pg19),其中又以face-to-face最為有效,document communication效果最不顯著,
種類:探索需求,使用情節,驗收測試案例等等(myAgile 11道工序皆是)…..
2. Test-driven development:測試驅動開發,意思是在寫出程式之前,先將各小unit進行測試,若無錯誤,在繼續coding,以bottom up方式進行測試,確保其下層unit無誤,如此一來,當程式完工時,BUG數量會大幅減少,並且能更有效率的DeBug。節省下許多debug時間,比起非Agile的coding無疑是快多了
若測試出錯誤,就要重新省視資料結構與演算法有無制定錯誤,重新審視後
再進行測試。
在測試完工後,這時執行出的成果就須交予駐點人員進行驗收,這又會牽扯
到第一點的communication。
3. reuse &refactor:現在網路上都可以找到許多source code, ,這些code有個一致的優點,具reliability,efficiency,usability等,如能有效的利用這些source code coding的速度就更敏捷了,但這些source code並非都能reuse的,有些source code排版混亂,無pseudocodeu,也無註解,無疑缺乏了readability因此我覺得如能推崇pseudocode與註解,台灣軟體業一定會更蓬勃,但有時source code老舊,功能稍嫌不足,這時就須refactor來加強此source code。
簡而言之,Agile的三點都與溝通有關,但其實溝通不只侷限在這上面,不管是小學,國中,高中,老師站在講台上的單方面溝通,還是生意上供與需的溝通,人都是因為溝通而能達到更敏捷的學習,更精確的目標,也因此我相信agile此法也應能推行到各行各業,並能發展出屬與自己的myAgile。
以下分享我對Agile的經驗談
在我大學時,我選了一門課叫”智慧型手機程式”,當時我們期末要寫一程式,在這之之前我重未接觸過Agile,也沒做過比較大型的專案,因此在這情況下,我們分配好工作就決定像往常一樣,各自寫自己的code,這時問題就來了,
因為沒有Pair Programming很多邏輯上的錯誤都沒考慮到,導致演算法,資料結構設計不良,最後BUG一堆。
因為沒有進行unit test造成trace debug非常難做,不曉得是哪裡引起的BUG,經過不斷的追蹤,期間花費了好幾日才完成。
最後要整合時,也因沒有寫pseudocode,看不懂別人的程式碼,還得透過MSN相互討論,最後才將整個程式整合起來,現在想起來,當初以為是我coding程度太低導致看不懂別人的程式碼,原來一切都是因為沒寫pseudocode的習慣,也沒註解習慣導致的。
追蹤BUG時“要放鬆,專注沉靜,不能焦慮不安,才能心智暢通,創意湧現”這句話告訴我們,做任何事都要保持在,輕鬆,但不能放縱,專注但不能程悶的情況下,做起事來才會有效率,但在台灣重小補習,考前衝刺班,等等,裡面的氣氛沉浸在緊張,焦慮不安,長大後,上班也是整天趕東趕西的,雖然適度的緊張是必要的,但如果偶爾能適時放鬆,那做起來事來想必更有效率。
資工這個科系給人點”宅”的感覺,因為他工作離不開電腦,所以就常常被貼標籤,但事實上,電腦軟體也是種文化,身為文化的創造者,當然也要常常往戶外走,多培養點文化氣質,走入人群讓自己的思考更人性化,舉例來說,現在流行的智慧型手機,不但設計起來有質感,又具有人性化,難怪蔚為風潮,引領流行