工程师的自我突破

前言

第一次写非技术分享的话题,而促使我提笔的动力源自去巴黎参加Openstack Kilo Design Summit大会之行,因为我从外国工程师的身上深深感受到了他们对于技术的执着。在本文中,我想探讨的是如何实现工程师的自我突破,因为初入茅庐的工程师更关心的是如何从一个菜鸟成长为某个领域的专家。那么这个关键的突破点在哪?

Emilien的故事

故事从一年前说起,我正在参与Puppet-Openstack社区开发和代码审查,来了一位名叫Emilien Macchi的新面孔,他持续地向社区提交了大量高质量的patch,我开始关注他,了解到他是eNovance公司(年初被RedHat收购)的一名Openstack开发工程师。他非常积极主动,我和他在Gerrit和IRC上有过许多交流。后来他加了我的Linkedin,于是我随意瞄了一眼他的profile,第一印象是惊讶:

  1. 翔实的简历:从他的个人经历介绍中,任何人都可以迅速了解他从07年到14年专业上的经历,大学上过的课程,实习经历,工作过的公司等等所有和专业技能相关的经历,参与过的项目,拥有的证书,以及同事和上司对他工作上的评价一一具备;
  2. 最让我吃惊的是,这哥们的先前工作经验是做网络设备维护的,有一堆网络相关的证书。

他是在12年底才开始接触Openstack,13年开始专注Puppet和Openstack相关的自动化部署工作。我记得在HongKong Design Summit上,他并没有参与太多的讨论,而在时隔一年后,在Paris的Design Summit上,他不仅主持会议的Agenda,更重要的是他在社区做出了很多重量级的贡献,虽然他的语速很轻缓,但他的发言却变得掷地有声。

一个完全没有Openstack项目经验,一个完全没有Python和Puppet语言基础的网络工程师如何在这么短的时间内实现自我突破?

会议当天刚好是他生日,会后我送给他一个从国内带去的小礼物,我好奇地问他:Hey, How do you make it ?

他腼腆地对我笑:I write puppet codes except eating and sleeping.

Wow.  我和边上的人都在惊叹。

他走后,我站在法国国际会议中心的Room 101门口思考了好久。

故事到此就结束了,细节可能不止这些,但这并不是本文的重点。我想就此去谈谈工程师如何去摆脱固定思维的束缚,突破自我。

图1:  Emilien Macchi在主持Puppet-Openstack Kilo Design Summit

态度决定一切

有句老话叫作:态度决定一切,你的态度如何,在一定程度上已决定你是失败还是成功。我觉得这点在做技术时体现得淋漓尽致,就以Openstack项目为例,在其中发现一个bug,其实不是难事。那么在发现某个Openstack服务的bug时,不同的工程师有着不同的态度:有的人随意Google一下找到解决方法然后接着干活,有的人尝试阅读源码后去自行修复bug,有的人会把写好的bugfix尝试推送到社区的upstream去。我们都会以工作太忙为理由,只以问题的解决作为目的驱动,从不去细究问题的源头。因此,这就导致了若干年后,有的工程师还只在原地踏步,有的已经不仅深入掌握源码,还能快速地做二次开发,还有的人不仅养成了良好的代码风格,还能积极地参与到upstream的开发中去。

记得在刚进入Sina云计算部门的时候,团队协作平台的副标题是28号加粗的一行文字:Develop is not easy。虽然不知道是哪位大牛写的,直到现在我仍然记忆犹新。Develop不光狭义地指开发,而是囊括了所有的技术岗位,我们要时刻清晰地认识到把事情做好并非易事。这里不仅指技术本身,还涉及许多相关的细节,这些细节常常被多数工程师忽略,而正是这些细节才能体现出一个工程师的闪光点。

我常使用业务素质一词来评论工程师:这个工程师的业务素质很高,指的是他不仅在专业技能上出类拔萃,更重要的是在做事上非常认真,事无巨细,小到代码格式,注释,变量名称,代码提交信息,文档等每个细节都能体现出认真两字有多么难得可贵。凡是做过技术的朋友应该都会有所共鸣,并且从脑海中立马浮现出那些闪闪发光的人名来。

保持努力

我不想在努力这一点上举例来说明努力是多重要的因素,因为我们从小就开始灌输努力的重要性。我只想强调在正确技术突破的道路上,你必须不停地更新自己的知识和技能,才能越走越远。

我认识的另一位朋友,社区核心开发者,我询问他圣诞节打算去哪里过,他给我的回答是:I‘m not going anywhere, just writing codes at home. 所以,那些外国工程师之所以如此牛逼,并非他们生来如此,而是他们的不懈努力。

所以请一定要做到保持这份干劲,并且时不时买些心灵鸡汤激励一下自己,或者按老罗所说:恶心一下自己,保持大脑亢奋。现在我脑子里只要一想到Emilien的那句“I write puppet codes except eating and sleeping“,就开始失眠,这鸡血的剂量使得我的生物钟又延时了一个小时。

充满热情

在我认识的技术人中,做得出色的人大都有一个相同特点:富有激情,他们总以一种积极主动的态度去对待生活和工作。我相信所有刚入IT行业的同学们都是满怀对于未来的憧憬,只是这种弥足珍贵的热量很容易被许多外界的负面因素慢慢磨灭:工作单调乏味,生活压力太大…但不要因此就把你的热情埋藏起来,一旦你习惯了埋藏,你将是一个了无生气的人。如果你失去了对于追逐技术的热枕,那么很难在技术的道路上有所突破。激情,在很多时候,往往能点燃我们创新的本能。有了激情就有了不竭的动力,你的内心同时也会变化,越发有信心,别人也会逐渐认识到你与众不同的价值。

善于沟通

工程师们常常把精力放在编码上,而很少去关注自己沟通能力的培养。我曾遇到过一些大牛,有的不屑写文档,有的不会用git等团队协作工具,还有的连话都说不清。不能否认他们在自己各自的领域中耕耘得很深,但是在分工如此细化的时代,大多数项目都需要团队协作才能完成,因此沟通是无法避免的:产品经理和设计师之间的沟通,后端组和前端组之间的沟通,研发部和运维部之间的沟通…为什么有时候对方听不明白我们想表达的意思,导致跨部门的工作寸步难行。

TED上有个有趣的演讲题目叫作:怎么说话人们才听,声音学专家朱利安给我们上了生动的一课,列举了为什么没人愿意听我们说话。因此,我们在与别人打交道的时候,我们必须明白对方在想什么,也要让对方明白我们想表达什么。

除此之外,对于工程师而言,沟通能力并不局限在语言沟通上,还有在协同开发时的沟通,例如对于使用git做版本控制的项目,若是没有掌握好git工作流,沟通将异常困难。代码审查系统上的交互,也是沟通方式的一种,你需要理解他人给你的意见,你能够向他人表达清楚你的意思。

了解自己,把握方向

在大学课堂里,工作面试和入职培训时常常能听到一个词:职业规划,就是对职业生涯乃至人生进行持续的系统的计划过程,它包括职业定位、目标设定、通道设计三部分内容。职业定位主要是指:一是确定你是谁,你适合做什么工作;二是告诉别人你是谁,你擅长做什么工作。人生是应该有一个规划,这样可以对于未来设立一个期望,明白前进的方向。但这类职业规范往往过犹不及,觊觎通过把自己的人生画在纸上,然后按图施工的想法是不切实际的。仔细想想你真的能在刚踏入社会时就能真正了解你擅长做什么工作,适合做什么工作?

乔帮主说过一句话:“如果你了解自己,能够明白地做自己,职业规划如同虚设”。所以,你只要清楚自己想要什么,然后朝着这个目标去做自己想做的事,就可以了,为什么要给人生设限?何不尝试一下跨界?

前文中我谈到了一个网络工程师的华丽转身,接着聊一聊我们运维团队从UnitedStack成立伊始到现在发生的故事。

从理想国际大厦走出来开始创业的第一天,一个现实摆在了我们面前:采购服务器和交换机,选择IDC。在新浪,服务器选型有专门的部门做,采购硬件有专门的部门做,交换机配置有相应的部门做,服务器上架有相应的部门去做,我们只有基础运维和业务运维的经验,原先所擅长的只是一个狭小的领域…

看来唯有自己动手,才能丰衣足食,我们着手开始调研服务器的选型,交换机的配置,IDC的选择。通过不断的摸索,现在我们制定了一套成熟的机制去根据不同业务来选型服务器,形成了一套完善的网络拓扑去连接分布在全国多个机房的公有云和托管云集群,也有了稳定的IDC合作伙伴。

许多朋友可能还记得UnitedStack去年发布的UOS 1.0发行版,其后端代码完全由运维组编写。当时,我们转身从运维变成研发,调研了主流的StackOps, Fuel Web,根据产品设计的需求,开发了一套由Python+Puppet编写的后端代码,实现了Openstack集群的自动化部署;内部的持续集成&持续发布系统也全由运维组负责,我们根据研发工程师的实际需求对持续集成工具链做了多次整合以匹配整个研发体系的日常工作;14年初公司业务开始涉足公有云和托管云,我们和研发部门共同设计了公有云,托管云的整体架构。由于业务量的急剧上升,我们着手开发了资产管理,节点管理等多套运维平台。同时,和一般的运维团队不同,我们还负责虚拟服务器的镜像自动化制作和维护,参与Openstack最庞大的计算项目Nova的定制开发并一直保持与社区upstream同步,参与puppet-openstack社区的开发,一直在向社区贡献源码。

因为我们清楚所做的一切都是为了能把“事”做成,因此做什么并不重要。而且通过这两年的磨练,我们在技术上最大的收获在于大家的视野不再局限于各自的一亩三分地里,在面对新问题时,可以站在不同的角度去思考,这种在大公司里无法获得的经验就显得弥足珍贵。因此了解你自己,明白你自己想要什么,然后把握好方向。

全面 vs. 专精

以部署系统为例,早先的部署系统完全为公有云打造,要求做到细粒度控制,但操作起来比较繁琐;而现在要求同时管理公有云和数量庞大的托管云集群,并且每家在架构上都会有所差异,这就要求部署逻辑解耦,灵活可变,支持不同环境,不同拓扑,不同软件栈,还要解放实施人员,减少部署时间。

但由于每个人的精力都被分散到多个领域,因此很难集中精力把部署系统做好,于是我们开始从多面手向专一转变。也正是因为这两年我们什么都做,猛然一回头大家有些迷茫:自己什么都懂,但又什么都做不精。那么问题来了,学技术到底是…到底是精通一种还是全面发展好?

Take it easy,在技术的道路上看似会有两种截然不同的方向:横向扩展和纵向深入。横向的犹如瑞士军刀,十八般武艺样样精通;纵向的是削铁如泥的倚天剑,倚天不出,谁与争锋。横向扩展可以拓宽你的视野,让你不再局限在某一种技术中,并也给你的未来多了一种可能;而纵向扩展,可以使用你深刻理解一项技术的细节,让你静下来思考问题的本质,你可能会惊讶地发现某些原理都是相通的。这两个方向都没有对与错,发展到一定程度都会相互溶合,就好比中国佛家禅修的南顿北渐,其实到了最后,渐悟与顿悟是一样的,顿由渐中来。

不过哪个在前,哪个在后,我个人认为还是先做到对某一个领域有较深的理解和掌握后,进而去学习其他方向,这个道理就如同精通一门语言的程序员再去学习其他语言时就能驾轻熟路。

关于这两点的结合,我有很深的印象,如上面提到的情况,刚开始的时候,运维相关的事情繁杂,每个人都得是多面手,要去cover多个领域,也因为此只能把每件事情做好而无法做精。在集群规模不断扩大和业务量的增长后,原先不是问题的地方开始暴露出来,这就有精通该领域的工程师来独挡一面。这是一个自我学习,自我改变的过程,也是自我突破的关键。

结尾

在互联网的浪潮下,产品在快速地推陈出新,技术在不停地推陈出新,在这种大环境下,人心趋于浮躁,往往很难静下心专心做技术,唯有耐得住寂寞,才守得住繁华。

希望诸位在面对机遇和挑战时,能够发掘自身的瓶颈,实现自我的突破。

时间: 2024-09-28 11:15:26

工程师的自我突破的相关文章

《阿里工程师的自我修养》公开10位阿里大牛解决问题的思维方式

https://developer.aliyun.com/article/718700?spm=a2c6h.12873581.0.0.7f3660d2yMlUWp&groupCode=tech_library 点击免费下载<阿里工程师的自我修养> 查理芒格说:“掌握一定数量的思维模型,能解决这世上90%的问题.” 今天,阿里技术公开10位阿里大牛解决问题的思维方式.如何解决90%的问题?你可以在阿里资深专家职业生涯的真切感悟中,找到应对危机的最佳方法.<阿里工程师的自我修养>

后ARM时代,嵌入式工程师的自我修养

1嵌入式学习的一些概念理解误区 很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板.买一块开发板,然后在上面"移植"u-boot.Linux内核,再使用busybox制作一个根文件系统,大功告成!觉得可以出去找工作了.这其实是有一定片面性的:首先ARM是个CPU架构,跟PC上的X86架构一样,你见过有人在Windows下面学习C/C++编程.MFC编程.网络编程.互联网编程,说自己学习X86的吗?当然,也不可否认,嵌入式平台的多样性.硬件的可定制性导致我们在嵌入式平台上开发

2018 年过去了一半,iOS 工程师如何自我提高。上篇

如果从 13 年移动客户端大火开始算起,至今已经有五个年头了.现在移动端的形势也不需要太多的废话来描述,一句话总结就是:"浪潮退去,谁在裸泳一看就清楚."我希望借助这篇文章来聊聊在我心目中,移动互联网下一个五年的趋势和机会,以及我们 iOS 工程师能做哪些准备,实现自我提高.本文主观性的看法比较多,文笔也比较激进,仅供参考. 我们都知道价格会受到供需的影响,如果某项技能在市场上紧缺,那么掌握这门技能的工作者工资就会相对高一些,比如 14 年前前后能写好 UITableView 就能找到

本科生憧憬人工智能工程师 呼市达内突破瓶颈薪高就业

由于人工智能时代的来临,加之数据分析的广泛应用,Python语言火爆全球.相比于其他语言,Python开发效率更高.运行速度更快.功能更强大!有人说:Python可能是所有语言里最符合成为人类对编程期待的语言.目前,中国Python人才缺口高达40万,由于人才稀缺度较高,工程师的薪资普遍更高,待遇涨幅也会超过其他岗位,python工资按工作经验统计,1-2年平均工资¥1.2-1.5万元,3-5年¥1.5-2万,8-10年¥2.5-3万元,10年以上工资¥3.5-6万元.小王是一名普通本科生,在来

《web全栈工程师的自我修养》阅读笔记

在买之前以为这本书是教你怎么去做一个web全栈工程师,以及介绍需要掌握的哪些技术的书,然而看的过程中才发现,是一本方法论的书.读起来的感觉有点像红衣教主的<我的互联网方法论>,以一些自己的经历和感悟来阐述web全栈工程师需要具备哪些素质,而不仅仅是需要哪些技术.这算是我买的书中看的最快的一本书. 在阅读这本书之前,我对全栈工程师的理解还停留在node阶段,随着node在服务端的风生水起,有一段时间会认为使用nodejs作为服务端开发,前后端统一使用js开发,便是所谓的全栈开发,比较流行的技术栈

《web全栈工程师的自我修养》 读书笔记

作者:余果. 人民邮电出版社.2015年9月第1版. 值得轻快一读,另外此书里推荐的书籍很好.Full-Stack Engineer! 一.如何成为全栈工程师 1 定义:全栈工程师是指,一个能处理数据库.服务器.系统工程和客户端的所有工作的工程师.根据项目不同,可能分为移动栈.web栈,或原生应用程序栈. 2 研发流水线 产品经理 >交互设计>>视觉设计>>前端开发/后台开发>>测试>>发布 3 代表性的全栈框架 LAMP.MEAN 4 建议:先精后广

网络工程师的自我修养

一分钱一分货 1. 这个年代就是拿多少钱,做多少事. 对于已经工作的同学来说,挣多少钱做多少事是正常的.一分钱一分货也是同一个道理, 那么做着基础简单又没多少责任的事情,你能指望有多少钱? 网工这个行业,是无论你多菜鸟都能拿到一个对应的工资,你现在NA水平都不到,但是你可以去IDC机房维护,一个月拿着3~5K工资.你现在工作十年的IE,技术大牛轻松年薪40W.网络这个行业,不会因为你是菜鸟而苦恼找不到工作. 反观编程,就没有什么低端与高端之说,要是混的不好,你只能是帮同事订订外卖,和前台眉来眼去

一个android 工程师的自我修炼

如果当你快30岁,依然还在一线苦逼的coding 代码,那么,你和我一样,是该放下手中的工作好好想想:未来的职业生涯该如何走: 1客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍. 2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来. 3.要有自己的知识库,可以是一个工具类,把写过的,看过的好的代码放进去,也可以是一个笔记本软件.因为只有放在知识库里的东西,才是你最重要的财富. 4.如果你想做自由职业者,你需要学英语,因为在国外的盈利

《Web全栈工程师的自我修养》读书笔记(转载)

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/5243181.html [正文] 豆瓣链接:https://book.douban.com/subject/26598045/ [目录] 01 什么是全栈工程师 02 如何成为全栈工程师 03 从学生到工程师 04 野生程序员的故事 05 工程师事业指南 06 全栈工程师眼中的HTTP 07 高性能