漫談敏捷開發-從精益到敏捷(摘錄JAVAEYE)

wf1006 14年前發布 | 2K 次閱讀 Apache Hive DataCleaner 蘋果 Windows
軟件開發是一種非零和博弈,意思是某一方的獲得不是建立在另一方的損失之上(賭 博就是一種零和博弈,獲得和失去的總和等于零),所以軟件開發必須實現雙贏,幫助客戶成功的同時幫助自己成功。如:通過軟件幫助客戶把手上的5塊錢變成50塊錢,然后從客戶那里拿5塊錢。通過軟件幫助客戶節約50塊錢,然后從客戶那里拿5塊錢。
從精益說起
敏捷開發源于豐田的精益思想。傳統的汽車制造是以計劃驅動,如根據往年的經驗判斷今年應該生產多少汽車,但是這樣帶來的問題是有可能等汽車生產出來,市場已經不需要了,而這就是一種極大的浪費。精益思想是以價值為驅動的方法論,精益思想的核心是消除浪費,它認為不為客戶創造價值的活動和盡管是創造價值的活動,但是所消耗的資源超多了“絕對最小”(投入產出比低)都視為浪費。浪費有七種:過量生產(生產多于所需),庫存(不直接產生價值,并增加管理成本),搬運,返工,過程不當(對最終產品不能增加價值的活動),多余動作(任何不增加價值的設備和人員的動作),等待(兩個關聯的要素間,未能同步)。
再談敏捷開發
敏捷開發的核心就是消除浪費。那么在軟件開發當中應該如何消除浪費呢?
? 過量生產:在我們開發的產品當中,如果需求(用戶故事)不是把握的很好,那么就會造成很大一部分功能用戶從來都不會使用,這就是生產多于所需。所以我們需要用戶和業務分析師(BA)或者需求分析師一起來規避過量生產。
? 庫存:在我們的軟件開發過程中,如果一直處于開發中,那么產品未給客戶帶來直接的價值,這就是一種庫存。所以我們可以通過迭代開發和快速交付來減少庫存。
? 返工:這個在軟件開發當作比較常見,可能是對需求理解不透徹,開發出來的功能,不是客戶所想的,導致返工。也有可能是當初的設計不合理,不能滿足客戶的新需求,導致返工。也有可能是開發人員不注意編碼質量,導致代碼的壞味道越來越重,最終導致代碼無法修改,導致返工,我曾經遇到一個核心類有幾千行,無人敢動。所以我們需要BA來規避需求風險,需要架構師來規避設計風險,需要好的基礎和習慣來提高軟件質量。
? 過程不當:我覺得這個主要體現在溝通方面。比如我和某同學講述一個需求,如果別人不用心聽,那么信息就不會有效的傳遞給他,或者是我表達的是A,而他聽到的是B。所以在溝通的過程中一定要通過消除溝通壁壘來消除浪費,在表述者和聆聽著之間存在兩道溝通壁壘,減少第一個壁壘,表述者應該盡量站在聆聽者的知識背景上去清楚的表達內容。減少第二個壁壘,聆聽者應該懷著一個開放的心態,去用心的接收表述者傳達的信息,不要在沒完全聽明白表述者傳達的信息之前,就用慣性思維去抵觸信息的傳遞。另外一點,我提倡定期溝通,而不是時時溝通,定期溝通是消除信息傳遞不暢導致的浪費,不提倡時時溝通,是為了減少開發人員的任務切換,從而提高效率。
? 等待:這個可能是不同模塊之間的依賴和接口的聯調需要等待,所以這個可以通過合理的計劃來減少等待。也有可能是測試和研發的資源和計劃不對稱,導致開發的時候,測試閑置,開發完之后,測試資源不足。這個可以通過迭代開發持續交付的方式,來提高測試資源的利用。
? 多余動作,我覺得主要體現在重復開發。比如每個模塊可能都會開發上傳組件,分頁組件和驗證組件,可能都會調界面樣式,可能花時間解決一個重復的問題。所以要減少多余動作造成的浪費,我覺得應該加強團隊溝通,有專門的人負責公共組件的開發和復雜問題的解決。
 本文由用戶 wf1006 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!