《1-張曉龍-代碼打靶鐵三角的體系化建設.pdf》由會員分享,可在線閱讀,更多相關《1-張曉龍-代碼打靶鐵三角的體系化建設.pdf(42頁珍藏版)》請在三個皮匠報告上搜索。
1、代碼打靶鐵三角的體系化實踐2023 深圳站張曉龍中興通訊云平臺資深架構師,2020年到2022年公司十佳教練,Go 語言知名打樁框架 gomonkey 作者,具有十多年軟件架構和開發經驗。近年來專注于 PaaS 和 5G 等大型平臺軟件的設計與開發,尤其對于TDD、DDD 和微服務具有深刻的理解,對于大型軟件的重構具有豐富的實戰經驗。曾作為演講嘉賓或出品人多次參加ArchSummit、CppSummit、SDCon、TiD 和 DDDChina 等技術大會,廣受好評。資深架構師 公司十佳教練 gomonkey作者2023 深圳站目錄CONTENTS背景01 代碼打靶的體系化建設02 運營與成效
2、03 2023 深圳站01背景2023 深圳站某項目開發痛點地圖維度方案設計故事拆分UT設計(TodoList)UT開發業務代碼開發UT執行Gerrit同行評審架構度量(含治理)性能度量流程PP2:架構設計方法不明顯質量PP2:方案設計內容缺失/異常場景缺失PP3:用戶故事與開發任務混淆PP4:TodoList 只是功能列表,不可指導UT開發 PP5:開發自測有效性差,功效分配比率低PP8:架構耦合(重復度高/復雜度高)PP7:評審意見有效性差,偏業務,設計類、CC類很少,異常駁單普遍PP8:可維護性和擴展性分數偏低 效率PP6:開發速度慢 UT ROI低PP6:執行速度慢,最長1分鐘 PP是
3、PainPoint的縮寫 PP7是針對Gerrit同行評審在質量維度的痛點2023 深圳站探索最佳實踐代碼評審效果不佳急需提升代碼評審能力孵化代碼打靶實踐 由編碼原因導致的故障泄漏占比高,但代碼評審發現的相關問題少 各研究院都在積極探索如何提升代碼評審能力的最佳實踐,幫助降低因為編碼問題導致的故障泄露 代碼打靶實踐脫穎而出,很好的彌補了編碼培訓以外的實戰環節,以練補學,學練結合,是一項很好的編碼規范學習和常見缺陷練習活動2023 深圳站代碼打靶穿刺維度ilearningiCentergerrit易用性對照缺陷分類模板,手工填寫對照缺陷分類模板,手工填寫對照缺陷分類模板,手工填寫安全性 申請考試
4、管理權限,設置考試以及批閱人等流程,較繁瑣為保證保密性,逐一設置打靶人員可見權限,較繁瑣設置評審人員效率手工閱卷,周期長,人力投入大,效率低下手工閱卷,周期長,人力投入大,效率低下 手工閱卷,周期長,人力投入大,效率低下規模受限于人工閱卷,開展大規模代碼打靶活動比較困難受限于人工閱卷,開展大規模代碼打靶活動比較困難受限于人工閱卷,開展大規模代碼打靶活動比較困難A研究院穿刺B研究院穿刺2023 深圳站契機-起點1、專職團隊忙于交付,無人力承接;2、公司大,技術氛圍好;3、共創共建已形成一種文化。1、領導重視;2、教練組支持;3、個人影響力較大。天時人和地利1、雖然代碼打靶實踐很好,但成本太高,項
5、目投不起,需要找到一條路徑,大大降低規?;茝V的成本;2、研發能力的數字化,需要結合項目實戰,用一個工具來統一呈現。2023 深圳站02代碼打靶的體系化建設2023 深圳站代碼打靶鐵三角平臺規范內容代碼打靶規范實例化:缺陷分類體系內容實例化,靶子&靶場建設平臺實例化,代碼打靶服務實例規范不依賴于其他兩者內容依賴于規范,規范越好內容的質量越高平臺依賴于內容,內容越好平臺的用戶越多價值規范是基礎,讓代碼打靶標準化內容是根本,讓代碼打靶高質量平臺是支撐,讓代碼打靶自動化關系2023 深圳站規范:缺陷分類體系(類似知識體系)缺陷分類:包括缺陷大類、缺陷小類和缺陷細項,將缺陷記錄標準化多語言:Go、C&
6、C+、Python、Java、Scala和前端規范組成:通用+語言特色主要內容更加抽象更加體系化從靜態的文檔變成動態的可活用的編碼參照物與編碼規范的區別2023 深圳站規范:缺陷分類演進規范 v1規范 v2以業界標準為主以經驗為主實體值對象缺陷小類 缺陷細項 2023 深圳站規范:多規范多版本公共規范:通用語言標準的缺陷分類私有規范:用戶定制的缺陷分類多規范通用規范缺陷細項的定制業務規范的建設DSL規范的建設文檔類規范的建設規范有嚴格的版本管理每個規范對應一個工作空間在工作空間中可以同時生效規范的多個版本每個靶子可以靈活選擇某規范的一個版本多版本2023 深圳站規范:自治還是復用根據應用過程中
7、的意見反饋,例行組織專家CCB決策采納與否規范大版本不保證前后項兼容,但小版本必須保證靶場規范演進機制沒有專人守護難以達成共識容易變得混亂(缺陷細項粒度不統一,且不正交)通用規范的囧境通用規范內聯到各語言規范缺陷編碼全局唯一解決方案:規范V2 規范V32023 深圳站內容:靶子和靶場(類比試題和試卷)一段待走查的代碼,一般200行左右,分為綜合靶和專項靶,僅對應一種語言所有缺陷的匯總稱作靶標(答案)靶子開發人員打靶的場所,有比賽和練習兩種類型自動閱卷,并展示打靶結果靶場一個靶子只能選一個規范,并根據規范制定一個靶標一個靶場可以選多個靶子,一個靶子可以被多個靶場選取關系2023 深圳站內容:靶子
8、建設和靶場建設2023 深圳站內容:打靶時多態活動角色行為約束流程打靶練習 打靶比賽開發人員打靶有靶標添加缺陷記錄,提交答卷,查看打靶結果,針對弱項進行提升靶子建設靶標專家打靶無靶標添加缺陷記錄,提交答卷,靶標建設組評審確認,結果作為靶標發布日常代碼評審開發人員打靶無靶標添加缺陷記錄,提交答卷,代碼提交人員確認,結果作為評審缺陷2023 深圳站內容:日常評審內嵌研發流程X團隊綜合貢獻值個人TOP3團隊成員高價值意見數中價值意見數綜合貢獻值XXX93439136.9XXX259134.1XXX267333.3部門綜合貢獻值個人TOP5團隊成員高價值意見數中價值意見數綜合貢獻值XXX9343913
9、6.9XXX6517382.3XXX2715342.3XXX1526241.2XXX259134.12023 深圳站平臺:代碼打靶服務(類比實戰類考試測評服務)直接收益:一年節省1350萬(按10000人算,每月打靶一次,每次打靶節約15分鐘,閱卷節約30分鐘,每小時成本150元,10000*12*0.75*150=13500000)間接收益:(1)經驗教訓的沉淀;(2)編碼知識的普及;(3)編碼水平的提高泛化收益:未來對公司外提供服務價值效率高:秒級閱卷,容易規?;瘶藴驶撸焊髡Z言缺陷分類在無線院甚至公司容易達成共識數字化高:各維度數據快速反饋,驅動改進易用性好:缺陷分類根據關鍵字自動匹配安
10、全性好:靶標最小可見范圍,成績自查優勢2023 深圳站平臺:架構設計架構風格:單體容災備份:內容通過腳本代碼自動備份,數據通過數據庫自動備份編程語言:前端Angular,后端Go數據采集:IoC+AOP安裝部署:裸機+容器2023 深圳站平臺:DDD建模一對一:最簡單的關系一對多:一個子域可以拆分為多個限界上下文多對一:多個子域可以被一個限界上下文包含子域和限界上下文之間的關系2023 深圳站平臺:共創共建總牽頭:無線虛擬化共創部門:16個共創中心:11個共創研究院:4個共創地區:6個2023 深圳站代碼打靶的開展過程2023 深圳站代碼打靶演示以錄屏播放的方式進行演示(87秒),現場同步講解
11、2023 深圳站03運營與成效2023 深圳站代碼打靶的落地思路2023 深圳站各中心繽紛的打靶活動2023 深圳站代碼打靶的價值 代碼打靶是一項非常有效的實踐,希望能擴大應用范圍 靶場建設,內容為王,只有足夠多的優秀靶子(試題),才能吸引更多用戶,并有效提升開發人員的代碼評審能力 體現能力提升的全面性和變化趨勢維度指標含義意圖應用廣度頻度打靶次數擴大靶場的使用頻次人均頻度人均打靶次數擴大靶場的使用頻次人數打靶人數擴大靶場使用的范圍覆蓋率打靶人員在開發人員中的占比擴大靶場使用的范圍靶場內容外場故障轉靶數外場故障轉成靶子的個數外場故障轉靶,讓大家反復打靶以充分了解外場故障,防止重復犯錯外場故障轉
12、靶率外場故障轉成靶子的比率牽引外場故障轉靶靶標規范覆蓋率單編程語言所有靶子的靶標對該編程語言的靶場規范的覆蓋程度牽引對靶場規范的覆蓋跨單位靶子引用數本單位靶子被外單位靶場引用的次數牽引大家多輸出受歡迎的高質量靶子公共靶個數符合公共靶要求的靶子個數 (各中心推薦質量較高的通用性較強的靶子,院編碼委員會評定)牽引大家多輸出受歡迎的高質量靶子能力提升靶場規范缺陷大類命中率打靶人員對缺陷大類的掌握程度體現人員能力和能力變化趨勢2023 深圳站代碼打靶的成果:應用廣度價值驅動,打靶次數和打靶人數越來越多先富帶動后富,參與打靶的研究院數量越來越多2023 深圳站代碼打靶的成果:靶場內容靶子數量持續增長,可
13、維護、可靠性和設計維度的靶子占TOP3通過靶子被外單位引用數來鼓勵靶子共享院編碼委員會可以對靶子打院級標簽,比如通用靶和嚴選靶,控制靶子質量2023 深圳站代碼打靶的成果:能力提升打靶平均命中率穩步提升個人看板呈現開發人員各維度數據,便于回顧改進根據缺陷大類的命中率,可以快速鎖定弱項,同時能下鉆到缺陷小類和缺陷細項系統根據個人弱項,精準的推薦相關知識或學習路徑,加速能力提升2023 深圳站代碼打靶的收益通過弱項收集,提高了能力提升的精準性(相比考試競賽)通過打靶活動,提高了能力提升的有效性(相比培訓宣貫)通過度量復盤(如命中率),提高了能力提升的可視化(相比傳統復盤)能力提升維度2022下半年
14、故障泄露總數相比上半年數量呈下降趨勢2022下半年編碼故障占比相比上半年占比呈下降趨勢針對2022上半年TOP N問題專項打靶,下半年沒有再出現類似問題產品交付維度2023 深圳站未來規劃AI輔助打靶,讓開發人員打靶更高效AI打靶,與開發人員PK打靶技能AI建靶,根據靶子需求生成問題代碼及靶標AI評審,部署在門禁流水線遠期規劃:應用AI業務打靶和文檔打靶日臻完善,成為代碼打靶的重要組成部分與第三方系統對接,更好的連接人與人、人與系統和系統與系統智能學習不斷增強,提升評價和推薦的準確性打靶小程序正式發布,讓開發人員可以隨時隨地打靶近期規劃:打造生態2023 深圳站小結在 AIGC 時代,AI 輔
15、助開發人員編寫代碼,可以大大提升編程的效率,但 AI 也會犯錯,這時需要較高段位的代碼評審能力才能高效識別出深水區的問題,所以代碼評審能力越來越重要了。代碼打靶是提升代碼評審能力的最佳實踐,可以成為公司編碼文化建設的引擎,非常值得開發人員擁有!感謝聆聽CSDN全球最大的中文開發者社區平臺CSDN全球最大的中文開發者社區平臺CSDN創立于1999年全球編程類網站排名第7(來源:Similarweb 2023.04)注冊用戶超過4300萬,覆蓋90%的中文開發者新媒體矩陣粉絲數量超過3100萬超過1000家企業客戶和合作伙伴目前公司員工近800名,分布在北京、長沙、上海、深圳、杭州、成都等城市,并在美國硅谷常設辦事處旗下品牌旗下品牌專業中文IT技術社區:CSDN.NET多媒體專業出版:新程序員開發者專屬移動APP:CSDN APP代碼托管協作平臺:GitCode代碼工具協同平臺:InsCodeIT人力資源服務:科銳??怂关俗W絡高校IT技術學習成長平臺:高校俱樂部