碼農的敏捷開發經驗
近幾年軟體業界對於敏捷開發 (Agile) 是蠻推崇的,因此大概從碼農我的第二份工作開始,幾乎都是走這樣的方式。 不過即使都叫做 Agile,各公司執行的方式似乎也都不太一樣。在 D 公司的時候,公司的一個開發週期是一個月,但在 R 公司的時候,一個週期則是兩週。不過基本上在我經歷的敏捷開發文化裡面,都還是有以下的幾個特徵。 開發流程 Development Process 需求 Requirement 這是最重要的一環,如果需求不清楚的話,也真的不知道要做什麼產品。因此,最好在這時候要有所謂的目標客戶,讓他們確定產品的方向跟用途,這樣才不會讓開發出來的東西不符合他們的期待。 不過也不用期待他們一次把所有的產品方向制定完成,因為這就又回到以往瀑布式開發的舊觀念思維。反而是讓他們把他們想要解決的問題拋出來,讓我們站在他們的立場,從他們想要解決的問題著手,開始跟他們一起討論,一起參與產品的制定。這樣是更有效的。 另外,通常在這階段,設計師(Designer)與系統分析師(System Analyst)也會間接參與,一起把使用者故事(User Story)撰寫出來,好估計整個專案的時程。 設計 Design 當客戶一起參與了你的產品,這時候就會開始衍生出各種設計的問題。界面的設計、用途的設計、使用體驗的設計,技術面的設計。粗略會分成以下兩種設計。 使用界面 / 使用體驗設計 UI/UX Design 產品要做出來,在需求大致確定之後,就會開始著手外觀的設計、使用體驗的設計。這時候設計師會更多跟客戶溝通,討論明確的需求。系統分析師也會開始看著界面的設計,構想大概有哪些技術面的需求,把這些需求轉化成後面技術設計的要點。 技術設計 Technical Design 在界面逐漸確定的同時,技術方面的分析也要進場,開始把一個一個的功能需求丟出來。這時候,系統架構師(System Architect)也要參與技術設計的討論,確保將來實做這些功能的時候,不會打壞原本的系統架構。把所有將來程式要實做的內容,撰寫成一份份的規格(Design Spec),讓接下來的開發時程,可以直接照著文件開發即可。 開發 Implementation 開發的時間就是寫程式的時間了。如果時間安排得宜的話,在上一個設計的階段,有經驗的工程師可能就會先