對 agile 精神的理解

大學時因為很任性的理由沒有修軟體工程,所以 agile 是一直到開始工作才聽到。之前是聽過 XP 跟 pair programming,不過沒有很清楚在幹嘛。話說 pair programming 實在要看狀況用,像我這種基本上屬於內向害羞的類型,用 pair programming 大多數狀況下根本直接腦殘化…= =

之前被拐去上 scrum 的課,說不定是因為講師一直強調 agile 本身精神很重要云云,有個想法一直在腦袋徘徊不去(?),只好來 murmur 一下看能不能清爽些。阿不過這篇只講對 agile 精神的想法,scrum 方法我不會(欸)。

我將 agile 精神類比為適應,因為根本上概念是共通的。適應就是因應改變,無論那改變來自外在環境抑或是自身變化。差別只在於生物上各種生物有不同的適應方式,人對於環境以及種種變化所做出的調整也是適應,而 agile 則是將這樣的想法套用於組織性的軟體開發。

需求改變(外在環境)、內部人員的不同(內在改變)等等都是變化,有了基本精神後當然是以各種工具與方法達成。而現在有許多經過不少人血淚斑斑的試驗過、覺得還不錯的方法可以使用,但是最後依然要找出適合組織與情境的方式。

我是從個人的角度出發去看「因應變化」這件事。因應變化常常帶著不確定性,所以有時候不太討喜,但是近年我喜歡這種會因應變化的觀念,因為這代表彈性、可能性以及選擇。我喜歡用「成長」的角度去看待改變,改變不見得是成長,但是沒有改變幾乎難以有所成長。有改變代表有新東西,有新東西代表有新選項,有新選項代表有不同未來的可能性。倘若不滿意現況,如果希冀有所不同,又怎麼能夠期望同樣的方式能帶來不同的結果?

至於結果是更好還是更壞,如果以從個人角度出發來看,我是不太在意。因為覺得不好,再改就是了,這不正是彈性的好處?我傾向相信,終究會慢慢摸索出適合的方式。而那方式,也可能只適用於某一陣子,那只是一個暫時的答案,不是絕對。