很多人都说通信工程难就业,尤其是本科生。这话对,也不对。
说它对,是因为如果你还抱着十年前的想法,想进运营商、设备商(就是华为、中兴这些)舒舒服服地搞硬件、调参数,那样的岗位确实少了很多,而且要求也高了。
说它不对,是因为通信工程的知识并没有过时,只是换了个形式存在。互联网公司、云计算厂商、甚至很多做智能设备的公司,都需要懂网络的人。问题是,他们需要的“懂”,和你在学校里学的,可能不是一回事。
我能理解这种感觉。大学四年,学的是《信号与system》、《电磁场与电磁波》、《移动通信》,听起来都很硬核。结果一到找工作的时候,发现公司招聘启事上写的都是Python、Linux、TCP/IP、BGP、云计算。你一下就懵了,感觉自己学了个假专业。
这事儿的核心原因,是整个通信行业变了。
以前,通信是“重资产”行业。运营商要花大钱买基站、买路由器、买交换机,然后派工程师去安装、调试、维护。所以,那个时候需要大量的通信工程师去现场,去机房。你的价值,体现在你能配置好一台华为的设备,能看懂复杂的网络拓扑图,能用频谱分析仪排查信号问题。这些都是“硬件”技能。
但是现在呢?4G、5G的大规模建设高峰期已经过去了。网络的基础设施已经铺得差不多了。现在行业的重点,从“建设”转向了“运营”和“应用”。
而且,技术的方向也变了。两个词是关键:软件定义网络(SDN)和网络功能虚拟化(NFV)。
简单说,以前的网络是“硬”的,一台路由器就是一台路由器,功能是固化的。现在是“软”的,很多网络功能,比如防火墙、负载均衡,都用软件在普通的服务器上实现了。管理几千台网络设备,也不再需要一个个登录去敲命令,而是通过写程序、跑脚本来自动化完成。
你看,这么一变,对工程师的技能要求就全变了。公司不再需要那么多只会配设备的人,而是需要能写代码、能做自动化、能理解云架构的工程师。你的战场,从机房的物理设备,转移到了电脑屏幕上的代码和虚拟化平台。
问题就出在这里:学校教的,和公司要的,脱节了。
学校的课程设置更新慢。教你《信号与系统》的老师,可能自己都没写过Python自动化脚本。他们教的是通信的底层原理,这些原理很重要,是基础。但是,公司要的是能直接上手干活的人。他们默认你已经懂了原理,希望你来了就能写脚本、能排查问题。
这就造成了一个巨大的鸿沟。通信专业的学生,如果只跟着学校的课程走,毕业时就会发现,自己好像什么都懂一点,但又什么都做不了。论编程,比不过计算机专业的;论硬件,现在岗位又少。不上不下,特别尴尬。
那怎么办?坐着等肯定不行。如果你现在是大二或者大三,还有时间。
第一步,把心态扭过来。
不要再把自己当成一个纯粹的“通信工程师”。你的专业全称是“电子信息工程类-通信工程”,你首先是个工程师,你的领域和计算机、网络、软件是高度重合的。你的目标,是成为一个懂网络协议、又会写代码解决问题的“网络研发工程师”或“系统工程师”。别老盯着运营商那几个岗位,多看看互联网公司、云计算公司的职位。
第二步,动手学点硬核的。
别总停留在理论上。下面这几样东西,你必须自己课后去学,而且要学到能用的程度。
编程语言,首选Python。
为什么是Python?因为它简单,而且在网络自动化领域的库最多。你不需要学到能用它写一个网站的程度,但你必须能用它来做这些事:- 写脚本批量登录网络设备,执行命令,抓取信息。可以去学Paramiko、Netmiko这些库。
- 处理文本和数据。比如,从设备的日志里提取有用的信息。
- 调用API。现在的网络设备和云平台,都提供API接口,让你用程序去控制它们。
操作系统,必须是Linux。
现代的服务器、网络设备,内部跑的系统绝大多数都是Linux。你不能只会在Windows上点点鼠标。你得习惯在黑乎乎的命令行界面里工作。至少要做到:- 熟练使用常用命令:
ls
,cd
,grep
,awk
,sed
。这些是你看日志、排查问题的基本功。 - 了解Linux的文件系统、用户权限、进程管理。
- 会写简单的Shell脚本。很多自动化任务,用Shell写比Python更方便。
- 熟练使用常用命令:
网络协议,往深了学。
学校教的TCP/IP只是皮毛。你要自己找书看,比如《TCP/IP详解 卷一》。你要搞清楚:- TCP的三次握手、四次挥手,每个环节的状态是什么,为什么需要这样做。
- HTTP协议的请求头、响应头里都有什么。
- DNS是怎么解析一个域名的。
- 出了网络问题,怎么用
ping
,traceroute
,tcpdump
,wireshark
这些工具去分析数据包,定位问题。
第三步,给自己创造实践环境。
这些东西光看书没用,必须动手。你可以在自己电脑上装个虚拟机(VirtualBox是免费的),在里面装上Linux系统。然后,用GNS3或者EVE-NG这样的网络模拟器,去搭建一个虚拟的网络环境。你可以在里面模拟几台路由器、交换机,练习配置OSPF、BGP这些路由协议。
这个过程,就是把你的理论知识,和你学的编程、Linux技能串起来的过程。比如,你可以给自己定个小目标:用Python写个脚本,自动配置这几台虚拟路由器,让它们互相能通信。当你把这个做出来的时候,你的简历上就可以写“熟悉Python网络自动化编程”,这比你写“获得校级奖学金”有用得多。
第四步,调整求职方向。
当你具备了上面这些技能后,你找工作的范围就广了。你可以投这些岗位:
* 网络工程师(互联网/云计算方向): 负责数据中心的网络架构设计、运维和自动化。这是通信专业最对口的转型方向之一。
* 系统工程师/SRE: 负责服务器和应用的稳定性,也需要处理大量的网络问题。
* DevOps工程师: 负责开发和运维之间的流程自动化,网络知识是重要的一环。
别再说通信工程难就业了。准确地说,是“传统的、安逸的通信岗位”难进了。市场需要的是能解决新问题的人。你学的《信号与系统》、《电磁场》不是没用,它们让你理解通信的本质,让你在排查一些底层物理问题时比计算机专业的人更有优势。
但这只是你的起点。从这个起点出发,你需要自己去学编程、学Linux、学自动化。这个过程没人逼你,只能靠自己。这条路不轻松,但走通了,你会发现机会其实很多。难的不是专业,而是能不能跟上技术的变化。