在美国,网络工程师是一门职业,如果你不奢望一夜暴富,也不幻想出来创业,可以踏踏实实做一辈子,而且工作内容在大多数公司中都是相似的。
本文讲述了作者在美国从事四年网工最真切的感受,包括如何找工作、求职中的感悟、硅谷网工的日常,以及工作中的紧急事件等。
如何找工作
因为我移民之前一直在国内从事网络和数据通信工作,考虑到硅谷是 IT 行业的中心,所以选择了旧金山作为登陆地。
首先是安家,在小孩上学,考驾照等事情一切安排妥当后,我开始找工作。
当时我以两个方式同时进行:
建议尽量避免在不正规的求职网站注册自己的信息,因为很多印度口音浓重的中介会不分时间、场合直接打你手机,而且工作大多是 Contract,没有 Full time 的稳定,时薪差异很大。
经验告诉我 Jobvite 和 LinkedIn 非常正规和高效,即使我在这两个网站都是免费的帐号仍能得到很好的服务。
我在 Jobvite 刚刚注册 30 分钟后就收到一家公司 HR 的邮件,她问了我如下三个问题:是否在美国具备合法工作的身份?你的现住址距离我公司比较远你是如何考虑通勤方式的(你是否愿意 Relocation?)?以及你期望的年薪。
这三个问题基本上是所有招聘企业的共性问题,如实回答就好。关于收入,我记得当时回答的是基本年薪 10 万,因为这家公司招聘的职位是工程师,不是 Senior。我又急于找到工作落脚,没有考虑太多。
之后就和他们约定好第一轮电话面试,时间是在我提交申请的一周后的一个工作日下午。
首先是我未来的雇佣经理打电话问我的工作经历,我大致介绍了来美国之前的两个工作单位,在一家网络设备制造商当过售前技术支持和系统工程师以及在一家网络研究单位做过网络规划和技术方案设计。
第二个电话是我未来团队的同事,他问了我一些关于 Spanning tree、OSPF 和 BGP 的问题,由于我此前专门准备过,所以基本回答都正确。
挂了电话后,第二天我就收到了邮件,我们双方约定一周后 On site 面试。
面试下午 1:30 开始,到 5:30 结束,总共六个人依次进行,每人 30-45 分钟不等。面试官有自己的 Team 成员(包括电话面试的两位),也有其他相关团队的员工。
印象中有两个人的技术细节问的比较细,包括但不限于:
其中一个人的态度略显傲慢,当时我也是有求于人,始终保持谦卑,认真听他的提问并尽可能回答完整。
但是他后来的举动让我印象深刻,他说你已经进行了两个小时的面试了,如果需要上洗手间我可以带你去,然后在去的路上他悄悄对我说你水平很棒不要紧张!所以说不能通过表象来轻易判断一个人对你的真实态度。
又过了几天,人事来邮件让我配合第三方背景调查公司提供相关的文件和证明材料。
包括截止当时前 7 年的工作单位的任职证明,内容必须包含你从事过的项目,担任的职务,以及收入(折算成美元),然后就是正式提供 Offer。
职位和年薪都超出我的预期,而且是我所有申请的公司中安排面试和同意录取最快的,我基本没有犹豫就接受了。
我清楚地记得是 2014 年 5 月 30 号提交的求职申请,6 月 30 号是我的 First day。
求职中的感悟
关于这次成功的求职经历,我总结了如下几点:
首先是简历务必精炼、真实。一页纸够了,重点介绍你 10 年之内或者近三家任职公司的工作经历即可。
很多面试官会基于你简历中的内容进行提问,内容真实你的回答自然就会加分。
和前任公司要维持融洽的关系,因为任职证明需要原公司的 HR 和 Manager 出具,调查公司还会打电话跟他们核实。
面试过程中不要紧张,没有听清楚可以让他重复一遍。
借助白板来阐述你的回答,更生动也会让对方更容易理解你要表达的内容,毕竟我们的母语不是英语,他们会理解。
态度真诚,对不知道的如实回答不知道,但是可以补充你的个人理解。
我记得有一个面试官打开他的电脑演示 Solarwinds 和 IPAM 问我是否用过,我如实说没有。
但是我补充说我熟悉 OpenView、MRTG 和 Cisco works(现在回过头看这些系统太老了,但当年我只对这些有了解),我相信这些网管系统的实现原理都是相通的,并表明我是一个 Fast learner,展现自己的自信。
自己的工作经验可能对找工作有帮助。我出国前在一家网络设备公司做过 3 年多的 SE,并获得该公司的职业认证,对全系列产品都曾经很熟悉。
而面试公司当时的网络设备正好是使用我前东家的产品,因此雇主对我的职业经历自然比较在意,现在看来这可能也是自己的运气。
总体而言,美国对外来移民的求职是很包容的,不要求本地学历(至少我的亲身感受如此,因为我本人没有美国学历), 也不强制要求有美国本土的工作经验。
甚至他们对你的英语也能容忍,毕竟我作为新移民,英语不可能很熟练。他们看人更注重现在的能力和未来的潜力,应该是务实的。
网工的分类
我在国内没有从事真正意义上的网工,至少不是美国职场所认为的网工。
通过近 4 年的浸润,我个人觉得美国的网工大致分为 Production、Corp/Campus 和 Data center 三大类,但也不是绝对的。很多时候某个公司的网工要熟悉全部三个领域。
通常一个互联网公司,无论其业务类型是什么,大致由三个纬度的网络组成:
数据中心也可以进一步细分为两类:
如果公司规模很大,有可能是多个 Team 来分别负责;如果规模相对小一些,很可能只有一个 Team 来对所有网络进行规划设计、部署实施和运行维护。
在云计算时代,很多公司为了降低成本,会把 Public DC 迁移到云上,因此以承载自营的 Public DC 为主要目的的 Production 网络也会逐渐退役。
Production 网络的工程师更多地面向 ISP 网络技术,例如 ISIS、BGP 等以及 Public DC 的负载分担和 DDOS 防护技术。
我们在迁移到 AWS 之前曾经和近 20 家 Tier1 ISP 进行 BGP 连接, 其中一个数据中心的规模是 5 万台服务器,2000 多套网络设备(交换机,路由器,防火墙,负载分担)。
Corp 网络的工程师主要关注企业网络的组网技术,例如 OSPF、SPT、IPsec、SD-WAN/DMVPN 等。
而且,Corp 网工还需要熟练掌握 SSL VPN、FW、Wireless 和 LB 的配置、应用和维护,以及和 IT 相关的技术。
例如 LAMP 建站,AD/LDAP/Radius 原理和实现, SAML/SSL 原理和部署、Certificate、RSA、VMware 等。
无论什么类别的网工,还需要对 Linux 操作系统很熟悉,因为现在越来越多的网络设备都是基于 Linux kernel 来开发的,很多高级配置和排错功能都需要进入 Linux shell。
此外,网工还需要对系统很熟,几乎可以认为是半个 SA,因为和网管系统相关的服务器,都需要由 NetEng 团队来自己搭建。
例如用于 Monitor 的 Observium/Nagios/Check_MK/ThousandEyes、配置备份和审计的 RANCID、地址管理工具 IPAM、流量流向分析软件 Scrutinizer、日志采集 Splunk、无线网管 Cisco Prime 等。
近几年随着网络自动化趋势的发展,网工还在进一步转型,需要具备 Python 和 Ansible 技能(主要面向 Network automation 方向)。
除了专业技能,网工还有很多日常杂项需要处理。以一个公司在全球有 15 个分支机构为例,每个 Remote site 平均接两个 ISP,理论上你公司有最多 30 个 ISP 服务提供商。
你需要和他们打交道,签合同,报故障。这些流程每个 ISP 都不一样,它们的官网也形态各异,你必须花时间精力去熟悉和了解。
基于我这四年的工作经验积累起来对网工的了解,我真心觉得网工比 SA、DBA、SE 以及软件工程师的压力都大。
也许我的认识肤浅,仅从自身角度看问题难免片面,欢迎其他工种的工程师一起交流,分享各自的感受。
网工的日常
通常来讲,网工分为三级:
这个分级也不是一成不变的,这三个 Tier 也完全可以在一个团队里。基本上架构师是团队的技术主管,负责公司网络架构的 Highlevel 规划设计和公司未来组网技术走向的确定。
NetOPS 和 NetEng 的工作是相互交融的,没有过于严格的区分。日常的 Ticket 工单,例如业务部门需要开个防火墙白名单,测试部门需要为外包公司开放一个 VPN 源地址。
IT 部门在数据中心新设存储需要提供网络连接,无线网络状态不稳,分公司网络连接异常等,以及网络设备定期巡检和升级打补丁,都属于 OPS 范围。
通过 Ticket 形式分配给每个网工去完成。如果任务牵涉的内容比较复杂,需要协调的部门也比较多,则通过 Project 形式来部署工作,根据每人的忙闲程度和技术强项不同,来分派给不同的工程师,这类工作属于 Engineering。
具体的工作内容包括网络自动化实现、配置文件从 RANCID 备份到 GitHub、集成 Weathermap 到现有网管工具实现网络流量可视化、负载分担设备采用虚拟机替换等。
无论是 Ticket 还是 Project,都通过 JIRA 系统进行流程管理,应该是正规和严谨的。
如果需要对网络进行操作配置,都需要提供 Change ticket 进行备案;如果是对防火墙进行配置更新还需要提交 Security 工单获得安全团队的授权,并和你的工单或项目进行关联,利于日后审计。
CHG 工单根据对网络影响程度不同分为 Routine、Minor 和 Major 三类,需要不同的人进行审核和批准。
团队内部和团队之间的协调沟通也是很频繁的。首先团队内部有时会每天有 Stand-up,每个人把今天的工作计划陈述一遍,每周还有一次 Team meeting,把个人在本周的事情做个总结。
已经完成的工单、项目进行的程度、遇到的问题、需要经理出面协调的事情、需要其他资源的协助等,都可以在会上提出。
由于网工负责的技术领域太多,每个人不可能所有领域都精通,团队内部偶尔会有 Cross-training ,把个人擅长的领域和大家分享。
预定一个会议室准备一个 PPT,做演讲的人陈述,大家就不清楚的地方提问。PPT 以阐明问题为主,没有人在意字体、颜色、行间距等细枝末节,重实质轻形式。
作为网工,平时工作的最重要一环是 On-call,即运维值班,通常是 Team 中所有成员每人值班一周,交替轮换。
如果把网工比作医生的话,On-call 就是值夜班看急诊,对医生的临场应急处置能力是个很大考验,必须具备很强的抗压能力,有丰富的网络技能且对现网架构和细节都有深入了解,才能做到临危不乱。
继续拿医生来对比:
甚至连网工日常对网络的检测手段也可以和医生的诊疗有一比:
和其他工程师相比,网工也是最有职业风险的工种,就好比医生一辈子不能出一次重大医疗事故。
有时我们自嘲,所有还在职的网工,都是职业泰拳选手。泰拳由于过于凶狠,选手在任何一场比赛中都不能输,一旦输就意味着残废,从此结束职业生涯。
紧急事件
我这四年来遇到很多紧急情况,非常庆幸到目前为止都化险为夷,谢天谢地!
举一个例子,我们公司安全部门会定期检测到互联网上的钓鱼网站,为了避免员工误上这类网站被植入木马引起安全事件,会定期发布一些钓鱼网站的 FQDN,让 NetEng 在防火墙上配置安全策略进行封堵。
在 Juniper SRX 时期,我们都是采用 Domain based filter 来实现安全策略,因为这类网站的 IP 地址往往是动态的,基于域名进行过滤可以有效解决地址变换的问题,在 Juniper 防火墙上一直运行稳定。
我们从去年年初开始将公司的防火墙从 Juniper SRX 替换为 Checkpoint,虽然进行了培训,但是在短期内对设备了如指掌并不现实,都是在实践中摸索逐渐积累经验。
人是经验动物,对自己熟悉的技术和方案有使用惯性,我接到这个工单后自然想到沿用 Domain based filter,上 CP 的网站查 Knowledgebase。
根据上面的操作流程逐步实现,将策略 Publish 并 Install 到公司总部的防火墙上,防火墙中央配置系统的 Dashboard 上反馈的信息一切正常。
但是 10 秒钟后,我发现和管理系统的连接中断了!然后就是笔记本上的无线连接图标显示 Internet connection failed。
当时正是工作时间,公司总部约有 500 多人,首先是自己座位区域的同事们反映网络连不上了,继而 Desksupport 的电话、Hipchat 充斥着询问和报障的 Message。
由于故障出现的时间和我对防火墙操作的提交时间高度吻合,我初步判断是我的操作引起的。
作为有职业精神的工程师此时需要尽量保持平静,并尽快将自己刚刚进行的操作让团队其他成员知晓,好对事故起因有个初步判断,以最快的方式进行最有效的排查,尽最大可能降低 Outage 对业务的影响。
然后团队成员分工合作,一个同事马上提交 Incident report 向管理层汇报,另一个同事赶往 MDF 进行 Active/Standby 切换。
我则马上打电话到 CP 开一个 P0case,陈述我进行的操作以及因此导致的故障现象。
非常庆幸电话那头的售后是一位经验丰富的工程师,他判断出是 Domain based filter 引起的系统不稳定。
由于刚刚进行了主备切换,网络临时恢复到正常状态,TAC 工程师通过电话指导我把这条安全策略进行了回滚,彻底解决了问题。整个脱网时间控制在 15 分钟以内,没有引起更大的损失。
这件事给我本人的教训深刻,首先是不能凭经验想当然 CP 对某些 Feature 具有和 Juniper 同样的支持度。
事后 CP 工程师提供的资料表明,Domain based filter 由于需要进行递归解析 IP 再动态将 IP 导入策略,在 CP 的实现上对 CPU 资源消耗很大,容易导致系统异常,是本次事件的 Root cause。
在 CP 的 version77.3 release note 中有相关的说明,虽然很不明显。
我通过这件事认识到,生产网络无小事,任何操作都可能引起意想不到的结果,需要在工作中处处谨慎行事,对任何有潜在性能影响的操作,要认真阅读 release note,在条件允许的情况下可以在 Lab 设备上进行测试。
此外任何重大的网络调整要事先制定应急预案,并将网络操作窗口尽量安排在非工作时间。
这四年来其他的紧急事件还有很多,现在想起来仍然历历在目,例如:
由于我们采用了 Observium 定期轮巡网络状态能及时发现故障,并通过 API 实现与 PagerDuty 联动,On-call 网工可以第一时间通过手机上的 App 获知网络故障并进行响应。
当然很多时候故障发生在凌晨 2、3 点,我们也必须义无反顾从床上爬起来,这也是网工职业的特点吧!
其他感悟
关于加班
总体而言加班现象不普遍,公司不鼓励,员工也不值得炫耀。这里的员工把工作和家庭分的很清楚,公司的文化提倡 Work-family balance。
虽然大家下班都把电脑带回家,但是基本上不会发邮件,也不会在公司内部流程管理系统上更新或留言。
首先是他们认为回家就是和家庭成员在一起的时光,另外也不想因自己的邮件让同事感到压力,此外我估计也不想让同事怀疑自己的能力。
关于休假
很多公司名义上没有时间限制,但是只要自己不太过分,每年修 3-5 周是没问题的。
只要提前在邮件的行程安排中确认和其他同事没有冲突,提交邮件申请,经理通常会批准。
关于培训
由于网络技术的发展日新月异,从业人员必须不断提高自己。公司的内部系统购买了大量技术资料,HR 也要求每个员工每年必须完成一定时间的在线培训。
另外,每当公司网络设备进行更换后,由于采用新的设备,都会从原厂购买相应的培训服务。
这类培训基本上是原厂委托第三方培训机构提供,主要是 Web 方式远程授课,Hands on 实验则需要登陆到他们的服务器提供的虚拟环境上进行操作。
当然,员工个人也需要根据工单或项目的要求进行针对性地培训,主要是自己通过 Google 来查找技术文档和参与论坛讨论(我经常能 Google 到国内 51CTO 上的内容),以及 YouTube 上的 Tutorials。
IT 从业者是比较辛苦的,干到老学到老是普遍现象,否则很容易被时代淘汰。
关于人员流动
就我具体任职的公司而言,人员流量算是频繁的,当年招我进入公司的六个人,在我入职半年内走了五位。
第六位就是我的直线经理,他在公司一度很顺,从经理升任 Senior director,但是终于还是在我入职 3 年后离开了。
这里我想说一下,美国人的心理承受能力还是挺强的,很多曾经的同事,原来是经理,到新公司只是普通员工。
甚至有一位在新公司是合同工,还有一位云架构师,在新公司从普通工程师重新做起。我真心佩服他们荣辱不惊的心态。
关于收入
基本上硅谷地区工程师的收入在 12-15 万之间,如果是 Principal Engineer 或 Architect 收入在 15-20 万之间,这个在 Glassdoor 上有比较权威和真实的信息提供。
IT 从业者的收入是有天花板的,如果你不是企业高管或 IPO 之前的创业公司,这个职业的收入天花板在 20 万左右。
当然这里说的是符合普遍情况的 Base salary,特别牛的公司或个人不在此列。
除此之外的收入还有股票和奖金,它们在公司之间的差异比基本收入要大。
总结
在美国,网络工程师是一门职业,如果你不奢望一夜暴富,也不幻想出来创业,可以踏踏实实做一辈子,而且工作内容在大多数公司中都是相似的。
这也正是为什么人员流动那么频繁,但是新来的员工能马上进入状态独当一面的原因。只要你不断学习紧跟技术发展趋势,这份职业应该还算稳定。
当然前提是你要不断学习,早些年熟悉思科 Juniper 网络设备的 CLI 配置,考个认证即可。
但是现在你除了路由交换,还要懂安全、VPN、负载分担和无线,以及 IT 相关的技术。
未来当 SDN 普及时,你还要具备编程能力,实现由 Configuring 到 Coding 的转型。
这是我在美国四年网工的感受,我在国内的许多朋友遍布运营商、设备商和互联网公司,我们经常保持交流。
国内的互联网行业发展势头很猛,做的风生水起,工程师的技术水平和硅谷不相上下,貌似现在收入也不差多少。希望有感同身受的同行分享你的故事。
作者:胡捷
编辑:陶家龙、孙淑娟
投稿:有投稿、寻求报道意向技术人请联络 [email protected]
在国内曾经任职中国网通(CNC)、Verizon、Juniper 和中国电信。参与过中国电信 CN2 项目技术方案编写和城域网优化改造项目,以及中国电信 IPv6 研究和现网试验。2014 年 6 月至今在旧金山一家互联网公司从事网络工程师职业。