和大家聊一聊,什么是工程师成长路上的最大绊脚石

前端下午茶

共 2532字,需浏览 6分钟

 ·

2020-09-30 00:35

从一道面试题说起


关于成长和思考的话题,我们先以一个很常见的面试题来说起,“请谈谈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源码为例,如果阅读的同时进行总结输出,就能在工作或面试中对自己整理思考过的东西侃侃而谈,甚至还能说出其中实现不够优雅的地方,自己有什么更好的方式。


结语


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

常思考,明天会更好!

最后



如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个小忙:

  1. 点个「在看」,让更多的人也能看到这篇内容(喜欢不点在看,都是耍流氓 -_-)

  2. 欢迎加我微信「qianyu443033099」拉你进技术群,长期交流学习...

  3. 关注公众号「前端下午茶」,持续为你推送精选好文,也可以加我为好友,随时聊骚。


点个在看支持我吧,转发就更好了



浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报