91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

10+年華為程序員感悟:一個程序員的自我修養(yǎng)

lPCU_elecfans ? 來源:lp ? 2019-04-24 11:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一個程序員的自我修養(yǎng)

一天晚上,我和老婆聊天,說部門要我寫個“大咖談軟件”的文章,老婆斜了我一眼,淡淡地說:“Linus大神21歲就寫出了Linux內(nèi)核的雛形,締造了一個自由主義的開源世界;張小龍28歲寫出了foxmail,在2000年就賣出了1200萬的價格。大咖,認(rèn)識您這么久了,還不太了解您有什么杰出的成就?”我訕訕地咽了口水:“好吧,我重新組織下語言,我需要寫個談軟件的文章……”

回首過去這半年,軟件總工、軟件專家的任命,還有新年伊始任總《全面提升軟件工程能力,打造可信的高質(zhì)量產(chǎn)品》的發(fā)文,都讓我們這些寫了十多年代碼的軟件工程師激動不已。

我2006年進(jìn)入公司,幾乎參與了華為3G控制器產(chǎn)品的完整生命周期,見證了華為3G從起步、上升、靈魂深處的改進(jìn)、巔峰、回落的波瀾壯闊歷程,并在35歲“高齡”有幸加入到5G開發(fā)部的大家庭。

十幾年來,我一直堅持在編碼崗位,經(jīng)歷了普通開發(fā)人員、TL、MDE、MDEL、SDM(云化團(tuán)隊)、Committer、軟件專家等各種崗位。然而我卻深知,不算大牛的我,從事編碼這個“高?!甭殬I(yè)十幾年而沒有被拿去“祭天”,依靠的是一個程序員的自我修養(yǎng)——扎實(shí)的基礎(chǔ)軟件能力、如履薄冰的工作態(tài)度、對技術(shù)孜孜不倦的追求。

▲幽默的“祭天”說明

1.好代碼長什么模樣?

記得幾年前部門第一次評選優(yōu)秀代碼,我成為“金碼獎”獲得者之一。是因?yàn)榇a很炫嗎?并不是。我參與評選的代碼,遵循著簡單的原則:簡潔、邏輯清晰、函數(shù)職責(zé)單一、合理的數(shù)據(jù)結(jié)構(gòu)設(shè)計。并沒有使用高深的編碼技巧,也沒有應(yīng)用某某設(shè)計模式。正如公司最新的C/C++語言編程規(guī)范,也是將編寫簡潔的程序放在首位。簡潔、邏輯清晰的代碼,易于閱讀和維護(hù),這段代碼后面也因需求變化而被修改,但卻從來沒有引入過網(wǎng)上問題。

當(dāng)然,簡單不代表沒有思考,恰恰相反,更需要我們在寫代碼之前謀定而后動、三思而后行。有一次項(xiàng)目組安排我做性能優(yōu)化,通過反復(fù)分析熱點(diǎn)函數(shù)、反復(fù)測試比對不同話務(wù)模型下的性能差異,前前后后花了3個星期的時間,我找到了引起性能惡化的最關(guān)鍵因素。最終我決定采用修改備份機(jī)制、減小備份數(shù)據(jù)的優(yōu)化措施。這些方案代碼改動都很小、很簡單,但實(shí)際優(yōu)化效果卻很好,滿足了未來幾年業(yè)務(wù)發(fā)展的需求。

再來看另一個例子,某局點(diǎn)升級新版本后出現(xiàn)CPU負(fù)載上升的問題。經(jīng)過近兩周的攻關(guān),我最終定位是新版本在業(yè)務(wù)處理流程中新增了直接讀取DB內(nèi)核的操作。直接讀取DB內(nèi)核,代碼處理簡單,也能正常實(shí)現(xiàn)業(yè)務(wù)功能,但是性能卻非常差。如果開發(fā)過程中能多想一步,采用緩存的方案,性能會有天壤之別,也是更好的代碼。

人們常說唯一不變的就是變化,客戶需求一直在變化,我們的代碼也會被動或者主動地在變化。設(shè)計出可擴(kuò)展、自動適應(yīng)客戶需求變化的軟件架構(gòu),是軟件工程師永恒的追求。這說說容易,做起來卻很難。需要我們不停積累業(yè)務(wù)知識,擴(kuò)展知識面,勤于思考,識別技術(shù)未來演進(jìn)趨勢。我們無法從一開始就做一個無所不能的架構(gòu),來包含未來的千變?nèi)f化,即使能,交付節(jié)奏也不一定允許。滿足當(dāng)前及未來一定時間內(nèi)業(yè)務(wù)需要的設(shè)計,或許就是最合適的。

2.練好扎實(shí)的基本功

能寫出好代碼,更要能持續(xù)地寫出好代碼,需要我們深刻理解技術(shù)原理和業(yè)務(wù)邏輯。前提是具備扎實(shí)的編程基礎(chǔ),即基礎(chǔ)軟件能力,如基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和算法、編譯原理等。

去年底,我跟部門幾個軟件高手一起,去外部參加了一次互聯(lián)網(wǎng)架構(gòu)大會。AI、區(qū)塊鏈物聯(lián)網(wǎng)、云、中間件等時尚、熱點(diǎn)、風(fēng)口相關(guān)的議題非常多。但是我沒想到,最火爆的卻是一些基礎(chǔ)軟件設(shè)計、架構(gòu)設(shè)計和演進(jìn)之類的專題。就像武俠小說寫的一樣,練好基本功、練好內(nèi)功,后續(xù)無論什么精妙招式,都會信手拈來。

另外,一些編程習(xí)慣,如果堅持下去,對于編程修養(yǎng)提升也是非常有用的。比如快捷鍵的使用、有效的代碼注釋、命名規(guī)則、代碼風(fēng)格等。每次寫代碼除了追求好代碼之外,我都會時刻去思考軟件上的優(yōu)化,能否能使用更少的內(nèi)存,能否有更好的性能。重視數(shù)據(jù)結(jié)構(gòu)中的每一個字段,重視每一處小的代碼優(yōu)化,都有可能給我們帶來意想不到的收獲。比如去年做性能優(yōu)化,我們僅僅是將流程中的一處動態(tài)內(nèi)存申請修改為靜態(tài)內(nèi)存池,卻意外獲得了30 CAPS(每秒呼叫次數(shù))的性能提升。

3.一行代碼引發(fā)的慘案

有人問,道理我都懂,為什么卻依然寫不出好代碼?

很多開發(fā)人員,因?yàn)閭€人習(xí)慣、趕工期、外部要求不高等多種原因,在編程時特別隨意,直接Copy-Paste。我覺得程序員應(yīng)當(dāng)像追求生活品質(zhì)一樣,養(yǎng)成不將就的編程習(xí)慣、嚴(yán)謹(jǐn)?shù)木幊虘B(tài)度。

對于代碼上庫,我一直都是戰(zhàn)戰(zhàn)兢兢,如履薄冰。上庫前我會反復(fù)看自己修改的代碼,看修改代碼的上下文,并進(jìn)行修改前后代碼比對。代碼上庫后再看幾遍,確保都已按預(yù)期合入。進(jìn)入公司這么多年,自己從來沒有多合、漏合、錯合過任何一行代碼。

大家可能會覺得我這是小題大做,但事實(shí)上,這都是歷史上曾經(jīng)發(fā)生過的慘痛教訓(xùn)。我們在某國升級新版本后發(fā)現(xiàn)用戶接入成功率惡化,最后定位是由于一行代碼被誤刪除導(dǎo)致的。事后回溯,開發(fā)人員自己都不記得這一行代碼為什么會被刪除。還有一次,一行代碼被誤刪除,導(dǎo)致一個關(guān)鍵KPI指標(biāo):軟切換統(tǒng)計次數(shù)有變更。部門把這兩起事件總結(jié)為“一行代碼引發(fā)的慘案”,無論是對產(chǎn)品品牌、客戶印象、還是對于個人,都造成了惡劣的影響。

事后大家都在思考,我們有結(jié)對編程、代碼檢視、開發(fā)者自測試等非常完善的開發(fā)流程,還有MDE(模塊設(shè)計師)檢視作為代碼上庫前的“守門員”,為什么還會發(fā)生這么低級的錯誤?是流程沒執(zhí)行到位,還是MDE疏忽、沒把好關(guān)?

在IPD 2.0變革中,公司借鑒開源組織的Committer運(yùn)作,來加強(qiáng)我們的Committer機(jī)制和文化。5G開發(fā)部也選拔、任命了一批Committer,我有幸成為其中之一。剛開始履行Committer職責(zé)時,我有點(diǎn)疑惑:這不就是給MDE角色披上了新的外衣,把MDE原先“私下”做的事情,通過Committer統(tǒng)計數(shù)據(jù)給呈現(xiàn)出來嘛?

不過,經(jīng)過幾個月的摸索、實(shí)踐后,我漸漸地明白,Committer機(jī)制應(yīng)該是一種文化上的變革,牽引大家提升自己的軟件能力。Committer的職責(zé)很多,作為代碼提交前的最后一道關(guān)卡,這是在當(dāng)前人員能力不足階段有效果,但是最終應(yīng)該被弱化的一項(xiàng)實(shí)踐。參與編碼前的軟件設(shè)計、持續(xù)做好架構(gòu)看護(hù)和技術(shù)債務(wù)清理,讓大家都有更大的機(jī)會寫出更好的代碼,我認(rèn)為這是Committer更大的價值。

隨著個人和組織的軟件工程能力提升,自動化測試防護(hù)網(wǎng)和變更防護(hù)墻建設(shè)完善之后,前面提到的“一行代碼引起的慘案”,是可以避免的。

4.“變更防護(hù)墻”夠不夠可靠?

對于大部分老員工,特別是無線2G/3G/4G等部門的老員工來說,一提到變更控制,都會如臨大敵。版本升級后,KPI變差是絕對不允許的,嚴(yán)重時可能面臨版本回退、客戶投訴和上報事故。而KPI變好,除了要向客戶解釋,還有可能面臨商務(wù)風(fēng)險,客戶會覺得之前吃虧了。現(xiàn)實(shí)世界對我們就是這么苛刻,誰讓我們是影響世界的通信軟件工程師呢,他們這是愛之深、責(zé)之切?。?/p>

我們開發(fā)一個版本,動輒涉及幾十萬代碼的新增、修改或重構(gòu)。要想不引入變更問題,除了做好設(shè)計、結(jié)對編碼、代碼檢視和測試之外,我認(rèn)為最關(guān)鍵的就是完善的自動化防護(hù)網(wǎng)。在3G時,我?guī)е鴥蓚€同事將IT測試工程從只有幾百個用例擴(kuò)充到上萬個用例。全方位的場景覆蓋、嚴(yán)密的信元有效性檢查、完善的用例失敗判決機(jī)制、無死角的資源泄漏檢查等手段,讓變更錯誤無所遁形,給3G留下了一道變更防護(hù)墻。

開發(fā)過程中補(bǔ)充IT和PC-ST測試用例,不是為了提升代碼覆蓋率,而是為了自動化防護(hù)。而要能達(dá)成自動化防護(hù)的前提,是每個用例都具備完善的有效性檢查,否則防護(hù)網(wǎng)就是形同虛設(shè)。幾年前,我跟一個同事開玩笑:“我會故意將某行代碼改錯,看看你補(bǔ)充的用例是否能檢查出來。”讓我意外的是,在交付緊張的情況下,他仍然多花了半天時間完善用例有效性檢查,并請我故意改錯代碼來做試驗(yàn)。當(dāng)然,最終的結(jié)果是,他準(zhǔn)備得很充分,我沒能發(fā)現(xiàn)問題。多么有自我追求的一個程序員!

5.保持對于新興技術(shù)的好奇心

說起程序員的追求,我還想起了2016年參與的一個產(chǎn)品云化項(xiàng)目,我負(fù)責(zé)彈性伸縮特性的方案設(shè)計。在此之前,我一直在投入嵌入式軟件開發(fā),雖然期間產(chǎn)品也換了好幾代的硬件,經(jīng)歷了產(chǎn)品與平臺解耦、制式間解耦、軟件與硬件解耦等過程,但是對于服務(wù)化、微服務(wù)化、云化等概念,我卻基本處于懵懂的狀態(tài)。

不懂怎么辦,只能是“站在巨人肩膀上,為我所用”。兄弟產(chǎn)品線不是已經(jīng)做了嗎,那就找他們做同行協(xié)助;友商不是有路標(biāo)和規(guī)劃了嗎,那就在他們的有限材料中尋找可借鑒的地方;互聯(lián)網(wǎng)的亞馬遜云、阿里云不是有非常成熟的方案了嗎,那就下載他們的產(chǎn)品手冊和用戶指南……那段時間感覺自己就像是入了魔一樣,瘋狂地學(xué)習(xí)分布式軟件相關(guān)技術(shù),瘋狂地吸收各方面的能量為我所用,最終給出了一個令自己和項(xiàng)目滿意的設(shè)計方案。

這也讓我充分意識到自己之前把眼光局限于所在產(chǎn)品、系統(tǒng)、子系統(tǒng)的不足。作為一個程序員,除了要提升自己的基礎(chǔ)軟件能力,我們也要始終保持對于新興技術(shù)的好奇心,孜孜不倦的追求,不斷拓寬自己的視野。而這方面的能力和訴求,在5G時代更是如此。

當(dāng)前我們?nèi)A為5G面臨的網(wǎng)絡(luò)安全問題,雖然有著很大的政治因素,但也從側(cè)面反映了5G的戰(zhàn)略意義。超高速率、超大連接數(shù)、超高可靠低時延,對我們在軟件處理時延、可靠性、安全、韌性等方面的能力都提出了更高的要求。同時,5G承載的垂直行業(yè)應(yīng)用、接口開放和硬件“白盒化”等趨勢,也必將對我們當(dāng)前的知識和技術(shù)體系,提出更大的挑戰(zhàn)。

公司計劃用五年的時間,全面提升軟件工程能力,對我們是考驗(yàn),也是機(jī)會。統(tǒng)一編程規(guī)范、整潔代碼、整潔優(yōu)雅的架構(gòu),不同的人有不同的追求,需要我們有持之以恒、水滴石穿的決心。五年或者十年后,當(dāng)我們回首時,會發(fā)現(xiàn)自己曾經(jīng)的付出是值得的。正如,清代著名學(xué)者王國維提出的讀書三境界之第三境:“眾里尋她千百度,驀然回首,那人卻在燈火闌珊處?!?/p>

也許我們絕大多數(shù)人終其一生也無法成為Linus、張小龍這樣的大神。然而,我們能夠做一個有修養(yǎng)的程序員,并參與到改變世界的華為5G產(chǎn)品開發(fā)中來,在人類的通信史中留下自己的優(yōu)秀代碼,幸哉。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 華為
    +關(guān)注

    關(guān)注

    218

    文章

    36110

    瀏覽量

    262384
  • 程序員
    +關(guān)注

    關(guān)注

    4

    文章

    956

    瀏覽量

    30971
  • 5G
    5G
    +關(guān)注

    關(guān)注

    1368

    文章

    49191

    瀏覽量

    627148

原文標(biāo)題:10+年華為程序員感悟:從事編碼這個“高?!甭殬I(yè)十幾年為什么沒有被拿去“祭天”?

文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    【硬核拆解】從“芯”開始,臺工業(yè)級迅為RK3576開發(fā)板的自我修養(yǎng)

    【硬核拆解】從“芯”開始,臺工業(yè)級迅為RK3576開發(fā)板的自我修養(yǎng)
    的頭像 發(fā)表于 03-02 15:43 ?388次閱讀
    【硬核拆解】從“芯”開始,<b class='flag-5'>一</b>臺工業(yè)級迅為RK3576開發(fā)板的<b class='flag-5'>自我</b><b class='flag-5'>修養(yǎng)</b>

    Claude Code在國內(nèi)怎么使用?AI編程人員必看的完整指南!

    這兩年,AI編程工具層出不窮,但最近 Claude AI 在程序開發(fā)者圈子里備受歡迎,越來越多程序員發(fā)現(xiàn)使用Claude的體驗(yàn)非常接近“懂工程的搭檔”,而不是簡單的代碼生成器。 但
    的頭像 發(fā)表于 01-23 14:09 ?4581次閱讀
    Claude Code在國內(nèi)怎么使用?AI編程人員必看的完整指南!

    堆棧的原理揭秘

    的用匯編指令去創(chuàng)建,刪除變量好麻煩!程序員也是人啊,于是為了擺脫繁瑣的重復(fù)勞動,棧被發(fā)明了出來。棧并不是純粹抽象的軟件概念,而是由包括esp,ebp這些實(shí)際存在的堆棧寄存器來支撐的。 下面講解這兩
    發(fā)表于 01-23 07:08

    芯盾時代SDP助力企業(yè)應(yīng)對核心機(jī)密泄露危機(jī)

    無論你是程序員、文案、財務(wù),無論你想擼代碼、出海報、做報表,各式各樣的AI總能滿足你的需求,讓你的工作更加輕松。
    的頭像 發(fā)表于 12-26 11:49 ?730次閱讀

    大理的AI野心藏不住了——風(fēng)花雪月中千名程序員探討人工智能

    2025 年12月4日至6日第二屆CCF程序員大會暨大理人工智能與應(yīng)用國際開發(fā)者大會在大理圓滿落幕。
    的頭像 發(fā)表于 12-24 17:45 ?763次閱讀
    大理的AI野心藏不住了——風(fēng)花雪月中千名<b class='flag-5'>程序員</b>探討人工智能

    程序員最常見謊言

    了。 28我已經(jīng)測試過了,這個功能沒問題,可以上線了。 29別擔(dān)心,這個問題很快就能解決。 30代碼快寫完了,已經(jīng)完成 90% 了 。 希望大家對程序員些容忍以及諒解! 各位程序員你們都被我說中了哪些?說說你們的觀點(diǎn)
    發(fā)表于 12-10 08:24

    Unix的相關(guān)知識

    給出足量錯誤信息。 經(jīng)濟(jì)原則:寧花機(jī)器分,不花程序員秒。 生成原則:避免手撕,盡量編寫程序去生成程序。 優(yōu)化原則:雕琢前先要有原型,跑之
    發(fā)表于 12-10 07:13

    堆和棧的區(qū)別

    由C/C 編譯的程序占用的內(nèi)存分為以下幾個部分: 棧區(qū)(stack):由編譯器自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。 堆區(qū)(heap):
    的頭像 發(fā)表于 11-27 18:13 ?1159次閱讀

    軟通國際亮相2025沙中開源與AI科技峰會

    2025年11月11日,由沙特程序員協(xié)會(parmg)主辦的"2025沙中開源與AI科技峰會"在利雅得盛大啟幕。
    的頭像 發(fā)表于 11-14 17:45 ?1527次閱讀

    奔赴熱AI,碼力全開!Talkweb House@1024程序員日系列活動圓滿收官

    1024程序員日”系列活動至此劃上了圓滿句號。本屆1024程序員節(jié)以“AI構(gòu)建世界,智能引領(lǐng)未來”為主題,廣邀技術(shù)大咖、產(chǎn)業(yè)領(lǐng)袖、企業(yè)代表與全球開發(fā)者齊聚星城
    的頭像 發(fā)表于 10-27 18:59 ?832次閱讀
    奔赴熱AI,碼力全開!Talkweb House@1024<b class='flag-5'>程序員</b>日系列活動圓滿收官

    開鴻智谷“以賽促學(xué)、以賽選才”|1024程序員節(jié)暨開源鴻蒙構(gòu)建大會圓滿落幕!

    10月24日,由開鴻智谷聯(lián)合主辦的長沙1024程序員節(jié)暨開源鴻蒙構(gòu)建大會在長沙圓滿落幕。本次活動以“湘聚長沙,共赴熱AI”為主題,通過技術(shù)分享與實(shí)戰(zhàn)競賽相結(jié)合的方式,著力培養(yǎng)“開源鴻蒙+AI”領(lǐng)域
    的頭像 發(fā)表于 10-27 17:58 ?753次閱讀
    開鴻智谷“以賽促學(xué)、以賽選才”|1024<b class='flag-5'>程序員</b>節(jié)暨開源鴻蒙構(gòu)建大會圓滿落幕!

    無法在調(diào)試中連接到PSOC4怎么解決?

    您好,我有塊使用 PSOC4 CY8C4013SXI-410 制作的小板。非常簡單的設(shè)備,它只有三 GPIO 引腳并通過 5 引腳 SWD 進(jìn)行編程。我遇到的問題是程序員能夠看到該設(shè)備但無法對其進(jìn)行編程。
    發(fā)表于 07-22 06:02

    程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開發(fā)中遇到的難點(diǎn)。 2. 從方法論的高度對C語言在數(shù)據(jù)結(jié)構(gòu)和算法方面的應(yīng)用進(jìn)行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開發(fā)
    發(fā)表于 05-13 16:45

    CY7C68013A無PID和VID,如何制作PDF?

    我用 CY7C68013A MCU 設(shè)計了 PCB,所以這意味著我不是程序員之類的。 但是我嘗試上傳些代碼,但沒有 PID 和 VID。 我找到了
    發(fā)表于 05-13 07:50

    計算機(jī)網(wǎng)絡(luò)排錯思路總結(jié)

    明人不說暗話,這篇文章我們來聊非常有用,同時也是程序員必備的技能,那就是網(wǎng)絡(luò)排錯思路大總結(jié)。
    的頭像 發(fā)表于 04-01 17:32 ?948次閱讀
    計算機(jī)網(wǎng)絡(luò)排錯思路總結(jié)