2018 高雄敏捷之旅 - Agile Tour Kaohsiung

in #cn6 years ago


敏捷存在生活的每一天

今天要分享的遊記比較特別, 這個景點都是靜態的,而且對文青來說可能有點悶,內容比較適合 RD 宅閱讀,失眠也可以透過閱讀本文幫助入眠。

由於我生活在高雄,從事軟體相關開發相關工作好幾年了。相對於台北,高雄軟體產業的發展規模較小。雖然軟體產業工作沒有地域限制,但是軟體依然非常重視資金、市場與技術聚落等等效應,大部分的大型軟體公司與研發中心都會選擇設立在台北。南部高雄的軟體開發相關社群與研討會也不像北部那麼多,所以有機會就鼓勵各位軟體開發同好盡量參加與支持囉。

今天參加的「高雄敏捷之旅」是第二屆,在會議中聽了很多關於軟體敏捷開發的故事,會場也賣很多軟體開發相關的書籍,一不小心就買了幾本書:

敏捷開發相關書籍敏捷開發相關書籍

今天的議程如下:

敏捷高雄之旅議程敏捷高雄之旅議程

這一天完了不少遊戲,聽了不少演講。來歸納一下今天聽到的幾個心得,順便在 Blog 記錄一下。

產品 (專案) 失敗的八大原因

分享一下「新加坡商鈦坦科技總經理 李境展」大師所分享的「跟我的失敗致敬」主題,其中提到的產品失敗的幾個原因:

  1. 缺乏真實情境與環境測試
  2. 缺乏從客戶來的即時反應
  3. 對於產品需求的誤解,錯估整合開發的時程
  4. 第三方服務的品質及時程控制不易
  5. 團隊不清楚開發進度現況
  6. 產品需求被持續修改
  7. 不確定的新技術能力及對產品知識的缺乏
  8. 無向心力與達標決心的團隊

上述提及的失敗原因,相對於產品開發我覺得在專案執行更為貼切。對我而言,產品與專案是不一樣的,專案必須有明確的目標 (一定要符合 SMART 原則),但產品開發對於目標卻是很模糊的,因為成功的產品目標並不是開發完成就是完成,而是產品達到 PMF (Product Market Fit) 的狀態。

關於上述的失敗原因中我相當認同,先簡單檢討一下每一點:

缺乏真實情境與環境測試

一開始就建置持續整合系統是必要的,我們往往把測試工作放在開發完成最後的階段才進行,是錯的!一但遭遇軟體開發迭代 (階段) 時間很長時,就會存在了很大的風險,在最後一刻砍掉重練是很慘的。一般我們會在專案一開始,就建置持續整合與佈署測試環境自動化,並且盡可能與產品上線保持一樣環境,才有辦法做到持續交付、測試與下班

缺乏從客戶來的即時反應

這個原因與第一項有關係,如果你沒有辦法提供即時的測試環境與當下的開發狀態,功能都是在最後完成才交付到客戶手上,必然無法獲得客戶即時的反應。即使功能做得很好,但不是客戶想要的需求,無法解決問題的功能注定要作廢。透過敏捷開發中的「Small Release」實現小版本交付到客戶手上,隨時將開發的功能與客戶的需求做驗證,如此失敗的成本會大大降低。

對於產品需求的誤解,錯估整合開發的時程

軟體開發有一個工作叫做「需求發展」,這項工作會將需求轉變為實際的功能與規格,有了可能明確的功能之後,我們就會進行開發時程的評估。要如何才能更準確地估算時程呢?在「The Clean Coder」一書中有提及,將工作切分的越細,可以降低每一個 Task 錯估時程對整體專案的影響與衝擊。所以我們才會在 Scrum 裡頭的每一 Task 去注意是不是太長了 (超過兩天),是不是需要切割!?

軟體開發相當複雜,除非你這個系統已經開發過一次,才會有絕對豐富的經驗,否則估不準是正常的 (反正 Dead Line 到了軟體自然會好)。因此我們才需要敏捷開發,透過短時間 (或許兩週) 的產品迭代,降低錯估時程的對於整個案造成的影響。

第三方服務的品質及時程控制不易

特別是比較大型的專案進行時,往往會有第三方廠商的參與,第三方廠商有時候就很難控制專案風險。特別是交貨品質不良、溝通成本過高、關鍵路徑延遲等等問題。我遇過很多大型專案都是大公司得標後,然後外包外包再外包,真正執行的團隊已經距離使用者需求太遠,整個程式的品質往往不佳,發案方說不清楚要做什麼,接案方也不清楚自己在做什麼,專案風險往往高的誇張。

團隊不清楚開發進度現況

「透明」就是管理的根本 (Scrum 三隻腳之一),一但所有事務無法透明,就缺乏彼此的信任,協作時就需要花上更多時間溝通,以取得信賴。透過敏捷方法論中的站立會議,每天同步團隊成員彼此的工作狀態,對專案執行來說是有幫助的。如果專案進度原本是定在每一次交付才進行盤點,透過站立會議將可能縮短為每天盤點,監控頻率變高,漸漸讓團隊成員養成自我管理、自我驅動的特質 (小精靈模式)。

產品需求被持續修改

在軟體開發中「需求變更」是最惱人的問題,需求改變會直接影響到成本與專案時程。在敏捷思維中,團隊應該擁抱變化,相對於產品開發到 PMF 的過程,面對市場需求變更是合理的。但是在專案的情況下,需求變更變成為恐怖的時程殺手,如同時程預估的困難一樣,我們都是在開發一項以前沒有開發過的系統,需求有時候做了才會想到問題,然後直接影響反映到原本的計畫上。

遇到專案時程落後,增加人力是最直覺的問題解決辦法,但是增加人力並不能完全解決問題 (與熊共舞一書提及),或者是說能幫助的效果有限。對我而言,砍需求或技巧性地規避需求,才是最有效的辦法。

不確定的新技術能力及對產品知識的缺乏

RD 使用當前最酷炫的技術是必要的!笑~XD~當專案使用了以前沒有深度掌握的技術時,絕對會提高專案的風險,有時候一個 Framework 的雷就可以炸掉整個系統。初期需要警慎的評估新技術的使用,也需要確認團隊中有足夠能力的神人,可以讓技術風險發生時,幫助團隊度過難關。

對於產品而言,我覺得沒有掌握市場 Know-how 是一件相當危險的事,單靠著創辦人的 Idea 創造市場需求來開發功能,很有可能會讓船走在錯誤的道路上 (船應該駛在海上),還容易再次犯下某個領域大家都知道的錯誤,相當不切實際。

無向心力與達標決心的團隊

這一點我實在沒辦法評論,會發生這個原因基本上已經行屍走肉,大概是欠薪兩個月才會出現的情況吧…

敏捷之旅戰利品

每次參加會議,都是拿了一推貼紙。這次比較特別,拿了許多 RD 幹話貼紙:

會寫 Code 啊不就好棒棒會寫 Code 啊不就好棒棒

其他場還有玩了很多敏捷開發的遊戲,中午吃完便當也喝主辦單位提供的酒精飲料,研討會有提供啤酒真的很狂:

高雄敏捷啤酒節高雄敏捷開發啤酒節

整體來說活動辦得很好,聽了許多對軟體開發有強烈熱忱講師演講,每次參加都會被那種熱衷的氣氛所感染。對我來說敏捷思維,不應該只是儀式,應該是一種信仰,一種做事與生活的方式,即使不是軟體開發,也能貫徹這種精神!供勉之~



文章由 Soul & Shell Blog 轉貼, 原文:https://blog.toright.com/posts/6118/2018-agile-tour-kaohsiung.html
Sort:  

Congratulations @samejack! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 250 upvotes. Your next target is to reach 500 upvotes.

Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!