敏捷與ASPICE:SDV趨勢下軟件研發體系的挑戰與思考
01 軟件研發體系的挑戰與思考
1. 挑戰與痛點
研發干的“不好”
-
定義了A,實現出來卻變成了B: 產品定義方與實現缺乏溝通,且交付物只在最后階段可見,再提意見就晚了 -
里程碑快到了,才發現問題仍然一堆:軟件開發的過程不透明,難以管控 -
上線后,售后問題急死人:工期的壓縮對非必要環節產生沖擊,嚴重影響質量
市場變化“太快”
-
定義了A,干到一半想改成B,基本不可能:傳統的瀑布式開發,流程越往后走,變更成本越高 -
定了一年上線,臨時想改成8個月,困難重重:瀑布式開發,若未走完全流程則質量問題一大堆,基本無法交付。
黃花菜“涼了”
-
需求從提出到交付,周期太長:單一功能涉及多個專業部門,干系人復雜,溝通成本太高;功能開發流程鏈條較長,從計劃到交付往往涉及10+環節;
2. Tesla和行業里是怎么干的呢?
-
Tesla、Apple、Google應用敏捷基本是不用去考證了,其中Apple在2012年組織架構已經是“敏捷”的[2], Google也在2006年就成功將”敏捷”引入Adwords的開發中,并發表相關論文,被IEEE收錄[3]
-
至少是2020年起,Aptiv已經在全球范圍內全面推廣”敏捷”,且聘請咨詢公司專門定制了AutoScrum的敏捷框架,在公司官網也可以看到其已經在"主動安全"、"自動駕駛"、"車輛互聯"等領域應用敏捷方法了。[4]
-
Bosch在2015年宣布開始轉型為敏捷組織, 管理層率先使用”敏捷”的方式開始工作[5][6] -
Continental在2020年也宣布全面轉向敏捷的方法與文化,其VNI部門率先開始全球試點[7]
-
奔馳已經將”敏捷(Agile)的組織文化”寫入公司戰略[8],并且其子公司Mbition也開始用敏捷的方式生產整車,并要求其供應商也使用敏捷的方式。其主頁http://mbtion.io上有一段話
"The essence of our Way-of-Working (WoW) is being agile when it comes to applied values and principles"
-
沃爾沃自2017年起,全球整車研發開始轉向敏捷開發[9]。并從2020年開始,使用完全敏捷的方式打造新的量產車型。 -
寶馬的智能座艙和IT部門也是使用敏捷方式,其中IT部門在2019年實現100%敏捷[10]
3. 我們的思考與方向
02 敏捷細究
既然提到“敏捷”,雖然網絡上關于“敏捷”的介紹不少,我還是簡單的講一講我的理解吧。
1. 敏捷概況
-
是一種源自“精益”的理念,始于2001年 ,一開始僅用于軟件開發,目前已應用于生產、零售、人事資源、預算、審計,企業組織形式等領域。 -
在21世紀席卷全球,最大的5家互聯網公司Amazon, Apple, Facebook, Google, Microsoft都在使用 -
全球有許多非營利組織提供相關的培訓與認證服務,如Scrum聯盟,Agile聯盟,PMI(項目管理協會) -
主流問題管理工具都原生的支持敏捷開發:如Jira, Teambition (阿里), TAPD (騰訊)
-
關鍵角色:Product Owner(產品負責人), Scrum Master(敏捷教練) -
跨職能團隊:一個團隊內要具備所有的角色 -
迭代快速:需求拆細,2-6周可交付
測試驅動開發:在編寫任何代碼之前,首先編寫對應的測試用例;測試用例需要能完全自動化運行。根據IBM和微軟的研究,BUG會少40% - 50%[11]
結對編程: 兩位程序員在一臺電腦前工作,一個負責寫代碼,一個負責實時檢視代碼。兩者角色定期更換。生產率低15%,但BUG少15%,考慮到解BUG工作量比寫要大幾倍,總體效率更高
2) 敏捷開發可提升交付速度。某金融科技集團實施1年半的數據:交付周期由 75天-> 42天
敏捷 vs 瀑布
3) 敏捷開發通過可視化項目管理等措施,提高軟件開發透明度,大大提高管理效率,進一步促進生產效率。某金融科技集團實施1年半的數據:人均用戶故事數由2.6 -> 4.3
4) 敏捷與OKR:兩者是天生的契合關系,有些公司直接把OKR叫做“敏捷”目標管理。這兩者的團隊文化都強調:
-
自組織:在完成必需工作后,團隊自行決定做什么 -
自驅力:溝通更多為自下而上,充分發揮個人主動能動性
這里也進一步講一個好處,在敏捷實行的較好的團隊中,由于自驅與自組織,管理人員會變少,利于整個組織的扁平化。
4. 敏捷轉型的關鍵挑戰
敏捷雖然很好,但要轉型成功,挑戰不小,以下是來自敏捷年度報告中的統計。
敏捷轉型中的挑戰
這里我著重講兩點:
-
缺乏領導層的支持: 實行敏捷,組織架構上的微調是必不可免的,這個就需要領導層的支持。很簡單的說,一個SCRUM團隊中,有來自產品、開發、測試、集成等各個職能團隊的人,他們憑什么聽指揮呢?那么至少這個SCRUM master要有考核或比較強的話語權。 -
組織對變革的阻力: 三方面吧,一是接受新的觀念、流程對很多人都較為困難,且在轉型初期會較為痛苦;二,敏捷特別講究量化數據,這時很多“老油條”或“摸魚達人”就會被暴露出來,他們當然天然會反抗這種轉型;三、敏捷轉型后,整個組織自驅力越來越強,需要的管理人員會變少,這些人該去哪?難免又會有內部的阻力.
5. 敏捷轉型中會出現的常見問題
敏捷轉型中會出現的問題千奇百怪,我也講兩個:
-
生產率臨時下降(2~3個Sprint):在剛開始實行敏捷轉型時,有很多新的習慣要養成,有很多新的流程要遵循,所以必然會出現臨時性的生產率下降。但放心,一般來說,經過2~3個Sprint的磨合,就可以明顯看到效率的提升。 -
敏捷容易退化:有些組織在實行敏捷一段時間后,比如說站會開了,KANBAN有了,Scrum也跑起來了,會慢慢的松懈,效率會掉下來。這主要因為“敏捷”是“價值觀”,而不是“方法”,只用敏捷的方法是不夠的。有一句名言叫“Don't do agile, be agile",就是指這個。那么如何保證“敏捷”的價值觀能夠貫徹并保持下去呢?就靠“工程師文化”了,這個后面詳細描述。
03 敏捷與ASPICE
前面講了很多“敏捷”的好處,但是在汽車行業“ASPICE”才是老大哥啊。本節就講講把這兩者放一起講講。
1. 敏捷與ASPICE可以結合嗎?
-
ASPICE更加注重文檔:這里的文檔泛指可被第三方檢查的證據。ASPICE Level1的認證就是根據你的文檔輸出(outcome)來倒推你是否有按Base Practice干的。如果你沒有這些,Level 1過不了。 -
ASPICE更加注重流程和計劃,GP(Generic Practice)2.1.1~2.1.6基本講的就是流程、計劃。如GP2.1.6里面寫明了:必須識別、準備、安排合適的資源來保證流程按計劃的進行。要知道,你想通過ASPICE Level 2的認證,GP2.1.1~2.1.6是必要條件。
2. ASPICE的種種弊端
-
3~5倍工作量:一個項目,嚴格采用ASPICE后,是常規項目的3~5倍工作量。這個是很多Tier1實踐下的結果,不信的可以自己試試 -
Traceability——看上去很美的骨感現實:ASPICE幾乎每個流程都會講雙向可追溯性(Traceability),大部分項目要么就是把所有的需求全部鏈接到一個模塊上,要么就是只拿一個小模塊來做這事。因為,工程實踐中,Traceability確實可以幫助發現問題,但是性價比極低,你當架構師做架構設計時是只看一遍需求嗎? -
改需求或重構時怎么辦:我在上一家公司時,曾經有2個月獨自做一個大模塊,代碼量大概4萬行左右,其中還有幾千行是用于生成代碼的代碼。然后2個月內,我一邊做設計一邊寫代碼,寫不通了就重構設計,一共搞了3遍。如果按ASPICE來,我該怎么辦?
-
成就感:實現了某個復雜功能,解決了某個疑難問題 -
以自己代碼的健壯性、可維護性、可擴展性為榮 -
吹牛:老子10年前寫的代碼他們現在還在用呢
-
成就感:我所有的文檔(泛指)都寫完啦 -
以嚴格遵守流程,不給QA添麻煩為榮 -
吹牛:(想不出來了...)
3. ASPICE vs 敏捷 總結
04 工程師文化與DevOps
1. 工程師文化
-
質量為導向:充分信任工程師,在不達交付標準時不上線,且不追責. 優秀的工程師的自我要求都是非常高的,到了交付時間點若未達心中的交付標準,其實是不愿意上線的。這時要尊重工程師的意愿,且不追責,因為他往往已經盡力了。 -
追求新技術:使用和關注最新的技術和工具,并允許因嘗試新技術而帶來的時間成本。嘗試新技術就有失敗的風險,一味只想提高效率而不愿承擔可能的后果就是耍流氓。 -
專注的時間:盡量減少不必要的會議與其他打擾,否則工程師的“靈感”可能就被打斷了。這里的小提示就是,在非必要時,盡量留言,而不是打電話或者直接找過去。 -
內部技術論壇:內部建立技術的充分溝通與交流的氛圍。這里,有個簡單粗暴的辦法來判斷公司是否有技術氛圍,就是看那幾百人的大群里,都在聊什么?是經常有技術的交流和分享呢?還是都是些行政類的通知?
2. DevOps
-
代碼的提交直接觸發:消除等待時間,快速反饋 -
每個變化對應一個交付管道:使問題定位和調試變得簡單 -
全開發流程高效自動化:穩定,快速,交付結果可預測 -
持續進行自動化回歸測試:提升交付質量 -
設施共享并按需提供:資源利用最大化
05 結語
^1 https://www.36kr.com/p/847294138930688
^2 https://www.forbes.com/sites/stevedenning/2012/02/03/is-apple-truly-agile/?sh=d209df6641e6
^3 https://www.agilearena.net/google-case-study-agile-software-development/
^https://www.aptiv.com/en/careers/competencies/join-our-agile-revolution
^4 https://flyntrok.com/2020/07/07/agile-owl-edition-3/
^5 https://hbr.org/2018/05/agile-at-scale
^6 https://www.continental.com/en/press/press-releases/2020-10-21-new-project-organisation-vni-238392
^7 https://www.daimler.com/company/strategy/
^https://www.forbes.com/sites/stevedenning/2020/01/26/how-volvo-embraces-agile-at-scale/?sh=50690f454cf0
^https://www.itpro.co.uk/agile-development/31552/how-bmw-embraced-agile-to-hit-new-speeds
^https://zhuanlan.zhihu.com/p/257174601
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















