新闻资讯

新闻资讯 行业动态

什么是工程师成长路上的最大绊脚石

编辑:008     时间:2020-02-22

从一道面试题说起

关于成长和思考的话题,我们先以一个很常见的面试题来说起,“请谈谈vue的双向绑定的原理是什么?”。

网上很多博客,很多面经,给出了一个比较“标准”的答案:

vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

这也是面试中有绝大部分同学给出的答案,当然还会有些同学很优秀,能把整个数据驱动视图的过程说的很详细。

但是即使说的再好再详细,最多也只能得一半的分数。为什么呢? 因为问题是双向绑定的原理,只要略加思考,就应该知道此问题应该从两个方面来回答:

  1. Model变化如何驱动View的更新
  2. View的更新后如何使数据也进行更新。

而上面的答案,只回答了Model变化驱动View更新的过程,是不完整的。

为什么这样一个很明显存在问题的答案,会频繁的出现呢?主要是有很多同学缺少思考,遇到问题直接百度或gogole搜索,或是直接问其他人,缺少自己思考的过程。

缺少思考的表现有哪些

同样一个需求,有些人,可能拿到需求后就直接去想办法实现了。 而有的人,会首先考虑这个需求是否有做的必要,这样交互是否合理,是否有更好的方式来完成同样的目的而花费更小的代价,然后去和产品经理进行沟通。

在开发时,有些人,只是完成了开发任务。而有的人,却能够在开发过程中封装出几个通用组件,整理出一些通用的方法,甚至整理出一套适用自己业务的脚手架。

除此之外,还有很多缺少思考的例子,比如:

  1. 实现一个功能,只要能实现就好,而不考虑是否有更优雅的方案。
  2. 只完成需求,需求稍有变更,代码就没法直接支持。
  3. 只能解决一个问题,而不是去想办法解决这一类问题。
  4. 每天C+V大法,不考虑是否应该封装成通用的方法或组件。
  5. 有些事情是否可以通过工具解决,而非人工操作。
  6. 只知道完成任务,而不去发现提出问题,遇到问题后不去复盘。
  7. 问及下半年或下个月计划时,自己也不清楚

能否做好上面这些,也可以作为区分初级和高级工程师的一个衡量标准。不过,并不是只有高级工程师才需要思考。

善于思考总结的人,可能工作2-3年,就成了高级工程师,而有些人可能工作了7-8年,也还是在原地踏步,所以并不是所有时间上的增长都能带来经验和能力上的成长。

我们并不是流水线上的工人,不能去做编写代码的“机器”或“码农”,而是应该做一个具备能独立思考和解决问题能力的“工程师”。

思考不出东西怎么办

之前有公众号上的同学加我聊过关于成长的事,他也知道多思考会对成长有帮助,但是他很苦恼,自己就是没有别人想的多,代码上设计的总是不够合理,开会时别人总是侃侃而谈自己却不知道说什么。

当我们脑子里的东西比较少的时候,确实很难意识到技术设计上存在的问题,或者有什么好的点子,这时,可以通过以下途径来提高自己。

向优秀的人学习

阅读优秀的人的代码,观察他们是怎么设计代码的,而你又是怎么做的,有什么可借鉴的地方。 和你认为的大牛交流,交流中,可能很多你困惑的地方都会迎刃而解。

更好的办法是去向优秀的人请教问题,当然这个问题一定是经过深度思考后,有了自己一定的理解,但还是有些困惑的时候。请教问题时,最重要的不是关注结论本身,而是看一下对方是如何思考的。这也是为什么有些人问我问题时,我不会去具体帮他解决,而是去提供一个解决的思路,授人以鱼不如授人以渔。

这里也谈简单聊一下对大公司还是小公司的选择,大公司技术更成熟,能了解更多的东西,身边的大牛也会很多,可以方便向他们学习,各项规范,流程也比较完善。而小公司,什么都不完善,但却能提供一个更广阔的空间,可以自己做更多的事情。

当自己技术和见识还没有达到一定的水平时,尽可能的还是去一个大公司,大公司能够让你了解到规范的做法是怎样的,技术氛围也会更好,有更多的分享,有人会review你的代码,有更成熟的技术架构,有成熟的晋升机制,也会有人和你一起讨论你后续的规划,还有机会参与到团队的基础建设上。而如果一开始就进入了一家小的公司,可能每天都只专注于完成业务需求,并且一直这样下去,很可能自己做的很low却不自知。

当有一定能力的时候,去大公司还是小公司就看个人选择了,小公司会有最大化的发挥空间,可以做更多想做的事情,绽放出自己的光和热。

如果你身边没有牛人,也没有很好的技术氛围,那也是有办法向优秀的人学习的。
首先,可以到github上,看优秀开源项目的源码,好的代码是最好的老师,尤其是自己开发时遇到不知怎么设计更好时,从这些项目中可以Get到很多好的设计思想和思路。其次,可以通过各个平台,去认识一些技术牛人,向他们学习,探讨问题。

坚持总结输出

另外一个可以逼着自己去思考的方式,就是强迫自己进行总结输出。

比如学习了什么知识,那么一定要在项目中进行实践,如果是无法实践的,那就产出一个分享,或是输出一篇文章。

当我们在学习某些知识时,可以理解成是一个输入的过程,而只有将这些输入经过我们自己的思考总结,并产出自己的东西时,这才算是将所学的东西变成了自己的东西。无论是产出分享还是输出文章,都能够帮助我们有一个更深的认知和思考。

以阅读vue源码为例,如果阅读的同时进行总结输出,就能在工作或面试中对自己整理思考过的东西侃侃而谈,甚至还能说出其中实现不够优雅的地方,自己有什么更好的方式。

结语

不止技术需要我们去思考,如何沟通,如何协调工作都需要我们去学习和思考,甚至生活,理财等等,也需要我们思考和总结。



原文链接:https://juejin.im/post/5e11d01af265da5d515b0fe8
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐