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