程序员该如何转型 5G 开发?

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/csdnnews/article/details/99256957

640?wx_fmt=gif640?wx_fmt=jpeg

作者 | COCO

责编 | 胡雪蕊

出品 | CSDN (CSDNnews)

最近听了几位社招新进同事的述职,问了他们同样一个问题:从原来的软件开发岗位转到现在的5G开发,你们觉得最大的难点在哪里?几位新同事纷纷表示:感觉自己要补课的内容实在是太多了,操作系统、网络协议,到处都是难点。其实这几位同事的经历和遇到的问题都非常有代表性:由于做开发不懂业务,故大部分码农都是一颗颗螺丝钉,铆在自己的那一点点领域上使劲往下钻,而对整体架构几乎一无所知,导致自己的专业面非常窄,技术水平也比较浮于表面。对这些已经拥有3-5年经验的程序员而言,转型到5G开发并没有想象中那么遥不可及,当然也并不轻松。所幸他们已经入门了,因此,我们觉得普通码农转型5G开发是可行且有迹可循的。所以这次就来谈一谈5G开发所需的主要技能和推荐理由,此篇可以作为各位有志于转型5G开发的码农们参考,也欢迎各位大牛多多指正。

 

640?wx_fmt=png

熟悉 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时间,这就是回调机制带来的性能提升。总之,作为开发人员,不仅要知其然还要知其所以然。

640?wx_fmt=png

编程知识储备

 

具备扎实的计算机基础,较强的算法能力,熟练掌握C\C++等开发语言,熟悉敏捷开发流程。

计算机基础、算法能力,这些都是码农们的基本技能,《计算机原理》、《数据结构》等等都是大学理工科的经典课程,不记得了可以再回去翻一下,在此不做赘述。敏捷开发是当下比较流行的高效开发模式,以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发,这方面的文章也很多就不展开来讲了。我们特别针对编程语言来讲一讲,为什么5G开发要首选C语言而不是其他编程语言。众所周知,ITU 为 5G 定义了 eMBB(增强移动宽带)、mMTC(海量大连接)、URLLC(低时延高可靠)三大应用场景。eMBB典型应用包括超高清视频、虚拟现实、增强现实等。这类场景首先对带宽要求极高,关键的性能指标包括100Mbps 用户体验速率(热点场景可达1Gbps)、数十Gbps 峰值速率、每平方公里数十Tbps 的流量密度、每小时500km以上的移动性等,所以在5G开发当中对性能要求是放在第一位的。然而,目前的硬件工艺及技术发展已经接近瓶颈,如何能够更高效的利用系统资源在5G开发当中显得尤为重要。C语言是一门贴近硬件的系统级编程语言,C语言的指针可以直接操作内存,效率奇高,虽然出错率和漏洞也为人诟病,但瑕不掩瑜,这一点正好符合5G开发对性能和效率的极致追求。在这里还是想强调一下了解底层原理对学习新技术的巨大作用。很多码农都觉得C语言实在难上手就放弃了,不想挑战难度、也不想付出时间与经精力去学习更多更底层的内容。要知道几乎所有的操作系统内核都是用C语言写的,万变不离其宗,不懂底层汇编,根本无法准确了解内存和系统资源,这就像盖楼不了解地基情况一样。拿破仑说过:“不想当元帅的士兵不是好士兵。”因此,对于各位有志于架构师的码农们,从现在就开始啃C语言吧。

640?wx_fmt=png

熟悉移动通信协议

 

熟悉移动通信协议,具备LTE协议研发经验,熟悉信令流程、协议。

移动通信协议是个大家族,从何学起,往往没有头绪。尤其刚来的程序员们,很容易就被一堆协议搞得头大如斗。其实通信的基础在于网络,所以关于5G相关的协议开发如何上手,我们可以给出以下思路供大家参考:第一步,先弄清楚网桥、VLAN的原理,自己可以做下实验,找几台PC配置一下,再不济用虚机跑一跑。了解单播、广播、组播的概念,想清楚什么情况下要配置网桥,划分VLAN。第二步,了解二层、三层的概念和区别,有条件的可以从交换机配置入手,想更进一步的可以去配置下路由器。明白静态路由和动态路由的区别,几个概念重点了解:IGP、BGP、OSPF、IS-IS、MPLS等等。第三步,这一步才是真正入门,要做5G开发,前两步理解的差不多了就可以去读一读3GPP的协议文档了。记得要读英文原版哈,至于英语的重要性后面也会展开讲一讲。

 

640?wx_fmt=png软技能

有较强的英文阅读理解能力,具备较强的抗压能力和良好的沟通技巧,优秀的团队合作精神以及较强的执行能力,善于学习和挖掘、使用新技术。

这一条也是老生常谈了。网上常常爆出英语无用论,而事实上,各类高新技术尤其是创新技术还是国外居多,原版的技术资料全是英文的,英文不好就只能用软件翻译或者等人喂食,而通常软件翻译的结果让人一言难尽,等人翻译估计黄花菜都凉了。还有底层协议开发,也是必须遵从英文规范,不懂不会就要走很多弯路。再比如码农必备的Stack Overflow网站也是英文的,其技术答疑常常会有惊喜大礼包:不仅给出一个问题多种不同的解决方案,还包括对这些解决方案的比较,以及大牛们的思考过程,甚至还有不少强力工具的特别附赠。建议各位就算没有遇到问题,也可以常常去浏览一下其中投票较多的问题,充实自己的知识体系。总而言之,英文是一扇面向世界的窗户,有了它能够看得更远,自己不会或者懒的开窗,那就自己在小黑屋慢慢摸索吧。偷偷吐槽一句,码农的英语不好,连变量名都只能用汉语拼音定义哦。至于抗压能力,码农们都是经过千锤百炼的了,做到前面几条,加上沟通技巧、团队合作以及较强的执行力,这就是今后成长转型的关键。至于是写一辈子代码还是转型管理抑或销售及其他,这就仁者见仁智者见智了。最后附上一首自创的《江城子》,送给屏幕前还在加班的码农们,祝大家都能早日完美转型,成功升职加薪~

十年IT终日忙,不开源,难自强。千页文档,需求又无常。纵使交付运维忙,痘爆头,肤如糠。夜来加班忽感伤,格子间,冷暖尝。相对无言,惟代码万行。愿为自主研发闯,泡机房,又何妨。 

作者简介:COCO,80后高级工程师,目前就职于广州大型通信国企,白天办公室打杂,晚上实验室码字。

【END】

别惊讶!人工智能时代即将到来!

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

640?wx_fmt=jpeg

 热 文 推 荐 

面向对象编程之兴衰

拿来就能用!去哪儿网消息中间件 QMQ 详解 | 技术头条

Myspace 被曝数据滥用,隐私问题再被诟病!

沃尔玛也要发币了,Libra忙活半天为他人做了嫁衣?

华为高通5G华山论剑,一文看懂5G芯片背后的明争暗斗

☞Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪

自然语言处理十问!独家福利

七夕大礼包:26个AI学习资源送给你!

☞痛!为什么说李彦宏无法拯救百度?

640?wx_fmt=gif点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

展开阅读全文

程序员怎么转型

10-23

我先做一下自我介绍, 现在已经26岁,18岁高中毕业(最高文化),今天3月24号来上海干java程序员(中间的时间我不想打广告,我的工作时间直到我现在发这个帖子是7个月),第一家公司进的东软国际,薪资6.5k,因为薪资都是保密的,我对我的薪资也一直很满意,因为在我老家的程序员也就2k多点,但是在今年9月份的时候,我和我的一个同事聊天,无意中,谈到了薪资,我才知道他的薪资是7k,还是包住包水电费,他是大学刚毕业,但是平时干活都是我带着他干,在以后的几天,我就想着要涨工资,我就找项目经理,说涨工资的事,当时我是要的10k,他说最多也就涨3000,没有涨那么多的他还告诉我在上海一年工作经验的人也就10k左右,然后我就跳槽了,8月31号是我的最后一个工作日,然后我就开始找工作,9月1号上海还是挺热,我以为找工作会很辛苦,但是后面发生的事让我哭笑不得,我第一天上午面试了一个公司,面试直接过接着就谈薪资,谈的时候我要12k,他们很爽快的就答应了,拿了一个offer心里很高兴,下午我又面试了一个公司,因为这个公司离我住的比较远,我也不大想去,最后还是去了,去的时候就想反正也不干就要14吧,如果他真给我14我就干,然后那天下午4点我从公司出来的时候手里已经拿了offer。到了第2天,还有约要面试的,因为第一家公司我面试上的是我最想去的,所以后面的面试都是抱着试试的态度,主要就是薪资,我什么经验都没有大公司我根本进不去,就只能去小公司混混经验,去了以后我要的16k,但是到最后我没面试上,第一轮过了,第2轮pass掉了,到了下午,我又去了一个小公司面试,我要了18k,没错我说的18k,或者税后14,少了不干,结果也就是我现在上班的公司,你们知道了,我现在税后14,工作时间7个月。这是我的真实经过。rnrnrn你们说我能有什么技术?我就干了7个月,我只会java啥都不会,7个月还不是一直在开发,中间还划过水,在我手里一个上线的项目都没有,我现在上班的公司,是一个电商,一个星期也就开发几个接口,对我来说一点压力都没有,星期三一般一个星期的活就差不多做完了,每天都是重复的工作,真的干的一点激情都没有,一点心情也没有,经常来CSDN上看看是不是和我一样有同样经历的人,看看以后的路怎么走?像我这样的也程序员以后的路真的很迷茫,我想着就是老实的干,在稳定中求突破,但是我又耐不住寂寞,天天干同样的事确实挺烦,感觉一些技术难题也不会让我干,我们现在在搞电商的支付系统,感觉挺难的,但是和我有没关系,都是负责人在弄,他只要把方案定下来我就能开发,也没啥难度,所以就是一直混经验,rnrnrn要是我再跳槽,跳槽能干什么?还是干程序员?我的学历是我的最大的障碍,买了一个成人大专证还得下年才能批下来,真的很迷茫,所以,我想着我是不是不适合干开发,我是不是要转行?干产品或者干测试什么?找点不大需要技术功底的工作,我到现在都不知道啥是操作系统,什么算法,我也没研究过,我的英语也是一大障碍,我就高中英语水平,说真的,高中考大学我就考了33分。几乎就啥都不会,为了突破这一障碍我在上海报了一个英语成人班,2年4W块,已经上了一个月课了,我现在每天都在想以后的路该怎么走。。。还有就是测试时难不?我转测试好转不?还有产品经理啥的,好转不?rnrnrn留言!万分感谢,我的文化水平也不怎么样,大家别见谅。rn 论坛

没有更多推荐了,返回首页