标签:利用 系统 解决 等等 经历 而不是 并行 成熟 养成
工程师成长之路:工作1-3年工程师如何突破瓶颈期?导读:高可用架构分享及传播在架构领域具有典型意义的文章,包括技术人成长的思考,本文由雷果国向高可用架构投稿,介绍其多年技术成长之路的感悟。
雷果国,2014 年 11 月加入 nice,负责服务端在线业务,擅长 PHP,曾自发翻译过《Extending and Embedding PHP》一书及 PHP 官方手册部分模块。喜欢利用所学构建自己的工具链,思考系统和架构设计方面的问题。
2013 年 03 月 02 日,我写了一篇博客『从 1.5K 到 18K,一个程序员的 5 年成长之路』 ①(见本段末尾参考链接① ,下同),被 CSDN 全站推荐。后来 CSDN 社区之星栏目对我做了专访 ②。
因为当年 CSDN 具有较大影响力,所以这篇文章及专访比较热门,有非常多评论,截止目前(2016.09.28)两个链接下,总共有 1262 条评论。
有很多支持的朋友,有很多反对的朋友,也有很多只看到“薪资”的朋友,我并没有做过正面回应,因为我相信,那篇文章一定会帮助到一些人,使他们找到正确的方向。
现在我工作满 7 年,原本计划是在工作满 10 年,有更多积累之后再来写一些能够帮助刚入行年轻工程师的东西。不过,在今年 04 月 29 日和 09 月 08 日,我在 CSDN 收到了两条感谢私信。
三年前的这篇文章,帮助两位年轻工程师坚定了在这一行继续努力的信念,三年后的他们有所成,建立起了属于自己的自信,给我发私信表示感谢。并且从其中一位的博客中,看到了非常正面的价值观③,我深受感触。
正好最近一年多时间中,我主要的工作精力放在团队构建上,更多的从工程师成长角度思考这个问题。在这方面有一些收获,所以就想把这方面的感悟分享出来,希望可以帮助到更多的人。
PS. 我觉得这篇文章也应该适合其他职业的职业发展参考,但因为不了解其他职业,所以仅以工程师职业发展命题。
参考链接:
在我看来,一个工程师的养成可以分为四个阶段:
我自己目前徘徊在发展期,能看到的问题有限。另一方面,俗话说“三岁看大,七岁看老”,很大程度上,职业发展的前面两个阶段,已经决定了未来的职业发展路径。
所以这篇文章,主要针对新人期/成熟期的一些问题,进行阐述分析。
在我接触过的工程师中,这是一个非常普遍的现象。并且这个现象多发于工作 3 年以上的同学身上。
这张图,是我理解的职业发展模型。
我认为造成这种现象,主要有两方面原因:
首先,没有及时从“积累具体知识”调整到“提升抽象思维”
回到职业发展的四个阶段,看看各阶段职级都在做什么样的事情:
很容易看出,随着职业的发展,需要具备的基本素质越来越抽象。
结合上面的职业发展模型图,一个人的成长,分为两个方向:
我认为这就是造成这个现象的第一个关键点。
很多人都只关注了同级别的知识积累,而一个人能 Hold 的同级别知识总量是有限的。
所以,工作两三年后,相关的东西就积累的差不多了,你很难找到一些自己“不会”的东西。
那么问题就来了:
建议:提前用下一个职业等级的思路(或者说超越当下的视角)去思考问题。
其次,没有及时从“被动成长”调整到“主动成长”
还是从职业发展的四个阶段来看,每个阶段是什么在驱动你做事情?
可以看出,随着职业发展,驱动力越来越收敛到自身。
所以从这个角度讲,一个人要想获得更好的职业发展,一定要很好的去培养自己的主动性,一方面主动获取成长,另一方面,还要在公司中主动的承担更多的问题,这样才能够获取到更多思考的机会。
上面所提的现象,如果不注意去克服,就很容易走向平庸。
在上面的分析中,有一些建议,这里要分享的是 3 点具体的总结。
我对学习方法有一个抽象的总结,是在阅读了『如何阅读一本书』这本书之后,在一次和团队成员的 One-On-One 中总结出来的。
我认为,知识的传递和网络通信模型有异曲同工之妙。
从知识的分享者角度来看,比如,一本结构良好的书,应该有几个明确的、抽象的基本观点。 其他所有的内容,都是围绕着这些基本观点,一层一层将问题具象化,帮助读者逐层的理解最终那几个抽象的观点。
(Ps. 并不适用所有书籍,比如小说类书籍,可能抽象程度更高,更加隐晦)
从读者角度来看,一定是先理解了那些具体的实例,然后才能逐步 Get 到原作者想要表达的抽象观点。 通过这个过程,吸取原作者分享的知识。
所以,在技术领域的学习方面,我觉得有两点特别关键:
从工作的角度去看一个问题,我认为分 3 个阶段:
我见过相当一部分工程师,其实只有“执行”这一个阶段。
拿到一个需求,草草看几眼 MRD,然后就开始编码,这是对自己不负责,对公司不负责,对其他同事不负责。
对一个系统的设计和实现之间的权衡,我有这样一个观点:
所以,我认为,作为一名优秀的工程师,接到一份需求的时候,首先应该做的就是认真阅读需求,从产品角度思考这个需求背后的逻辑。只有真正理解一个需求之后,才能够考虑到未来 1 - 3 年可能存在的变数,才可能设计出符合 6-12 月业务发展所需的架构。
再来看经常被忽视的“完成需求”阶段。 通常,工程师在整个项目的研发过程中,只是其中一环,要使得整个流程能够顺畅的运转起来,每一环就必须都及时的通知到下一个环节。
上面这是站在公司角度考虑的。
另一方面,站在个人角度而言。对自己做过的事情,复盘总结往往是最佳的成长机会。因为当你完成一件事情之后,你就对事情的全盘有了了解。这个时候,回过头去看这件事情,就是现成的“站在更高视角看问题”的机会。
技能 = 技术 + 能力。
技术,是由你的知识体系外加你的经验构成的。它能够通过量的积累直接获得提升。不过它只能用来解决已知的问题。
能力,是由你的抽象思维能力,你已有的方法论构成的。它不能直接通过量的积累获得。一方面,它会由天生的智商情商等决定一部分;另一方面,要在量化积累的基础上,经过深度的思考,找寻问题的本质,引发质变才能获得。能力可以被用来解决未知问题。
技术和能力是相辅相成的。分享这一点,是因为在我看来,如果能够认清两者的区别,对两方面的应用和提升就会更加得心应手。
下面列举三个在我平时和团队成员 One-On-One 过程中,经常碰到的软素质方面的问题,以及我认为比较好的解决方案,供参考。
有没有碰到过你的 Leader 在你上一件事情没有完成的时候,给你就分配了下一件事情的情况?同时又来了几个来自其他同事的需求。
在新人期的工程师,主动性方面通常并不会差,他们希望快点把所有问题解决,但又无法同时都解决掉。
所以,“好烦啊”,焦虑感就产生了。
一般而言,很多新人都会使用下面两种方式之一进行处理:
哪种方式好呢? 都不好 !
首选方案,是建议大家查阅时间管理相关资料,找到适合自己的解决方案。
下面是我建议的一种解决方案(GTD 工作法):
看看上面方法的核心是什么? 让所有的事情,掌握在你的 TODO List 中,对它们形成一种明确的管理。 当一切都了然于胸的时候,你自然知道该怎么为这些事情分配自己的时间片。
上一个问题的建议方案中提到,我们需要找到最重要的事情。那如何找到最重要的事情呢?
从我以往的经验来看,在新人期和成熟期碰到的事情中,只需要问一个问题,就能够判断大部分事情是否重要。
“如果这件事现在不做,会有什么后果?”
比如:
不过,通常我们得到的答案都是“没什么影响”。
新人很容易陷入无法判断优先级的困境,这是人类天性的弱点。 我们会对未知产生恐惧,进而产生焦虑,进入一个恶性的循环状态。
解除这种状态的思路,就是让未知变成已知。
经理安排下来一个项目,询问排期,这个时候,新人很容易慌乱,不知道该如何评估。
这个问题的产生,和上面两个问题,是一样的。因为对新人而言,并不了解一个项目到底需要多少时间才能完成。
那就束手无策了吗?
试想,“读完『钢铁是怎样炼成的』需要多少时间?”,面对这个问题,你怎么解答?
思路是不是这样?
软件开发的排期预估,是同样的思想。
大事化小。
大事是不明确的,无法直接给出工作量预估,那么把它拆解到你能预估的小的事情就可以了。
同时,在你评估过工作量的事情,最终完成之后,去复盘,看自己的评估是否准确,如果有偏差,思考问题出在哪里,长此以往,一些大事你也就可以直接评估出工作量了。
通过上面三个问题,可以看出一些共性,三个问题,都是通过把抽象的、不明确的事务,拆分成具体的、明确的事务,使我们心里更加有谱。
如果你有这三个问题之外的其他问题,不妨也试试这种思路。
成熟期,是工程师成长中的一个关键时期,迈过去这个坎儿,更多需要的是精神层面的东西。所以这里提到的成熟期的三个常见问题,都和“心”有关。
如何保持高速成长?
首先,请再思考下“现象:成长越来越慢”中,提到的造成这个现象的原因:
仔细研究这两个原因,都可以看做是在没有挑战性的状态,形成了舒适区造成的。
对大部分工程师而言,参加工作是第一次正式的和社会接触,基本正式脱离了“学习压力”所带来的约束。而新人期又可以“轻松的”(主要指心理压力方面)通过公司获取被动性的成长。
温水煮青蛙。大部分人都会被煮熟的。
请思考一个问题:
请再思考一个问题:
进入成熟期后,很快工作就很少,甚至不能给你的成长产生驱动力了。
剩下的就得靠自己。告诉自己两件事:“主动提升”,“主动思考下一职级的问题”。
我想通过这篇文章传递的核心价值就是这一点,希望能帮助一些工程师(尤其工作 3 年内的)意识到舒适区,并跳出舒适区。
这个问题源自一周前和一位团队成员的沟通。
我仔细的思考了自信的来源,然后我认为:自信是成就感驱动的。
成就感来自哪里?我认为可以从内部/外部两个角度去看:
自己的技术或能力得到提升,让自己觉得自己牛逼
将技术或能力,应用到实际项目中,让自己相信自己真牛逼
外部:来自别人的认可
每个人因为性格的不同,成就感获取的主要渠道可能不尽相同,但结合自己的情况,找到适合自己的成就感获取渠道,通过成就感建立自信,是一种有效的方法。
不过,自信和自大一线之隔,谨慎。
现实的诱惑,也是容易让人迷茫的一个点,不过如果对一些基本面有正确的认识,可以帮助我们做出更加合理的决定。
首先,一个人的薪资,是由专业能力、软素质、行业经验、公司内经验、稀缺度、人脉、运气等等方方面面的因素共同决定的。
千万不要因为薪资的攀比而鲁莽的跳槽。
跳槽的确会大概率增加薪资,因为总有一些公司是到非常着急用人的时候才去招人的,他们被迫给出更高的工资;同时你上一家公司的薪水,会给你提供一定的背书。所以如果沟通表达能力好,理论上短期是可以通过跳槽,拿到超出当前能力的薪资水平。
但是,频繁跳槽会阻碍工程师的长线发展,一般而言,公司是不会把核心职位交给刚入职半年一年的人,如果你频繁跳槽,就注定长期处于一线。现在的市场行情下,天花板也就是 20 多 K 不超过 30K。
且不说钱的天花板,关键在于长期处于一线,你的斗志就会被消磨殆尽,从而缩短你的职业生涯。
因而,从长线发展来看,通过跳槽加薪,并不是一种可取的选择。
如果你想要高薪,首先让自己变得优秀,那么就应该静下心来,在一家公司,给自己定几个目标,达成之后再去考虑离开的事情,这样对大家都好。
成熟期是整个职业生涯中最关键的时期,快的可能一两年就能走过去;慢的,可能整个职业生涯都定格在成熟期。
从上面分析中可以看到,这些问题最终都和“心”相关。
要想高速成长,就得克服掉温水中的舒适。
要想提高自信,还得思考成就感获取渠道这么虚头巴脑的问题。
干这么多,还不能跳槽加薪迎娶白富美。
所以要想迈过去这个坎儿,必须有一颗非常强大的内心。
最后希望看到这篇分享的同学们,能够帮助你们延长奋斗的激情,在这条路上,走得更远。
最后的最后,感谢和我一起进行各种管理实践的我的团队。
感谢在我管理能力发展中给我帮助的 Alex, 瀚哥,海仪姐,宁姐。
感谢一如既往支持我的家人。
nice 是一家做图片社交的移动互联网公司。
这里有高大上的工作环境,有牛逼的团队。
我们需要牛逼的你。
以下职位欢迎推荐或自荐 leiguoguo@oneniceapp.com
算法工程师:
http://www.lagou.com/center/job_2385728.html
UI 视觉设计师:
http://www.lagou.com/center/job_2224871.html
高级 Android 工程师:
http://www.lagou.com/center/job_2119160.html
基础平台工程师:
http://www.lagou.com/center/job_2275182.html
(点击文章标题可直接打开)
对雷果国分享的本篇文章的任何感悟,欢迎在文章后面留言讨论。技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。转载请注明来自高可用架构「ArchNotes」微信公众号及包含以下二维码。
长按二维码 关注「高可用架构」公众号
年底重磅:高可用架构主办 GIAC 全球互联网架构大会,推动技术架构未来,点击阅读原文进入活动报名页面。
标签:利用 系统 解决 等等 经历 而不是 并行 成熟 养成
原文地址:https://blog.51cto.com/14977574/2547423