一个前端工程师该有的心态

一、别光解决问题,想想究竟是为什么 

很多人埋头写 CSS 和 JavaScript 直到程序工作起来了,很多人都不会想到:“为什么你会在这里添加 float: left?”或者“这里的 overflow: hidden 是必要的吗?”,JavaScript 也是一样,总会在一个条件竞争的地方看到一个setTimeout,或者有些人无意中阻止了事件传播,却不知道它会影响到页面中其它的事件处理。当你遇到问题的时候,你只是解决当下的问题罢了。但是如果你永远不花时间理解问题的本源,你将一次又一次的面对相同的问题。 花一些时间找出为什么,这看上去费时费力,但是我保证它会节省你未来的时间。在完全理解整个系统之后,你就不需要总去猜测和论证了。 

二、学会预见未来的浏览器发展趋势 

前后端开发的一个主要区别在于后端代码通常都运行在完全由你掌控的环境下。前端相对来说不那么在你的掌控之中。不同用户的平台或设备是前端永恒的话题,你的代码需要优雅掌控这一切。

三、阅读规范文档 

浏览器有bug是很难避免的事,但是当同一份代码在两个不同浏览器渲染出来的效果不一样,人们总会不假思索地推测,那个‘广受好评’的浏览器是对的,而另外的就是错的。但是事实并不一定如此,当你的假设出现错误时,你选取的变通办法都会在未来遭遇问题。

一个就近的例子是 flex 元素的默认最小尺寸问题。根据规范的描述,flex元素初始化的 min-width 和 min-height 的值是 auto(而不是0),也就是说它们默认应该收缩到自己内容的最小尺寸。但是在过去长达8个月的时间里,只有FireFox 的实现是准确的。

如果你遇到了这个浏览器兼容性的问题并且发现 Chrome、IE、Opera、Safari 的效果相同而 Firefox 和它们不同时,你很可能会认为是Firefox 搞错了。事实上这种情况,很多我在自己Flexbugs 项目上报的问题都是这样的。而且这些解决方案的问题会在两周之后 Chrome 44 修复之后被体现出来。这遵循标准的解决方案相比,这些方案都伤害到了正确的规范行为。

当同一份代码在两个或者更多浏览器的渲染结果不同时,你应该花些时间来确定哪个效果是正确的,并且以此为标准写代码。你的解决方案应该是对的未来友好的。

额外的,所谓“卓越”的前端工程师是时刻感受变化,在某项技术成为主流之前就去适应它的,甚至在为这样的技术做着贡献。如果你锻炼自己看到规范就能在浏览器支持它之前想象出它如何工作的,那么你将成为谈论并影响其规范开发的那群人。


四、阅读别人的代码

出于乐趣阅读别人的代码可能并不是你每周六晚上会想到的娱乐项目,但是这毫无疑问是你成为优秀工程师的最佳途径。自己独立解决问题绝对是个不错的方式,但是这不应该是你唯一的方式,因为它很快就会让你稳定在某个层次。阅读别人的代码会让你开阔思维,并且阅读和理解别人的代码也是团队协作或开源贡献必须具备的能力。

我着实认为很多公司在招聘新员工时犯的最大错误就是他们只评估应聘者从轮廓开始写新代码的能力。我几乎没有见过一场面试会要求应聘者阅读现有的代码,找出其中的问题,并修复它们。缺少这样的面试流程真是非常不好,因为你作为工程师的很多时间都花在了现有的代码的基础上增加或改变上面,而不是搭建新的东西。

五、与比你优秀的人一起工作

不论是自我学习还是自我工作,我们都面对一个问题:你并没有机会从比你聪明的家伙那里学到什么。没有人帮你 review 代码,页没有人与你碰撞灵感。我强烈建议,最起码在你的职业发展前期,你要在一个团队里工作,尤其是一个普遍比你聪明而且有经验的团队里工作。如果你最终会子啊你职业发展的某个阶段选择独立工作,一定要让自己投身在开源社区当中,保持对开源项目的活跃贡献,这会给你团队工作相同甚至更多的益处。

六、把你学到的东西都记录下来 

丝毫不逊色的是:你应该把你学到的东西记录下来。这样做有很多原因,但也许最重要的原因是它强迫你更好的理解这件事。如果你无法讲清楚它的工作原理,在整个过程中它会推动你自己把并不真正理解的东西弄清楚。很多情况下你根本意识不到自己还不理解它们——直到自己动手写的时候。写作、演讲、做demo 是强迫自己完全深入理解一件事的最佳方式,就算你写的东西没有人看,整个过程也会让你受益匪浅。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值