阿裏感悟(十三)降低成本的敏捷設計

杜老師說 2022-01-07 07:00:52 阅读数:474

感悟 十三 降低成本 降低 低成本

作者:方騰飛scrum agile

最近在參與一個比較大的項目,需要耗費上千人日,而細分設計和設計評審就花掉了幾百人日,基本上10幾個人寫了幾周的設計文檔,並開了幾周的設計評審會。整個過程模式比較重,所以耗費的人力比較大。

為什麼模式比較重?

  • 參與者眾多。設計評審會時,要求與本會相關的人都參與設計評審,一個屋子裏可能坐著幾十人,哪怕一個小時的會議和你相關的就5分鐘,你也要參加。而且這樣的公司會議太多,如果每個相關的會議都去參加,那就基本上是白天開會,晚上寫代碼的節奏,所以現在當有人找我開會時,我會問是否必須要我參加,能否會前或會後找我溝通確認,可能10分鐘就能解决的問題。
  • 設計文檔內容多。系分設計非常全,需要把所有設計場景都寫上去,首先需要花大量時間寫系分設計文檔,其次需要幾個小時的會才能評審完。而這樣全面的設計文檔,可能需要三個月到半年才能開發完成。
  • 有的設計評審沒有經過小範圍初審,有些設計遺漏了,導致要反複評審。

​這樣的詳細設計和設計評審雖然模式比較重,但是優點是考慮的很全面,風險在一開始都能大部分暴露出來,缺點就是耗費的人力太多,不够敏捷。所以本文想和大家一起探討下敏捷設計,希望能拋磚引玉!

在談敏捷設計前,首先需要思考下到底什麼是軟件設計?在精益思想中對於浪費有這樣的定義,任何不對最終客戶產生價值的行為都是浪費,而設計本身是不對客戶產生任何價值的,那麼為什麼需要進行軟件設計?

什麼是軟件設計?

大學應用基礎是這麼定義的,軟件設計是從軟件需求規格說明書出發,根據需求分析階段確定的功能,設計軟件系統的整體結構、劃分功能模塊、確定每個模塊的實現算法以及編寫具體的代碼,形成軟件的具體設計方案。我總結下,軟件設計是將需求抽象成軟件系統的過程。

為什麼需要軟件設計?

因為好的設計可以降低成本,如减少返工,當需求變更時,能快速響應需求,並且開發成本最低。

什麼是敏捷設計?

在網上找了下定義,致力於保持系統設計在任何時間都盡可能的簡單、幹淨、以及富有錶現力!其實就是减輕設計階段的壓力,最大程度上减少浪費,多餘的設計和考慮不周全的設計都會造成浪費。有些文章談到代碼就是設計,這個有點理想化不好落地,簡單的項目可以這麼做,但是像我們做的互聯網金融產品,業務都極其複雜,光看代碼是很難看懂的。

如何進行敏捷設計?

我總結出的幾個思路,可能比較概念化:

  • 分階段設計。先設計必須要的東西,快速拿到產出,暫時不用的先不要設計,想不清楚的也暫時不要設計。沒事的時候就多想想系統的設計有沒有問題,有問題即時提出來,然後修改掉。
  • 快速討論設計方案。自己設計出來的東西先找某個同事簡單過下,如果在設計評審中還有很多問題,那浪費的人日會更多,因為參與設計評審的人很多,不通過還要開複審。一只筆,一個黑板擦,一面玻璃板足以完成一次設計,用筆直接在板上畫一下自己的設計思路,並和同事進行討論,確認之後把設計圖拍照提交到文檔庫,或者用工具Visual Paradigm畫出來。
  • 不需要的不設計。優先以最小人力解决問題,能用簡單的方法解决問題,就不要用複雜的辦法。比如,能通過打通網絡解决系統間訪問問題,就不要走代理,這樣可以節約很大的設計和開發成本。能通過業務解决的問題,就不要想用系統解决,比如人工操作修改數據,和系統啟定時任務批量修改數據。

敏捷設計的優缺點

優點:互聯網開發業務變化得非常快,如今天產品經理覺得應該上旗艦版來提高產品的銷售額,但是幾個月後發現由於價格比較貴,購買的人比較少,於是旗艦版就分拆成不同的模塊進行售賣。從我們的經驗來看,一個擴展性非常好的業務設計可會帶來三個問題,第一設計和開發時間比較長,第二代碼不易讀,第三大部分擴展以後都不會用到。 所以敏捷設計的思路是只做必要的設計,需要的時候再重構。

缺點:可能的確是有些場景在設計的時候沒有考慮到,導致系統在未來很特殊的場景下不能支持業務需求。到時候可能就需要打補丁或者用很奇怪的方式實現。

敏捷設計評審會議

  • 减少會議。為了會議的高效,我們之前的做法是會合並幾個會議,在Kick Off會議之後直接進入設計評審會議,因為定會議室,投影儀,讓參會人員准時參加都需要一定的成本。設計評審會議一般是半個小時到1個小時。設計者講下自己的設計,可以使用PPT或直接在黑板上畫一下自己的想法。如果是對已有功能的修改,需要先講這塊功能原來是什麼樣,現在需要修改成什麼樣,涉及到哪些修改點,自己是如何設計的。如果設計方案審批不通過,則設計者需返工,因為我們强調簡單設計,所以即使返工,成本也不會很高。同樣為了高效,設計者重新設計的方案不需要再開一次設計評審會議,只需要把相關人叫到座比特旁邊確認下就可以。
  • 减少參與者。只邀請必須參加的人,非必須單相關的單獨溝通。
  • 高效評審。設計評審中很重要的一點是參加評審的人必須有足够的耐心和胸懷聽明白別人的設計,設計評審是為了優化設計者的設計方案,而不是為了挑戰設計者,或給設計者挑刺。任何設計方案都有它的優缺點,所以評審人在聽完設計之後,需要先思考下這個設計方案的優缺點是什麼,再想想自己的設計方案是什麼?對於設計者沒有考慮或講到的點,可以通過反問的方式讓對方補充。

原創文章,轉載請注明: 轉載自並發編程網 – ifeve.com本文鏈接地址: 阿裏感悟(十三)降低成本的敏捷設計

FavoriteLoading添加本文到我的收藏
版权声明:本文为[杜老師說]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201070700517644.html