聊天的画风已变!
你好,我是姜汁啤酒,咱们又见面了。
不知道你是否注意到,网络技术群里面的聊天画风慢慢开始变了。
以前,聊天内容是这样的。
兄弟,最近实验敲得咋样啊。
我刚把NP的题看完。
嗯,我准备学点安全和语音的技术。
而现在的聊天内容,以我的《老司机网络运维-读者群》为例。
大家讨论的不光是日常网络故障和经验汇总。
慢慢地,朋友们开始研究如何学习Python。
如何把玩Juniper的PyEZ模块实现日常运维自动化。
连这13周年庆学习专栏送书活动。
大家购买的不再是什么思科学习指南。
更多的是Python,Ansible等书籍。
难道,这个世界变了么?
我的回答是:世界不仅变了,而且速度超乎你的想象。
若现在的你,仍然像昔日的王朝,固守传统的网络技术疆土。
那很抱歉,云技术,虚拟化,SDN,NetOps网络运维自动化会慢慢撕开你坚固的防线。
所谓和你一条战线上的厂商们,纷纷倒戈。
思科IOS-XE系列的设备,华为CloudEngine系列的设备纷纷开始支持SDN,Python自动化,更别说Juniper以及其他大厂,全都自愿的,不自愿的投入了未来技术的怀抱。
新的网络技术时代 - 网络工程师2.0 到来!
机遇和挑战
每一次新的技术出现,并存着机遇。
若你抓住了,就会被技术的浪潮抬升到新的高度。
若负隅顽抗,最好的结果就是随波逐流。
正如文章标题所述,这是一次逆袭的机会,也是一次挑战自我,提升自我的机会。
在这网络工程师2.0时代?我到底需要准备什么?
我不想提前回答这个问题。
相反,我相信你通读完此篇文章以后,答案自然而然就在你的脑海里面了。
而你所收获的,可能不仅仅这一个答案而已,也许包含了认知的升级,更有可能是职业生涯的蜕变。
让我们先看看一个简单而实际的问题。
明天,都需要什么样的人才?
你去找工作,或者跳槽。不用说,是为了挑战自己,为了获得更好的工作环境,提高生活质量?
而你所能遇见的工作机会,换个角度来看,就是招聘公司的业务发展需求,或者说是行业的发展需求。
既然是发展需求,就存在一个时效性问题。
可能,今天这个行业需要这样的技能型人才,但是并不能代表明天还是这样?
例如,对于网络工程师来说,好几年前,大家会思科的东西就好了。可是现在,因为华为市场规模不断扩大,公司又要求你会华为的技能,难保明天又有什么新的东西出来,搞得你措手不及。
这种情况下,就会出现两种可能性:
- 要么被动的跟在后面跑,人家需要什么,我们再去学习。
或者
- 具有一定的预见性,提前做好准备,当机遇来临,你就是那第一批人。
想想大数据、人工智能刚刚兴起的时候,第一批吃螃蟹的人,就可以当着雇主的面,漫天要价。
那作为网络工程师的我们,该如何去把握市场业务的发展方向,让我们不那么被动。
其实很简单,看看业界的巨头都在干什么,招聘什么样的人才。
他们的今天,就是许许多多普通公司的明天,把握住了这一点,就是变被动为主动的关键。
业界IT巨头网工招聘要求分析
限于篇幅有限,此处展示了三个在业界名声赫赫,也非常具有代表性的公司。
Google,亚马逊,Facebook。
首先看看网络一哥Google的网络工程师招聘要求。
Google 网工招聘简介
职位:网络工程师
最低要求:
- 计算机相关本科学位。
- 熟悉一个或者多个通用型计算机语言,包含但并不限于:C,C++,Python,Java,Go。
- 熟悉网络架构,企业级网络管理,排错,和日常运维。(注:google把自己的网络定义为企业网。)
亚马逊AWS招聘简介
亚马逊这几年的AWS云计算服务是一路狂奔,是不折不扣的市场领跑者,让我们看看他们都需要什么样的网络工程师。
职位:网络工程师
最低要求:
- 科技领域相关的本科学位。
- 3年以上大型网络工作经验。
- 熟悉网络路由协议:TCP/IP, BGP, MPLS, ISIS and/or OSPF
- 熟悉Cisco IOS和JUNOS
- 熟悉自动化,包括bash/shell脚本,Perl、Python编程。
Facebook招聘简介
最后让我们看看Facebook的招聘要求。
Facebook,不用说大家都知道,全球使用最多的社交平台。
职位:网络工程师
最低要求:
- 2年ISP运营商、CDN运营商、或者大型企业核心工程师或者设计工程师工作经验。
- 熟悉IS-IS,BGP,MPLS,并具有使用(OpenConfig,NetConf,YANG)等工具的经验。
- 熟悉业界网络硬件和软件架构,以及掌握发展趋势。
- 实际编程经验,包括不限于Python、Go、Perl等语言。尤其是控制和管理网络相关项目的编程经验。
- 熟悉并协调厂商网络产品研发和支持的工作。
- 具有展示技术PPT的沟通能力。
分析小结
我不知道,当你看到以上行业领头羊的招聘需求以后,你是否有了些感触?
你会发现,基本上以上几个职位,都提到了同一个东西:写代码的能力。
什么Python,Perl,Go,Java语言,都是必备项。若要是没有这个编程能力,连筛简历这一关都过不去。
有朋友就说了,人家是全球的规模,我们相比小得多,没那个必要,参考意义不大。
如果这样想,那可能就错了。
要记住,他们代表着(也把控着)网络行业的发展方向,他们的今天,就是我们的明天。
你要是还没觉得有什么危机感,让我们继续往下看。
谁说只有网工可以配置设备?
讨论此话题之前,看几个小例子:
当年,苹果研发iPhone的时候,诺基亚嘲笑说,你搞的啥玩意儿。连个实体按键都没有。
谁会用啊?
不用我说,你也知道最后谁输谁赢。
同样的,当阿里巴巴在杭州倒腾支付宝,腾讯后来玩微信支付的时候。
银行的柜台员工们并不认为这和他们有什么关系,银行ATM机的制造商们还在那里逍遥的过着小日子。
几年以后,大家都不怎么去柜台办理业务了,一切都电子化,谁还去取现金?
ATM机制造商怎么办,柜台人员怎么办?
回到网络行业,我也给你说一个我自己的感受,这也是促成我学习编程,写这份专栏的最根本原因。
在我刚开始学习Ansible的时候,我发现Ansible帮我减轻了两个负担:
- 它可以同时大规模部署和配置网络设备。
- 帮你省去登陆设备,敲入命令的时间。
但是,初期的Ansible,我还是得输入需要执行的CLI命令行。
换而言之,我只有熟悉思科,Juniper,华为等设备的命令行才可以,若不是网络工程师,就不会。
可是,后来Ansible迭代进化了,各个 厂家分别更新了自己的Ansible模块,你只需要提交相应的参数,就可以完整的配置网络设备。
例如,传统情况下,你需要配置思科的接口,你需要这样:
interface gi0/0
ip address 10.1.1.1 255.255.255.0
no shutdown
但是,现在的Ansible,你只需要选择对应的厂商模块,然后传递给Ansible对应的参数,例如接口名称,IP地址。
如下所示,给了接口名称和IP地址,完工。(若还不理解,专栏里有详细介绍)
- name: set GigabitEthernet0/0 IPv4 Address
ios_l3_interface:
name: GigabitEthernet0/0
ipv4: 10.1.1.1/24
Ansible就帮你完成所有的命令并配置设备。
你完全不需要了解特定厂商的配置内容。
再次强调,你不再需要了解某个厂商的配置细节,照样可以把工作干得好,干得快,干得漂亮。
如果网络工程师不需要配置设备,剩下的也就只有两个看家本领:
- 扎实的网络知识。
- 丰富的网络项目和故障处理经验。
可是唯一存在的问题是,一个公司如果大量的维护工作都自动化了,它会招聘多少网络工程师?
5个,10个?
我猜,可能1-2个经验丰富的网工+2个码农的就搞定了。
那剩下的人怎么办?
你说呢?
未来的网工 - 网工2.0
有句话说的好,最好的防守就是进攻。
传统的网络工程师,是指熟悉网络技术,例如路由交换,安全语音,以及各个厂家的设备调试等技术。我个人称之为网工1.0时代。
可是正如我上面所述,现如今因为网络大规模化,云计算化,数据中心化带来的运维自动化需求,以及厂商针对自动化开放的程序接口,使得那些会自动化的软件开发工程师、或具有写代码能力的网络工程师,在工作效率和层次上远高于传统的网络工程师。
这就好比人家用枪,你还在用刀,完全不在一个量级上。
所以,若不想被历史的车轮碾压,最好的办法就是升级自己,让自己的技能也能赶上时代的潮流。让自己成为新一代网络工程师,即所谓的网工2.0。
我该学习什么才能升级?
首先,你需要选择一门编程语言。至于选择哪一个。
不用说,你光看各个IT网站头版的广告就知道,编程语言Python是最佳选择,尤其是初学者。
作为一门专注于解决问题的语言,所有的各种工具早已有人给你写好,你只需要专注在你所需要实现的程序功能即可,当然python还有很多其他的优势,这里不再陈述了。
除此之外,我为什么推荐Ansible作为另外一个学习的对象和工具。
因为它同样也是极其容易上手,非常简洁明了,厂商支持程度也很高,就算对编程不熟悉的朋友,经过一番讲解之后,也能上手写自己的Ansible自动化脚本,马上就能看见成效。
啰嗦一句,编程语言也好,还是自动化工具也好,选择可是五花八门,在我们有限的时间和精力之下,选择一个业界流行,大家认可的工具,并潜心研究,才是正道。
相反,若各个工具都有所染指,虽然可以成为和朋友的谈资,但是真正用起来,你会发现哪一个都不怎么会用,浅尝辄止。
如何克服编程恐惧症?
有部分朋友说 :“姜汁哥,不瞒你说,我搞网络就是因为对编程不感冒,不是那块料。要不然我早去干编程了,说不定现在随着哪一家初创公司上市,都财务自由了。”
这位朋友,其实我也不瞒你,我和你一样,当时上大学也学过编程,但是就是怎么都入不了门。
有句话说得好,不是你不会,而是身上的压力还没到那份上。
我个人接触了一些做自动化的朋友,加上自己涉猎Python + Ansible这一方向后,我就开始有深深的危机感。
上有老下有小,丢工作了可不是一件好玩的事情。所以我硬着头皮就啃了下来。
可就在我啃的过程中,我发现一些学习编程的小窍门和方法,这对于初学者来说,尤其有帮助。
我暂且称之为“基于需求的编程学习法”。
由于此方法不是一句话就能说清的,我特地把这一民间偏方写成一篇文章,放到了新开的专栏《网工2.0晋级公攻略 - 零基础入门Python/ Ansible》内,共大家揣摩。
网工2.0晋级公攻略 - 零基础入门Python/ Ansible
说了这么多真心话,怎么也得给大家介绍下自己的新专栏。
此专栏目的只有一个:作为过来人和你一起入门Ansible和Python。
为了实现这个目的,此专栏存在如下奇葩风格:
1. 注重思路分析和细节讲解
其实写代码和画画很类似。
首先你需要知道画什么。
其次你脑海里面有一个即将画的物体的大概轮廓。
最后再动笔。
在此专栏里面,我们会一起针对每一个案例详尽剖析,从需求,到构思,最后到代码的生成。
以及每一行代码所要表达的意思以及相关的含义,都会仔细讲解。
2. 提倡拿来主义
本专栏提供了多个Python和Ansible的基础案例和实践案例。
我提供的这些案例,最终达到两个效果:
- 通过案例让你熟悉并掌握Ansible和Python。
- 其次,对于特定日常基础运维工作,你可以通过简单修改案例中的代码,轻松搞定一些重复的工作。
第二条即为我所说的拿来主义。
例如,某一天厂商报了一个软件bug,需要升级IOS、才能解决。
这时,领导急着让你搜集全网所有设备的软件版本。
你若是手工一个个的弄,费时费力,还不讨好。
但是学习了本专栏,你就有两个选择了。
- 要么自己写一个代码来搞定。
- 或者你若是还不太熟练的情况下,直接复制专栏代码,改改命令行,设备用户名密码就可以用了。
3.不纠结于高级编程技巧
若有人对你说。
你的代码不够简洁,代码写得比较low,写得像流水账。
以上问题如果是程序员之间的交流,我完全可以理解,毕竟他们是吃这一碗饭的。
但是,作为一名初学者,作为一名网络工程师,我的观点是,去他的代码质量,先能写,能用再说。温饱都没解决了,给我谈什么艺术情操
现在这个时代,计算资源过剩,刚开始入门编程,你完全不用考虑代码的执行效率等问题。你执行10个循环和执行一万个循环,对你来说,仍然是一秒钟的时间。
所以,在这个专栏里面,我尽可能的采用大家容易理解的方式来实现程序的功能,而不是为了做个人表演show,虽然我表演爽了。
可是你阅读起来,就很不爽了。
再次重申:这个专栏,就是带你如何从不会编程这个0,到会基本的代码技能这个1的质变。
而从会基本代码技能,到写的很漂亮,那就靠你未来的一步步的练习精进了。
4.免费vs付费 ?
最后一个,付费也算是本专栏的一个优势。
你可能会说,Ansible和python的东西,网上最不缺了。
我干嘛犯得着花这点钱来买专栏?
我不会反驳你的观点,相反,我觉得你说的很对。
一起看看网上的免费资源,大致分为两类:
- 给你个100G的python视频,慢慢去看吧。
这100G搜集了各路神仙的python视频,表面上你拥有了全世界,可是你却少了一个东西 - 时间。
回忆一下,这100G视频,你看了百分之一了么?
- 各类博客文章散布全网,需要通过搜索来获取。
不可否认,很多大神写的博客文章,的确很详细很独到。
可是,以Ansible为例,要么你是在需要用Ansible的时候,才想到去搜相关知识,并找到一两个网站。
或者,你无意间浏览到某个Ansible为主的网站,并习得了相关技能。
但是这些技能都是碎片化的,你很难系统的把它拼装到一起。
还有一个问题,你无法去搜索那些你不知道的东西,所以有一个人系统的带领你一起走,事情就变得很简单了。
总结
网工们,现在的我们正处于技术变革的过渡阶段,一方面大家仍然舒适于传统的网络技术区域,另外一方面世界正朝着新的技术进发,运维自动化,SDN,虚拟化等技术层出不穷。
你可以选择多带几把刀(传统网络技能),或者带上一支枪即可(编程技能)。
选择权在你。
原文地址:http://blog.51cto.com/gingerbeer/2162956