Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何成为一名卓越的前端工程师

如何成为一名卓越的前端工程师

作者头像
IMWeb前端团队
发布于 2019-12-04 05:17:57
发布于 2019-12-04 05:17:57
3420
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队

本文作者:IMWeb seagirl 原文出处:IMWeb社区 未经同意,禁止转载

本文摘自同行说用户“凌风”分享的文章,原文链接:http://jiongks.name/blog/how-to-become-a-great-front-end-engineer/,如涉及版权问题请及时联系小编!

译注:本文翻译自谷歌工程师 Philip Walton 的一篇博客。看过之后非常有感触,很多观点都是自己长期非常坚持和认同的,所以翻译出来分享给更多的前端同学!


最近我收到一封读者来信让我陷入了思考,信是这么写的:

Hi Philip,您是否介意我问,您是如何成为一名卓越 (great) 的前端工程师的?对此您有什么建议吗?

不得不承认,被问这样的问题,我很惊讶,因为我从来不觉得自己是个很卓越的前端工程师。甚至我入行的头几年时并不认为自己可以做好这一行。我只确定自己比自己想象中还才疏学浅,而且大家面试我的时候都不知道从何问起

话虽这么说,我到现在做得还算不错,而且成为了团队中有价值的一员。但我最终离开 (去寻求新的挑战——即我还不能够胜任的工作) 的时候,我经常会被要求招聘我的继任者。现在回看这些面试,我不禁感叹当我刚开始的时候自己在这方面的知识是多么的匮乏。我现在或许不会按照我自己的模型进行招聘,即便我个人的这种经历也有可能成功。

我在 web 领域工作越长时间,我就越意识到区分人才和顶尖人才的并不是他们的知识——而是他们思考问题的方式。很显然,知识在很多情况下是非常重要而且关键的——但是在一个快速发展的领域,你前进和获取知识的方式 (至少在相当长的一段时间里) 会比你已经掌握的知识显得更加重要。更重要的是:你是如何运用这些知识解决每天的问题的。

这里有许许多多的文章谈论你工作中需要的语言、框架、工具等等。我希望给一些不一样的建议。在这篇文章里,我想谈一谈一个前端工程师的心态,希望可以帮助大家找到通往卓越的道路。

别光解决问题,想想究竟发生了什么

很多人埋头写 CSS 和 JavaScript直到程序工作起来了,然后就去做别的事情了。我通过 code review 发现这种事经常发生。

我总会问大家:“为什么你会在这里添加float: left?”或者“这里的overflow: hidden是必要的吗?”,他们往往答道:“我也不知道,可是我一删掉它们,页面就乱套了。”

JavaScript也是一样,我总会在一个条件竞争的地方看到一个setTimeout,或者有些人无意中阻止了事件传播,却不知道它会影响到页面中其它的事件处理。

我发现很多情况下,当你遇到问题的时候,你只是解决当下的问题罢了。但是如果你永远不花时间理解问题的本源,你将一次又一次的面对相同的问题。

花一些时间找出为什么,这看上去费时费力,但是我保证它会节省你未来的时间。在完全理解整个系统之后,你就不需要总去猜测和论证了。

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

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

我记得自己 2011 年之前曾经阅读某主流 JavaScript框架的时候看到过下面这样的代码 (简化过的):

JavaScript:

1 varisIE6=!isIE7&&!isIE8&&!isIE9;

在这个例子中变量 IE6 为了判断 IE 浏览器版本是否是 6 或更低的版本。那么在 IE10 发布时,我们的程序判断还是会出问题。

我理解在真实世界特性检测并不 100% 工作,而且有的时候你不得不依赖有 bug 的特性或根据浏览器特性检测的错误设计白名单。但你为此做的每一件事都非常关键,因为你预见到了不再有 bug 的未来。

对于我们当中的很多人来说,我们今天写的代码都会比我们的工作周期要长。有些我写的代码已经过去 8 年多了还在产品线上运行。这让人很满足又很不安。

阅读规范文档

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

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

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

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

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

阅读别人的代码

出于乐趣阅读别人的代码可能并不是你每周六晚上会想到的娱乐项目,但是这毫无疑问是你成为优秀工程师的最佳途径。

自己独立解决问题绝对是个不错的方式,但是这不应该是你唯一的方式,因为它很快就会让你稳定在某个层次。阅读别人的代码会让你开阔思维,并且阅读和理解别人写的代码也是团队协作或开源贡献必须具备的能力。

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

与比你聪明的人一起工作

我印象中的很多前端开发者 (相比于全职工作来说) 都是自由职业者,有同类想法的后端开发者并没有那么多。可能是因为很多前端都是自学成才的而后端则多是学校里学出来的。

不论是自我学习还是自我工作,我们都面对一个问题:你并没有机会从比你聪明的家伙那里学到什么。没有人帮你 review 代码,也没有人与你碰撞灵感。

我强烈建议,最起码在你职业发展的前期,你要在一个团队里工作,尤其是一个普遍比你聪明而且有经验的团队里工作。

如果你最终会在你职业发展的某个阶段选择独立工作,一定要让自己投身在开源社区当中。保持对开源项目的活跃贡献,这会给你团队工作相同甚至更多的益处。

“造轮子”

造轮子在商业上是非常糟糕的,但是从学习的角度是非常好的。你可能很想把那些库和小工具直接从 npm 里拿下来用,但也可以想象一下你独立建造它们能够学到多少东西。

我知道有些人读到这里是特别不赞成的。别误会,我并没有说你不应该使用第三方代码。那些经过充分测试的库具有多年的测试用例积累和已知问题积累,使用它们绝对是非常明智的选择。

但在这里我想说的是如何从优秀到卓越。我觉得这个领域很多卓越的人都是我每天在用的非常流行的库的作者或维护者。

你可能不曾打造过自己的 JavaScript库也拥有一个成功的职业发展,但是你从不把自己手弄脏是几乎不可能淘到金子的。

在这一行大家普遍会问的一个问题是:我接下来应该做点什么?如果你没有试着学一个新的工具创建一个新的应用,那不妨试着重新造一个你喜欢的 JavaScript库或 CSS 框架。这样做的一个好消息是,在你遇到困难的时候,所有现成的库的源代码都会为你提供帮助。

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

最后,但丝毫不逊色的是,你应该把你学到的东西记录下来。这样做有很多原因,但也许最重要的原因是它强迫你更好的理解这件事。如果你无法讲清楚它的工作原理,在整个过程中它会推动你自己把并不真正理解的东西弄清楚。很多情况下你根本意识不到自己还不理解它们——直到自己动手写的时候。

根据我的经验,写作、演讲、做 demo 是强迫自己完全深入理解一件事的最佳方式。就算你写的东西没有人看,整个过程也会让你受益匪浅。

Footnotes:

Firefox implemented the spec change inversion 34on December 1, 2014. Chrome implemented it inversion 44on July 21, 2015, which means Opera will get it shortly. Edge shipped with this implemented on July 29, 2015. A Safari implementation appears to bein progress.

You can refer toFlexbug #1for a future-friendly, cross-browser workaround to this issue.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-02-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何成为一个伟大的前端工程师
如何成为一个伟大的前端工程师 最近,我的一个博客读者给我发了一封电子邮件。内容是: 你好,请问如何才能成为一个伟大的前端工程师? 你有什么好的建议吗? 这让我不由得陷入思考中。我不得不承认看到这个问题
用户1289394
2018/02/27
6920
如何成为一个伟大的前端工程师
教你从零基础开始做一名前端开发工程师
软件开发工程师在行业外大众的眼里, 或许是一个出众的职业,收入不低, 技术含量还挺高,就连我自己刚入行时也是这么认为的,但事实上并不确切。任何行业中,只要是在金字塔顶端的那部分,都是令人羡慕的,然而,那是需要天赋、机缘、心血、实力的。 但如果仅仅只是想入行,就没那么苛刻了, 尤其是软件开发行业,更容易。 做一件事情轻松还是坚难, 使用什么样的方法不可忽视,我以一个过来人的身份分析能如何正确快速的踏入软件开发这个行业。 许多人认为开发软件是一件只有聪明人才能做的事情, 这只是一个刻板印象,跟IT行业发展的速度
用户1608022
2018/04/11
9680
教你从零基础开始做一名前端开发工程师
web前端工程师入门须知,你全部了解吗?
划重点 一名合格的web前端工程师必须得掌握HTML、CSS和JavaScript。只懂其中一个或两个还不行,你必须对这三门语言都很熟悉。也不是说必须对这三门语言都非常精通,但你至少要能够运用它们完成大多数任务,而无需地频繁地寻求别人的帮助。下面说下我眼中web前端工程师要掌握的基础知识和技能: 1网页的基本结构(HTML、CSS) HTML是一种标记语言,而不是编程语言,最基本是标签是和,CSS是用来定义如何显示HTML元素的。对HTML+CSS很容易入门,但很多人不够深入,举几个例子: 标签是作什么用的
企鹅号小编
2018/03/05
8150
如何考评一名前端工程师?
本文标题的命名方式参考了芋头所写的《如何面试一名前端开发工程师?》。「考评」是「面试」的子集,是一个很重要的环节,如果谁打算做「前端工程师面试合集」的话,记得把我这篇文章收录进去哈,蛤蛤蛤蛤~ 「如何考评」这个词看起来「diǎo * 2」的。虽然标题看起来很有逼格,但对于我这种面试(他人)经验用一个手就能数出来的菜鸟来说,谈这个话题还为时过早。(我感到有看官貌似心里不满了:「那你说个 bird 啊!浪费老子时间和流量!我支付宝账号***,打多少你看着办吧!」先别急嘛~)其实,本文的目的不在于讲具体如何去考评
前朝楚水
2018/04/03
8860
如何考评一名前端工程师?
web前端学习方法推荐,如何成为web前端工程师
科技公司互联网公司有很多岗位职位可以选择,有人选择成为UI设计是,有人选择成为软件开发工程师,还有人选择成为web前端工程师,无论你的选择是哪一种无疑都是很好的选择,待遇高前景好,这两点就足够吸引其他人的眼球了。 新人想要学WEB前端技术,最为关心的是成为WEB前端工程师要多久,学习web前端路线是怎样的。如果你真想知道学web前端技术的时间是多长,那么就得了解它究竟要学什么东西。 web前端开发技术的入门门槛其实并不算高,服务器端语言的学习特点是先慢后快,而前端开发的学习曲线则是反过来的,前期学习速度很快
企鹅号小编
2018/02/11
8820
web前端学习方法推荐,如何成为web前端工程师
如何面试前端工程师:GitHub很重要
我在阿里巴巴的一部分工作内容是面试前端工程师。其实关于面试你可能很有自己的一套,这里我想跟你们分享一下我常用的方法。
前端老鸟
2019/07/31
6710
写给想成为Web前端工程师的同学们
前端工程师是做什么的? 前端工程师是互联网时代软件产品研发中不可缺少的一种专业研发角色。从狭义上讲,前端工程师使用 HTML、CSS、JavaScript 等专业技能和工具将产品UI设计稿实现成网站产品,涵盖用户PC端、移动端网页,处理视觉和交互问题。从广义上来讲,所有用户终端产品与视觉和交互有关的部分,都是前端工程师的专业领域。 前端工程师的发展之路和前景是怎么样的? 前端是一个相对比较新的行业,互联网发展早期(1995年~2005年)是没有专业的前端工程师的。随着互联网的发展,大约从2005年开始,正式
企鹅号小编
2018/01/29
9900
年薪20万前端工程师必备技能,你都掌握了么?
有软件工程方面的研究说,对于开发者个体而言,最优秀的开发者的生产效率约为平均值的2倍,而优秀的开发者会吸引其它优秀的人,或者激励与帮助团队中的其它成员,最终使团队之间的生产效率差异达到10倍之多。
用户1730674
2019/07/12
7890
年薪20万前端工程师必备技能,你都掌握了么?
前端工程师是怎样一种职业
前端工程师是怎样一种职业 前端工程师已经是大家不再陌生的一个软件行业的工种了,尽管这一工种诞生也没几年。作为一名从业三年的前端工程师,我尝试结合业界标准与我的理解,来尽可能诠释一下前端工程师这个职业。
用户1289394
2018/02/27
8380
前端工程师是怎样一种职业
一名【合格】前端工程师的自检清单
前端开发是一个非常特殊的行业,它的历史实际上不是很长,但是知识之繁杂,技术迭代速度之快是其他技术所不能比拟的。
ConardLi
2019/05/23
1.1K0
我的职业是前端工程师:我要成为一个前端设计师
我年轻的时候,是一个前端工程师。那时候,有这样一个传说:美工是最受妹子的欢迎,其次是半个美工的前端工程师。 本故事纯属瞎掰,如有雷同纯属巧合——Phodal @PasteRight 未满 18 年时,
Phodal
2018/01/29
8200
名人堂 | 张克军(Kejun):写给初学前端工程师的一封信
戳蓝字“IMWeb前端社区”关注我们哦! 关于作者 张克军,Kejun,豆瓣前端专家、前端布道师。在豆瓣负责前端开发团队,也是豆瓣社区产品线的前端工程师。 (本文转载自w3ctech社区,原文:https://www.w3ctech.com/topic/983) 张克军的信 大家好: 应波波的邀请写一写我对这个话题的想法。 从去年开始不少朋友让我帮忙介绍前端工程师,绝大部分忙都没帮上,原因是真找不到人。 我当时是这么跟他们分析的:过去的客户端以browser为主,所以HTML/CSS/Javascr
用户1097444
2022/06/29
5190
名人堂 | 张克军(Kejun):写给初学前端工程师的一封信
2019前端工程师自检清单与思考
对于JavaScript,掌握其语法和特性是最基本的,但是这些只是应用能力,最终仍旧考量仍然是计算机体系的理论知识,所以数据结构,算法,软件工程,设计模式等基础知识对前端工程师同样重要,这些知识的理解程度,可以决定你在前端工程师这条路上能走多远,是时候进行一波自检了,查漏补缺,只有全面发展,才会使你更强,以下会进行自问的形式按照图片里面的知识点进行自我check
super.x
2019/04/25
6110
2019前端工程师自检清单与思考
前端学习路线与方法
在“开篇词”中,我和你简单回顾了前端行业的发展,到现在为止,前端工程师已经成为研发体系中的重要岗位之一。可是,与此相对的是,我发现极少或者几乎没有大学的计算机专业愿意开设前端课程,更没有系统性的教学方案出现。大部分前端工程师的知识,其实都是来自于实践和工作中零散的学习。
李才哥
2019/07/10
5220
前端工程师的基本素养
阅读原文 闲来无事,今天随便聊聊前端工程师应该具备哪些素质,权当博大家一笑。 前端工程师到底是工作很简单的“切图仔”,还是包揽客户端和中间层的“大前端”?招聘市场上有大量的公司对前端工程师求贤若渴;但同时求职市场上却有大量的前端工程师在“求职若渴”。造成这种两难局面的原因是用人单位与求职者对前端工程师的技能需求以及定位存在差异。 应该怎么定位前端工程师这个岗位?我们可以从前端的发展历史中得到答案。 1.1.1 前端工程师的发展史 1990年,Tim Berners Lee发明了世界上第一个网页浏览器Worl
寒月十八
2018/01/30
1.3K0
前端工程师的基本素养
前端工程师的核心价值 @2018
作为一个还算资深的前端工程师,我也时常在思考自身的价值到底在何处。网上每年都有许多关于前端工程师这个岗位的讨论,其之所以如此激烈,或因该岗位本身无法明确定义,故很难评估其真正价值;抑或因其他岗位的不理解,看不到前端的价值,甚至不乏有轻视或贬低之嫌。因此,我有必要在这里聊聊我对这个岗位的理解。因前端行业发展过于迅猛,故标题附加了年份标记,本文仅代表我在 2018 年之拙见。
姬小光
2018/09/05
1.8K0
前端工程师的核心价值 @2018
一统江湖的大前端(7)React.js-从开发者到工程师
许多入职前端的开发者,都是从熟练使用框架进行业务逻辑开发而开始的。说到框架,Vue,React,Angular三大框架都已经圈定了自己的用户群,从粉丝的数量来说,Vue最多,接着是React,最后才是Angular,这样的局面实际上与三个框架本身的优劣并不完全相关。如果你使用过Angular.js1.X版本,就会明白上述三个框架可以统称为第二代前端SPA框架,从历史的角度来看,它们都用自己的方式解决了Angular.js1.X在SPA模型的实现中存在的一些问题;从未来的角度看,它们都是在实现尚未标准化的Web Component标准。如果只以熟练使用API进行业务逻辑开发作为衡量标准,那么了解一个框架和了解以上三个框架没有什么实质性的区别,除非面试官自己就是个水货,否则基本不可能因此就多给你一点薪水。
大史不说话
2018/10/09
8760
一统江湖的大前端(7)React.js-从开发者到工程师
零基础的小明要如何成为前端工程师?
如果你是个毫无基础又想要转岗成前端工程师的迷惘初学者,你脑中浮现的第一个问题有八成会是这个。接下来你会做什么?你大概会用:「如何成为前端工程师」、「前端 入门」、「前端 转岗」、「前端 非本科」等等的关键字来搜索,然后呢?
苏南
2020/12/16
4200
零基础的小明要如何成为前端工程师?
为什么整个互联网行业都缺前端工程师?
现在,几乎整个互联网行业都缺前端工程师,不仅在刚起步的创业公司,上市公司乃至巨头,这个问题也一样存在。没错,优秀的前端工程师简直比大熊猫还稀少。 每天,100offer的HR群都有人在吐槽招不到前端工程师。实话说对这些需求,Betty也无能为力,因为在供不应求的前端招聘市场上,优秀的前端工程师才是有话语权的那一方。 放眼全球,不仅在国内的互联网行业,在国外,前端工程师一样是需求旺盛、供不应求的香饽饽。 举个例子,根据indeed.com抓取的数千家网站的职位显示:目前前端的热门岗位——「HTML5」是需求增
用户1667431
2018/04/18
1K0
为什么整个互联网行业都缺前端工程师?
一个前端工程师的基本修养
有人说互联网是前端工程师的舞台,先不论这个说法是否有些夸大其词,但前端工程师绝对撑起了互联网应用开发的“半壁江山”。随着传统网站、手机应用、桌面应用、微信小程序等次第出现,需要前端工程师设计和完成的客户端功能逻辑在不断复杂化。那么,应该怎么定位前端工程师这个岗位,怎么描绘这个岗位的基本要求呢?下面让我们从前端的发展历史中寻找答案吧。 1. 前端工程师的发展历史 1990年,Tim Berners Lee发明了世界上第一个网页浏览器 WorldWideWeb。1995年,Brendan Eich 只用了1
企鹅号小编
2018/01/18
8790
一个前端工程师的基本修养
推荐阅读
相关推荐
如何成为一个伟大的前端工程师
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档