全面提升軟件工程能力與實踐,打造可信的高質量產品
——致全體員工的一封信
我今天寫信,是要和大家溝通公司如何全面提升軟件工程能力和實踐。二十年前的IPD變革,重構了我們的研發(fā)模式,實現了從依賴個人、偶然性推出成功產品,到制度化、持續(xù)地推出高質量產品的轉變。至今為止,我們的產品和解決方案已經在170多個國家安全穩(wěn)定運行,并因此積累和贏得了全球數萬客戶的信任。今天,我們又處在一個新的起點,全面云化、智能化、軟件定義一切等發(fā)展趨勢,對ICT基礎設施產品的可信提出了前所未有的要求??尚艑⒊蔀榭蛻粼纲I、敢買和政府接受、信任華為的基本條件。可信不僅僅是產品外在表現的高質量結果,更是產品內在實現的高質量過程,是結果和過程的雙重可驗證的高質量。而只有全面提升軟件工程能力和實踐,才有可能打造出可信的高質量產品。
公司已經明確,把網絡安全和隱私保護作為公司的最高綱領。我們要在每一個ICT基礎設施產品和解決方案中,都融入信任、構建高質量,關鍵內容包括:
安全性(Security)。產品有良好的抗攻擊能力,保護業(yè)務和數據的機密性、完整性和可用性。
韌性(Resilience)。系統(tǒng)受攻擊時保持有定義的運行狀態(tài),包括降級,以及遭遇攻擊時快速恢復的能力。
隱私性(Privacy)。遵從隱私保護既是法律法規(guī)的要求,也是價值觀的體現。用戶應該能夠適當地控制他們的數據的使用方式。信息的使用政策應該是對用戶透明的。用戶應該根據自己的需要來控制何時接收以及是否接收信息。用戶的隱私數據要有完善的保護能力和機制。
可靠性和可用性(Reliability& Availability)。產品能在生命周期內長期保障業(yè)務無故障運行,具備快速恢復和自我管理的能力,提供可預期的、一致的服務。
全面提升軟件工程能力和實踐,關乎公司未來的生存和發(fā)展,與我們每一個人都息息相關。在此,我希望全體員工、特別是軟件工程師們主動參與進來,從自己做起,踏踏實實,共同打造可信的高質量產品。
我們要轉變觀念,追求打造可信的高質量產品,不僅僅是功能、特性的高質量,也包括產品開發(fā)到交付過程的高質量。我們知道,功能、特性對產品至關重要,我們更知道,進度對滿足客戶需求也至關重要。今天,我們要把可信作為第一優(yōu)先級,放在功能、特性和進度之上。除非客戶信任我們的產品,否則這些優(yōu)秀的特性都沒有機會發(fā)揮價值。我們各級管理者和全體員工都不得以進度、功能、特性等為理由來降低可信的要求,確??尚诺囊笤趫?zhí)行過程中不變形。
我們要從最基礎的編碼質量做起,視高質量代碼為尊嚴和個人聲譽。代碼就像是高樓大廈的一磚一瓦,沒有高質量的代碼,可信的產品就是空中樓閣。我們要優(yōu)化并遵循公司各種編程規(guī)范,遵從架構與設計原則,熟練使用各種編程庫和API,編寫出簡潔、規(guī)范、可讀性強、健壯安全的代碼。
我們要深刻理解架構的核心要素,基于可信導向來進行架構與設計。在確??尚诺那疤嵯?,要在性能、功能、擴展性等方面做好權衡;慎重地定義我們的模塊與接口,真正做到高內聚與低耦合;我們要遵循權限和攻擊面最小化等安全設計原則,科學設計模塊之間的隔離與接口,提升安全性;低階架構與設計要遵循高階的架構與設計原則,在充分理解原有架構與設計的情況下,持續(xù)優(yōu)化;我們要熟悉各種設計模式,重用公共成熟組件和服務,避免重復勞動。
我們要重構腐化的架構及不符合軟件工程規(guī)范和質量要求的歷史代碼。我們知道,再好的架構,其生命力也是有限的。隨著時間的推移、環(huán)境的變化以及新技術、新功能特性的引入,架構也會腐化。面對腐化了的架構,要毫不猶豫地去重構它。同時主動以可信設計原則為導向,去重構不符合軟件工程規(guī)范和質量要求的歷史代碼,提升軟件架構的生命力。
我們要深入鉆研軟件技術,尤其是安全技術。軟件技術是我們打造產品的基本工具,技術是否先進,技術選擇是否合理,將決定我們軟件的高度;我們要深入學習架構與設計、編碼、測試、安全、可用性、性能、維護性、體驗等技術,并科學運用這些技術。
我們要遵守過程的一致性。遵守適用的法律法規(guī)、遵循業(yè)界共識的標準、規(guī)范,確保規(guī)范到實現的一致性、代碼到二進制的一致性。架構要符合架構原則,設計要遵循設計模式,代碼要符合編程規(guī)范,最終做到需求與實現一致,達成各項對客戶的承諾。我們只有腳踏實地做好每一步,才能真正打造出可信的高質量產品。
為此,我們要改變行為習慣,追求精品。我們要開放透明、積極和勇于揭示問題并主動推動改進。軟件開發(fā)是一種創(chuàng)造性和藝術性的工作,需要充分發(fā)揮我們的聰明才智和潛力。我們要改變只重視功能結果、不重視代碼質量的行為習慣,要嚴格遵守軟件工程規(guī)范;改變被動的修修補補;改變碎片化知識獲取,主動去學習提升并貢獻經驗、代碼,形成共享知識庫。我們需要改變的行為和習慣還有很多,對絕大多數人來講都將是一個痛苦的轉變過程,會脫一層皮,但我相信大家能夠迎接這種挑戰(zhàn)。
更為重要的是,我們將通過變革形成一套適應上述變化的流程、組織與考核機制。我們要完善并增強透明、可回溯和可審計的全流程管理機制,以可信的視角,從初始設計、完整構建到產品生命周期管理,全面提升軟件工程能力和實踐。我們將全面強化以Committer角色為核心的代碼審核和提交機制,代碼經過更加嚴格和系統(tǒng)的審核才能合入版本。為此我們將建立一支更高水平的Committer角色群體,負責軟件架構的看護、代碼的審核和提交,整體保障合入代碼的高質量。我們要變革考核機制,要讓架構設計好、代碼寫得好的人脫穎而出,對編程能力不滿足要求的人給予幫助和培訓。但任何人如果編寫的代碼長時間不能合入版本,將會被團隊拋棄。
過去一百年來,世界上許多成功的公司都因不能適應變化而倒下。要適應外部變化,唯有自我進化,我們必須保持開放和持續(xù)變革。董事會已決定,全面提升軟件工程能力與實踐將以變革的方式來開展,由輪值董事長徐直軍總負責,公司初始投入20億美元,計劃用5年時間,在ICT基礎設施領域實現為客戶打造可信的高質量產品的目標。希望您支持并積極投入到這一偉大的變革。唯有如此,我們才能實現未來的愿景和使命:把數字世界帶入每個人、每個家庭、每個組織,構建萬物互聯的智能世界。
2018年12月27日