我最近和一个作后端开发的朋友讨论我在工做之余花了多长的时间去写码和学习写码。他给我看了Uncle Bob的《Clean Code》这本书中的一段话,它将音乐家们为准备音乐会而花费的时间与开发者让代码正确执行所用的练习时间进行了比较。前端
我喜欢这个类比,可是我不认为我彻底认同它;首先这种想法会致使疲劳。我认为若是你想进一步磨练你的技术并扩大你的技能集,那么这是很好的,可是要一天中每一个小时都这样作是很难持续的。react
前端疲劳是很是真实的。 我看到过一些关于JavaScript疲劳的文章,但我认为问题远不止于这种特定的语言。angularjs
先澄清一下,这篇文章不是在抱怨前端疲劳如何糟糕,以及技术发展太快—— 我喜欢技术迅速发展。一样的,我能够感觉到它是如何的势不可挡,也会时不时地感受本身要落伍了。web
据我所知,这是一把双刃剑。面试
首先做为一个前端开发者,你认为你的技能树里应当有如下全部的技能:chrome
此外,你还要涉足或展望这些技术:编程
其次,你的平常工做可能不会彻底覆盖这些技能,或者不会让你有时间去学全部技术,所以怎样才能在你的控制下去保证会全部的技能?后端
开发人员听见“Progressive Web Apps” 这种术语可能会感到畏惧。新的方法和技巧致使疲劳感 —— 前端疲劳。 (图片来源)设计模式
如今做为这些技术的消费者,你可能要作的是:浏览器
而做为一个贡献者,你可能要作的是:
最近我发现个人注意力被分散到三件事情上,我用三分之一的精力写着代码,同时戴着耳机一边听别人讨论代码,一边在Slack上跟别人聊代码。我决定适可而止——个人所有注意力都被代码所占据。我已经精疲力竭了。
虽然这确定是极端状况,但我相信其余人也经历过相似的事情。最重要的是,你可能有一份全职工做,家庭,朋友,业余爱好。难怪咱们中有那么多人感受力不从心而且怀疑咱们是否作了正确的职业选择。
个人一些前端同事都表示想要打包走人,而后换一个能够在五点结束的工做。但我认为前端工做仍旧吸引着某些的人,而若是放弃这份工做,成为一个房地产经纪人,你仍然想尽你的可能成为最好的房地产经纪人。在你的空闲时间你仍是会参加房地产会议和跟踪房价趋势。不少个月之前,我在金融业工做,晚上我还在学习,阅读相关资料,想成为我所选择领域中技能最佳的人。
并非只有这个领域须要付出巨大的精力,许多职业须要投入大量的精力而且在工做以外学习。也许前端开发的特殊之处在于技术发展得如此迅速,以致于好像有人一直在移动目标岗位。这就像每隔一天我就会收到一封电子邮件,上面写着“XYZ”技术已死。我肯定这不是真的,不然咱们就没有技术可用了。
生态系统处于不断变化的状态,我认为这是一件好事。就我我的而言,我喜欢扮演一个能够不断地学习、发展和督促本身的角色,但这并非说我不会偶尔感到不知所措。
考虑到这一点,我尝试记住这些事情用来阻止我殚精竭虑,同时也有一些避免疲劳的通用建议。
我认识的开发者,不管是在工做中仍是工做外,都是我认识的最聪明的人。但他们全都会感到不知所措。大多数人都有一些但愿学习的技术清单。可能有少数人知道全部技术,并且在全部事情上都处于领先地位,但咱们大多数人的处境彻底相同。
咱们仍然依赖Google和Stack Overflow来度过咱们的一天,打开了超多的选项卡,所有是关于Web相关问题的答案。不止你一我的是这样!
要高兴地知道你不是一个糟糕的开发人员,你只是尚未尝试过酷孩子们正在使用的东西。
是的,即便是“web名人”也有一样的困境…
你不可能知道全部的事情,而你在Twitter上追随的明星开发者在小部分的领域中表现得很是好。你会注意到,他们出名的领域刚好是他们所熟知的领域。可能也会有例外,但他们和咱们同样也只是个普通人。:)
我知道有有些优秀的前端开发人员不会申请职位,由于他们在不知道工做描述要求上的全部东西的状况下,就以为本身是个骗子。引用其中一个:
“我看到的90%的JDs,会让我感受“啊,我太落后!” 。事实上,这让我很困扰,我想留在我如今的职位,试图赚更多的钱,只是由于这样让我以为我已经“摆脱它”。”
事实上,大部分的工做说明都是闹剧。个人朋友Bård把这些说明放在一张大的图片,来展现出前端工做要求和它们的真正含义之间的区别。
只要记住,会变好的。我所作的每一项工做,我都以为本身不够深刻,但最终你会习惯他们的工具和工做流程,你会学习并成为一个更好的开发人员。
不要惧怕在工做中学习,掌握新技能的最佳方法是天天使用它们。
若是你有冒充者综合征,可能你是个正派的开发者,不然你就不会自觉地意识到它。
人们很容易被耀眼的新事物分心,可是若是你的基础还不牢固,那么你所建造的东西将经受不住时间的考验。
就像个人一个好朋友曾经对我说的:
“专一于基础一直是个人口头禅。你能创建良好的项目(SH!T)和解决问题,这才是最重要的,而你如何解决它们(所使用的工具)已经并将永远改变。”
例如,当react一跃成名,它彷佛老是和ES6捆绑在一块儿,我把重点放在语言的那些改变和新特性上而不是框架自己的细微差异。一旦react不火了,我从最新的JavaScript上学到的知识将继续存在下去。你能够在原生chrome玩不少特性,而不用引入Babel陷入依赖地狱。
这真的很关键。我认为正在扼杀咱们的不是新框架、库和模块,而是咱们本身必须把它们所有学会的信念。
经过学习我发现最好的办法是专一——此刻我正在钻研ES6中的JavaScript函数式编程。
个人清单上还有不少我想学的东西,但我尽可能不分心。例如,我喜欢温习我会的知识,玩Polymer,钻研一些最新的CSS技术,好比Grid,可是若是我一次开始阅读太多不一样的领域,我得不到全部的信息。这些别的东西哪儿也去不了,再次看到的时候就能联想到他们。
避免在某一主题上匆忙尝试使用一切。 慢慢来,确保你彻底理解它。
若是你像我同样,你会有一个不断增加的清单,但不要惧怕从中剔除项目。并非全部的事情都值得投入时间,你应该试着去认识哪些是值得学习的,哪些可能在几年内消失。花时间来学习编程的设计模式和架构技术,相比于投入在当前火的框架,在长远上来看,老是更有益的。脱离成长轨迹,过不了多久你就会迷失在追逐玩流行语的过程当中。
如今有不少新的东西出现,web正在以惊人的速度发展,但一般企业真正在业务中开始采用这些新技术,须要很长的时间。大多数公司会等一段时间待技术成熟,并看到它在领域中被承认。
Angular 是六年前建立的,我刚开始在一家初创公司工做,他认为这是三年前的框架。Reactjs 已经有大约三年的历史了,我如今的公司仅在今年圣诞节前才开始使用它。我确信有不少其余的框架在同一时间出现或者消失。若是全部的我都要去研究,我会发疯的。
在CSS领域,flexbox在2010年就能够用了——六年前!可是浏览器到如今支持仍然有限。咱们今年早些时候开始在生产环境中使用它,并且我也不认为它在其余地方被普遍使用。
个人意思是,没必要急于学习全部的东西,虽然技术可能会很快发展,但你的潜在雇主正在以较慢的速度前进。你没必要走在曲线的前面,只是要确保你在观察它的轨迹。
这是彻底正常的。当你刚开始的时候,你不知道你不知道什么。而后你会学习一些东西而且认为你是一个天才。而后,渐渐地,这种幻觉被打破,你开始理解事实上在这以外你有多少东西不知道。
从本质上说,你获得的经验越多,你进入的空虚就越深。你须要跟这个和平相处,不然它会消耗你。若是有的话,这种感受会让你相信你正朝着正确的方向前进。在咱们选择的职业中,你永远不会舒舒服服地学会全部前端知识。
你很容易就感受到你远远落后,须要每分钟都去编码和学习。这是一张通往职业疲倦的单程票。留一些时间来发展你的技能,看看你是否能够与你的老板协商一些时间来保证你的学习时间,而后用剩下的时间来作你爱作的事。
我已经分出一点写代码的时间在健身房。锻炼对你的身心都是极其重要的。尝试天天至少作20到30分钟,能够保持头脑清醒,防止疲劳。
给你的家人和朋友留出时间,尽可能不要和他们谈工做!
目前不要担忧找不到工做。此时咱们正处于一个很是幸运的点,等待填充的岗位远比开发者要多。我不知道这将持续多久,但如今好好把握它!
你能够在不知道全部技术的状况下获得一份工做。我发现,在我面试过的人中,99%的人彻底是在吹牛。
最坏的状况,记住遗留代码中有黄金。若是你是一个喜欢老方式的开发人员,老是会有一些公司依赖于传统技术,须要开发人员在他们的软件上工做。
我但愿其中的一些点有助于减轻你可能感到的一些挫折。你能作的最糟糕的事就是到达边缘,彻底被烧尽,由于一旦你这样,很难恢复你对你所作的事情的热情,以及你这么作的初衷。
撸码愉