热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[译]怎样成为一个优异的前端工程师

来自Google的前端工程师-PhilipWalton分享了本身关于怎样成为优异的工程师的一些看法。个人感觉很有代价,所以翻译成中文,轻易人人浏览。程度有限,如翻译不妥的地方请在批

来自Google的前端工程师-Philip Walton 分享了本身关于怎样成为优异的工程师的一些看法。个人感觉很有代价,所以翻译成中文,轻易人人浏览。程度有限,如翻译不妥的地方请在批评中指出。

原文地点:http://philipwalton.com/articles/how-to-become-a-great-front-end-engineer/

近来,我收到了读者的邮件,引发了我的一些思索。这是他在邮件中问我的题目:

Hi Philip, is it okay to ask how you become a great front-end engineer? Any advice?

我不能不认可,我觉得非常的惊奇,竟然会被问到如许的题目,由于我从来没有想过本身是一个优异的前端工程师。实际上,我在这个行业事变的前几年里,我真的不觉得我能够胜任我的事变。我接受了这些事变只是由于我之前没有意想到我晓得得东西太少了,我能够取得这些事变只是由于之前口试我的人不晓得问我什么题目。

话虽这么说,我末了照样把我本身的角色做得非常好,而且成为了团队里有代价的一员。当我末了去职的时刻(下一个职位我照样没法胜任)我一般也会招考那些将要招聘我的职位的人。如今追念那些我口试过的招聘者,让我邃晓,对待学问的重要性。只管我一最先在这个范畴很柔弱。我如今的本身能够也不会雇佣之前的谁人本身,只管我晓得跟着事变履历的积聚,胜利也是能够的。

在Web范畴,我事变的越久,越让我意想到不错的人和真正优异的人的区分在于不是他们晓得什么,而是他们怎样思索。 很明显,学问是很重要的–特别是在某些状况下–然则,在一个疾速变化的范畴并不是云云。你猎取学问的体式格局比你晓得那些学问更为重要。而且或许最重要的是:你怎样应用你的学问去处置惩罚一样平常生涯中的题目。

你能够找到大批议论学问点、框架和东西的文章,这是学问都是取得一份事变所须要晓得的。我想说一些不一样的。在这篇文章中,我会说一说前端工程师应有的心态,愿望能够回复最最先的题目:怎样才能做到优异?

不要只是处置惩罚题目,找到题目的泉源地点

许多的人只是不断地写一些 CSS 和 Javascript 补丁直到他们发明这些东西能够一般的事变了,然后他们就不管了。我在代码检察的历程当中看到了许多如许的做法。

我会常常问他人:“为何你要在这里加一个 float: left ?” 或许 “这个 overflow:hidden 真的须要吗?”,然后他们会回复:“我不晓得,然则假如我删掉他们,就出题目了”。

Javascript 也一样。我看到一些人用 setTimeout 来防备实行递次上的题目,或许是一些人滥用 stopPropagation() 而没有考虑到它或许会影响页面中的其他事宜处置惩罚函数。

我遇到过许多雷同或相似的题目,假如你从来不花时候去相识题目的泉源地点,你会发明你会一遍一遍的遭受一样的逆境。

花时候去深切的研讨你的处置惩罚方案为何可行看起来须要消耗许多的精神,然则我宣誓它会在将来给你勤俭许多时候。对你如今事变的体系有一个周全的明白能够削减你将来的猜想和搜检事变。

学会展望浏览器范畴将来的变化

前端跟后端重要的不同是:后端的运转环境在你的掌握之下。然则关于前端而言,比拟于后端,它完整不在你的掌握局限。你的用户所运用的平台或许装备随时都有能够转变,你的代码须要能够文雅地处置惩罚这类状况。

我记得早在2011年的时刻,我在一个非常有名的 Javascript 框架看到下面如许一段源码(大抵云云):

var isIE6 = !isIE7 && !isIE8 && !isIE9;

我晓得在实际生涯中, feature detaction 并不能100%的有用,有些时刻我们不能不采纳这类不好的体式格局或许浏览器白名单的体式格局,然则任何时刻你如许做的时刻,你应当展望将来能够会发作什么,纵然发作,你的代码也不应当涌现bug。

关于我们大多数人而言,我们在如今的事变岗位上写的代码会比我们的任期更长。我8年前写的一些代码如今还会常常用到,这想起来既让人满足又让让觉得恐怖。

浏览官方文档

浏览器 bug 老是存在的,然则,当两个浏览器实行雷同的代码表现却不一致时,人们常常假定,而不是亲身去搜检,只是把他们认为的表现好的叫做“一般”浏览器,表现非常的叫“不一般”浏览器。但并不是老是如许,当你做出了毛病的假定时,任何你挑选的处置惩罚方法在将来或许会失效。

一个实际的例子就是 flex items 的默许最小尺寸。依据官方文档, flex itemsmin-widthmin-heightauto (而不是 0),这意味着,它们的尺寸不会比它们的内容还要小。 然则在过去的8个月里,只要 Firefox 是唯一一个准确的完成这一规范的浏览器。

假如你遇到过这类跨浏览器的兼容性题目,而且你注重到你的页面在 Chrome,IE,Opera,和 Safari 上表现一致,惟独 Firefox 上表现不同时,你肯定会猜想这是 Firefox 本身的题目。

当两个或多个浏览器在衬着雷同的代码表现不一致时, 你应当花一些时候去研讨究竟哪一个浏览器才是准确的,然后用准确的体式格局写下你的代码。你的作品才会是面向将来的。

别的,优异的前端工程师常常都是站在变化的最前线的,他们会在这些手艺成为主流之前就采纳这些手艺,甚至为这些手艺作出孝敬。假如你依附你本身的气力去查找官方文档,而且能够设想一个手艺在你能够在浏览器中用它的之前将会是怎样事变的,你将成为能够议论这个官方规范会对开辟形成什么影响的人。

浏览其他人的代码

浏览其他人的代码,无疑是成为一个更好的开辟者的最好体式格局。

本身处置惩罚题目是进修的最好体式格局,然则假如这些题目都是你之前处置惩罚过的,你很快就会进入安稳期(很难有上升的空间)。浏览其他人的代码能够为你翻开处置惩罚题目的新的思绪。而且浏览和明白他人写的代码的才能也是在跟团队协作或许介入开源项目时至关重要的才能。

实际上,我认为在口试一个招聘者是只让他们写代码–新的代码,是最大的毛病。我招聘的时刻,从来没有被叫过去浏览一些已存在的代码,在这些代码中找出题目,然后处置惩罚它。这是非常不好的,由于作为一个工程师,许多时刻我们是在他人的代码上增加和转变一些代码。很少从新写一些新的。

跟比你智慧的人一同事变

在我印象你,比起后端开辟者,更多的前端开辟者愿望成为一个自由职业者(全栈)。或许是前端工程师更趋向于自学,而后端工程师更趋向于学术。

自学并为你本身事变的题目是没法从比你智慧的人身上取得优点。没有人来跟你议论看法或许帮你检察代码。

我猛烈的发起,最少在你职业生涯早期,在一个团队中事变,特别是跟一群比你更智慧更有履历的人事变。

假如你已完毕你的职业生涯,如今只是为你本身事变,那末介入到开源中来。 孝敬开源项目会给你许多与团队协作的时机。

反复造轮子

在贸易上,反复造轮子是不好的,然则关于进修来讲并不是云云。你或许尝试从 npm 上猎取预输入控件或许事宜托付库,然则设想一下假如你本身尝试制造这些东西的话会学到更多。

我肯定一些正在浏览这篇文章的人对此觉得猛烈阻挡。不要误解我的意义。我不是说你永久也不应当运用第三方库。运用优异的库是非常明智的事变。

然则,在这篇文章中,我要说的是怎样从一个不错的工程师成为一个优异的工程师。大部分我认为的这个范畴中优异的工程师都是这些优异的第三方库的维护者。

你或许从来没有构建够本身的 Javascript 库,然则你依旧能够在你的职业生涯中取得胜利,然则,能够你从来没有明白到处置惩罚题目的中心。

在这个行业中,人们常常问起的一个题目是:我接下来应当做什么? 假如你问了这个题目,为何不去尝试从新制造一个你喜好的 Javascript 库或许 CSS 框架,而不是尝试一些新的东西或许写一个新的 app。 如许做的优点是,实时你遇到了难题,你也能够从现在已有的库中的源码找到答案。

把你学到的东西写下来

末了, 你应当把你学到的东西写下来。有太多的来由如许做了,然则,或许最重要的原因是如许能够强制你更好地明白你所学的东西。假如你没法解释其道理,这是一个很好的时机申明你并没有完整搞懂它。许多时刻你没有意想到你不懂,直到你把它写下来。

在我的履历中,誊写、做一个演讲、以及写一些 demos 是强制我本身完整弄懂一个东西的最好体式格局,从里到外。纵然没有一个人会看你写的东西,然则做这件事的历程更有代价。

文章地点:http://blog.mcbird.cn/2015/08/15/How-to-Become-a-Great-Front-End-Engineer/


推荐阅读
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 计算机网络复习:第五章 网络层控制平面
    本文探讨了网络层的控制平面,包括转发和路由选择的基本原理。转发在数据平面上实现,通过配置路由器中的转发表完成;而路由选择则在控制平面上进行,涉及路由器中路由表的配置与更新。此外,文章还介绍了ICMP协议、两种控制平面的实现方法、路由选择算法及其分类等内容。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了在使用Visual Studio 2015进行项目开发时,遇到类向导弹出“异常来自 HRESULT:0x8CE0000B”错误的解决方案。通过具体步骤和实践经验,帮助开发者快速排查并解决问题。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
author-avatar
blue的诱惑的快乐生活_708
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有