當前位置:
首頁 > 科技 > 程序員該如何轉型 5G 開發?

程序員該如何轉型 5G 開發?

作者 | COCO

責編 | 胡雪蕊

出品 | CSDN (CSDNnews)

最近聽了幾位社招新進同事的述職,問了他們同樣一個問題:從原來的軟體開發崗位轉到現在的5G開發,你們覺得最大的難點在哪裡?幾位新同事紛紛表示:感覺自己要補課的內容實在是太多了,操作系統、網路協議,到處都是難點。

其實這幾位同事的經歷和遇到的問題都非常有代表性:由於做開發不懂業務,故大部分碼農都是一顆顆螺絲釘,鉚在自己的那一點點領域上使勁往下鑽,而對整體架構幾乎一無所知,導致自己的專業面非常窄,技術水平也比較浮於表面。

對這些已經擁有3-5年經驗的程序員而言,轉型到5G開發並沒有想像中那麼遙不可及,當然也並不輕鬆。

所幸他們已經入門了,因此,我們覺得普通碼農轉型5G開發是可行且有跡可循的。所以這次就來談一談5G開發所需的主要技能和推薦理由,此篇可以作為各位有志於轉型5G開發的碼農們參考,也歡迎各位大牛多多指正。

熟悉 Linux 操作系統

必須要熟悉Linux操作系統及具備Linux開發的經驗,當然常用的調試手段也要熟練掌握。

5G 承載的業務種類繁多,業務特徵各不相同,對網路要求不同。業務需求多樣性給5G 網路規劃和設計帶來了新的挑戰,包括網路功能、架構、資源、路由等多方面的定製化設計挑戰。

因此,5G網路採用NFV/SDN、雲原生技術實現網路虛擬化、雲化部署,而NFV技術則是5G開發必選No.1。

NFV追本溯源:以往通信網路設備均採用專用設備,網元功能與硬體平台緊耦合,即不同廠家、不同類型網元採用不同的硬體。在通信網路3G、4G、5G新技術頻繁變革下,由於網元與硬體平台緊耦合的關係,造成大量硬體資源浪費,也不利於新業務部快速署。

網路設備價格長期居高不下,電信運營商自然壓力山大;同時供應商一家獨大,運營商也不願意受制於人;再加上各類專用設備不斷增長的運維和管理成本,實現軟硬體解耦的網路功能虛擬化(NFV)技術這位英雄來拯救通信行業了。

NFV技術的實現原理是通過使用x86等通用性硬體以及虛擬化技術,來承載各類功能的軟體處理。而這些通用X86平台的操作系統當仁不讓就是Linux系統了。

Linux的特點是什麼?是多用戶、多任務、支持多線程和多CPU的操作系統。既然5G開發的系統環境少不了Linux,下面就是學習重點了:比如什麼是多態?線程和進程的區別?為什麼要使用多線程?這都是linux基礎知識、也是Linux內核開發必須掌握的要點。

舉個例子,出現段錯誤,有哪幾種調試手段?如何避免?凡是多往深處想一想,要知道程序設計做的不好真的會害人害己,光填坑就能累死一群碼農。

另外不能不提的還有epoll,它是Linux內核為處理大批量文件描述符而作了改進的poll,是Linux下多路復用IO介面select/poll的增強版本,能顯著提高程序在大量並發連接中只有少量活躍的情況下的系統CPU利用率。

雖然select、poll,epoll本質上都是同步I/O,但epoll只要從用戶態往內核態拷貝1次fd集合,在設備等待隊列上也只掛1次current;而select和poll每次調用都要從用戶態往內核態拷貝1次fd集合,在設備等待隊列中掛1次current;所以epoll相比select和poll節省了大量系統開銷。

還有,select,poll實現需要自己不斷輪詢所有fd集合,直到設備就緒,期間可能要睡眠和喚醒多次交替。

而epoll儘管也需要調用epoll_wait不斷輪詢就緒鏈表,期間也可能多次睡眠和喚醒交替,但是它是在設備就緒時調用回調函數,把就緒fd放入就緒鏈表中,並喚醒在epoll_wait中進入睡眠的進程。

雖然都要睡眠和交替,但是select和poll在「醒著」的時候要遍歷整個fd集合,而epoll在「醒著」的時候只要判斷一下就緒鏈表是否為空就好,從而節省了大量的CPU時間,這就是回調機制帶來的性能提升。

總之,作為開發人員,不僅要知其然還要知其所以然。

編程知識儲備

具備紮實的計算機基礎,較強的演算法能力,熟練掌握C\C 等開發語言,熟悉敏捷開發流程。

計算機基礎、演算法能力,這些都是碼農們的基本技能,《計算機原理》、《數據結構》等等都是大學理工科的經典課程,不記得了可以再回去翻一下,在此不做贅述。敏捷開發是當下比較流行的高效開發模式,以用戶的需求進化為核心,採用迭代、循序漸進的方法進行軟體開發,這方面的文章也很多就不展開來講了。我們特別針對編程語言來講一講,為什麼5G開發要首選C語言而不是其他編程語言。

眾所周知,ITU 為 5G 定義了 eMBB(增強移動寬頻)、mMTC(海量大連接)、URLLC(低時延高可靠)三大應用場景。eMBB典型應用包括超高清視頻、虛擬現實、增強現實等。

這類場景首先對帶寬要求極高,關鍵的性能指標包括100Mbps 用戶體驗速率(熱點場景可達1Gbps)、數十Gbps 峰值速率、每平方公里數十Tbps 的流量密度、每小時500km以上的移動性等,所以在5G開發當中對性能要求是放在第一位的。

然而,目前的硬體工藝及技術發展已經接近瓶頸,如何能夠更高效的利用系統資源在5G開發當中顯得尤為重要。

C語言是一門貼近硬體的系統級編程語言,C語言的指針可以直接操作內存,效率奇高,雖然出錯率和漏洞也為人詬病,但瑕不掩瑜,這一點正好符合5G開發對性能和效率的極致追求。

在這裡還是想強調一下了解底層原理對學習新技術的巨大作用。很多碼農都覺得C語言實在難上手就放棄了,不想挑戰難度、也不想付出時間與經精力去學習更多更底層的內容。

要知道幾乎所有的操作系統內核都是用C語言寫的,萬變不離其宗,不懂底層彙編,根本無法準確了解內存和系統資源,這就像蓋樓不了解地基情況一樣。

拿破崙說過:「不想當元帥的士兵不是好士兵。」因此,對於各位有志於架構師的碼農們,從現在就開始啃C語言吧。

熟悉移動通信協議

熟悉移動通信協議,具備LTE協議研發經驗,熟悉信令流程、協議。

移動通信協議是個大家族,從何學起,往往沒有頭緒。尤其剛來的程序員們,很容易就被一堆協議搞得頭大如斗。其實通信的基礎在於網路,所以關於5G相關的協議開發如何上手,我們可以給出以下思路供大家參考:

第一步,先弄清楚網橋、VLAN的原理,自己可以做下實驗,找幾台PC配置一下,再不濟用虛機跑一跑。了解單播、廣播、組播的概念,想清楚什麼情況下要配置網橋,劃分VLAN。

第二步,了解二層、三層的概念和區別,有條件的可以從交換機配置入手,想更進一步的可以去配置下路由器。明白靜態路由和動態路由的區別,幾個概念重點了解:IGP、BGP、OSPF、IS-IS、MPLS等等。

第三步,這一步才是真正入門,要做5G開發,前兩步理解的差不多了就可以去讀一讀3GPP的協議文檔了。記得要讀英文原版哈,至於英語的重要性後面也會展開講一講。

軟技能

有較強的英文閱讀理解能力,具備較強的抗壓能力和良好的溝通技巧,優秀的團隊合作精神以及較強的執行能力,善於學習和挖掘、使用新技術。

這一條也是老生常談了。網上常常爆出英語無用論,而事實上,各類高新技術尤其是創新技術還是國外居多,原版的技術資料全是英文的,英文不好就只能用軟體翻譯或者等人餵食,而通常軟體翻譯的結果讓人一言難盡,等人翻譯估計黃花菜都涼了。

還有底層協議開發,也是必須遵從英文規範,不懂不會就要走很多彎路。再比如碼農必備的Stack Overflow網站也是英文的,其技術答疑常常會有驚喜大禮包:不僅給出一個問題多種不同的解決方案,還包括對這些解決方案的比較,以及大牛們的思考過程,甚至還有不少強力工具的特別附贈。

建議各位就算沒有遇到問題,也可以常常去瀏覽一下其中投票較多的問題,充實自己的知識體系。

總而言之,英文是一扇面向世界的窗戶,有了它能夠看得更遠,自己不會或者懶的開窗,那就自己在小黑屋慢慢摸索吧。偷偷吐槽一句,碼農的英語不好,連變數名都只能用漢語拼音定義哦。

至於抗壓能力,碼農們都是經過千錘百鍊的了,做到前面幾條,加上溝通技巧、團隊合作以及較強的執行力,這就是今後成長轉型的關鍵。至於是寫一輩子代碼還是轉型管理抑或銷售及其他,這就仁者見仁智者見智了。

最後附上一首自創的《江城子》,送給屏幕前還在加班的碼農們,祝大家都能早日完美轉型,成功升職加薪~

十年IT終日忙,不開源,難自強。

千頁文檔,需求又無常。

縱使交付運維忙,痘爆頭,膚如糠。夜來加班忽感傷,格子間,冷暖嘗。

相對無言,惟代碼萬行。

願為自主研發闖,泡機房,又何妨。

作者簡介:

COCO,80後高級工程師,目前就職於廣州大型通信國企,白天辦公室打雜,晚上實驗室碼字。

【END】

熱 文推 薦

Python 爬取 B 站 5000 條視頻,揭秘為何千萬人為它流淚!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

"偽努力"正在毀掉80%的當代區塊鏈開發者
研發管理軟體太雜亂?他花了 4 年打造一站式工具!| 人物誌

TAG:CSDN |