前端开发者，2017 年你应该学习什么
本文融合了我的个人经历以及对新一年的希冀。正如我想热切表达自己想法一样，我也期待能在下方的评论表单中看到你的建议。
设计 前端
183.240.22.86
最重要的是，去看那本《提问的艺术》
来自广东东莞的 Chrome 56.0|GNU/Linux 用户
2017-02-10T10:25:54.000
本文融合了我的个人经历以及对新一年的希冀。正如我想热切表达自己想法一样，我也期待能在下方的评论表单中看到你的建议。
![](/data/attachment/album/201702/08/090049y9y99imzi9w9cyld.jpeg)


在当今的快节奏生态中，我们都倾向于花时间尝试最新的发明，然后在网络上进行激烈的辩论。


这里，我并不是说我们不能这样做。但我们的确应该把脚步放慢一些，并认真了解那些不会有很大变化的事情。这样不仅会提升我们的工作质量和我们所创造的价值 —— 还将切实地帮助我们更快理解这些新的工具。


本文融合了我的个人经历以及对新一年的希冀。正如我想热切表达自己想法一样，我也期待能在下方的评论表单中看到你的建议。


### 学习如何写出可读性高的代码


我们多数的工作并不是编写新代码，而是维护已有代码。这意味着你最终阅读代码的时间要比编写它所花费的时间要长，所以你需要为*之后需要阅读你代码的程序员*优化代码，而不是为了解释器。


这里我建议你按以下顺序 — 由浅入深 — 阅读下面三本书：


* Dustin Boswell 的 《<ruby> <a href="https://www.amazon.com/gp/product/0596802293/">  编写可读代码的艺术 </a> <rp>  （ </rp> <rt>  The Art of Readable Code </rt> <rp>  ） </rp></ruby>》
* Robert C. Martin 的 《<ruby> <a href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/">  代码整洁之道 </a> <rp>  （ </rp> <rt>  Clean Code: A Handbook of Agile Software Craftsmanship </rt> <rp>  ） </rp></ruby>》
* Steve McConnell 的 《<ruby> <a href="https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/">  代码大全 </a> <rp>  （ </rp> <rt>  Code Complete: A Practical Handbook of Software Construction </rt> <rp>  ） </rp></ruby>》


![](/data/attachment/album/201702/08/090110m49qkzziwfgzbezj.jpeg)


### 深入学习 JavaScript


现如今，每周都会出现一个新的 JavaScript 框架，并标榜自己比其他的任何旧框架都要好用。这样的情况下，我们很多人更倾向于花费时间来学习框架，而且这样也要比学习 JavaScript 本身要容易的多。如果说你正在使用框架，但并不了解该框架的工作方式，*立刻停止使用它，并去学习 JavaScript，直到你能够理解这些工具的工作方式为止* 。


* 可以从 [Kyle Simpson](https://medium.com/u/5dccb9bb4625) 的 [你所不知道的 JavaScript](https://github.com/getify/You-Dont-Know-JS) 系列开始，这个系列可以在线免费阅读。
* [Eric Elliott](https://medium.com/u/c359511de780) 列出的一个长长的 [2017 年：JavaScript 的学习目标](https://medium.com/javascript-scene/top-javascript-frameworks-topics-to-learn-in-2017-700a397b711#.zhnbn4rvg)。
* [Henrique Alves](https://medium.com/u/b6c3841651ac) 列出的 [进行响应式开发之前必须了解的事情](http://alves.im/blog/before-dive-into-react.html)（实际上就是一个知识框架）。
* Mike Pennisi 的 [JavaScript 开发者：注意你的语言](https://bocoup.com/weblog/javascript-developers-watch-your-language) — 了解 ECMAScript 新特性的中 TC-39 发展过程。


### 学习函数式编程


多年以来，我们一直期待着 JavaScript 引入类，但真正引入类之后，我们却不想在 JavaScript 中使用类了，我们只想使用函数。我们甚至使用函数编写 HTML (JSX)。


* Kyle Simpson 的 [轻量级函数式 JavaScript](https://github.com/getify/Functional-Light-JS)。
* Frisby 教授的 [函数式编程完全指南](https://github.com/MostlyAdequate/mostly-adequate-guide) 和 [在线免费课程](https://egghead.io/courses/professor-frisby-introduces-composable-functional-javascript)。


![](/data/attachment/album/201702/08/090130vwwmxx761bbdwrrr.jpeg)


### 学习设计基础知识


作为一个前端开发者，我们比这个生态中的任何人 —— 甚至可能是设计人员 —— 都要更加接近用户。如果设计者必须去确认你还原在屏幕上的每一个像素，你或许做错了某些事。


* [David Kadavy](https://medium.com/u/5377a93ef640) 的《<ruby> <a href="https://www.amazon.com/Design-Hackers-Reverse-Engineering-Beauty-ebook/dp/B005J578EW">  黑客设计 </a> <rp>  （ </rp> <rt>  Design for Hackers </rt> <rp>  ） </rp></ruby>》或对应的 [免费课程](http://designforhackers.com/)。
* [Tracy Osborn](https://medium.com/u/e611097a5bd4) 的讲座：[为非设计人员的设计知识](https://youtu.be/ZbrzdMaumNk)。
* [Nathan Barry](https://medium.com/u/ac3090433602) 的 《<ruby> <a href="http://nathanbarry.com/webapps/">  Web 应用设计 </a> <rp>  （ </rp> <rt>  Design of Web Applications </rt> <rp>  ） </rp></ruby>》。
* [Jason Santa Maria](https://medium.com/u/8eddcb9e4ac4) 的 《<ruby> <a href="https://abookapart.com/products/on-web-typography">  Web 页面设计 </a> <rp>  （ </rp> <rt>  On Web Typography </rt> <rp>  ） </rp></ruby>》。
* Alan Cooper 的 《<ruby> <a href="https://www.amazon.com/Inmates-Are-Running-Asylum-Products-ebook/dp/B000OZ0N62/">  交互设计之路：让高科技产品回归人性 </a> <rp>  （ </rp> <rt>  The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity </rt> <rp>  ） </rp></ruby>》。
* 两篇关于 UI 动画的文章：[如何使用动画来提高 UX](http://babich.biz/how-to-use-animation-to-improve-ux/)、[过渡界面](https://medium.com/@pasql/transitional-interfaces-926eb80d64e3#.igcwawszz)。


### 学习如何与人协作


有些人很喜欢通过编程来与电脑进行交互，而非与人进行交互。不幸的是，这样的结果并不是很好。


基本上我们不可能完全脱离群体来工作：我们总是需要和其他开发者、设计师以及项目经理 —— 有时候甚至要和用户 —— 交换意见。这是比较难的任务，但如果你想要真正理解你在做什么以及为什么要这么做的话，这一步是非常重要的，因为这正是我们工作的价值所在。


* [John Sonmez](https://medium.com/u/56e8cba02b) 的《<ruby> <a href="https://www.amazon.com/Soft-Skills-software-developers-manual/dp/1617292397/">  软技能：代码之外的生存指南 </a> <rp>  （ </rp> <rt>  Soft Skills: The software developer’s life manual </rt> <rp>  ） </rp></ruby>》。
* Robert C. Martin 的《<ruby> <a href="https://www.amazon.com/Clean-Coder-Conduct-Professional-Programmers/dp/0137081073/">  代码整洁之道：程序员的职业素养 </a> <rp>  （ </rp> <rt>  The Clean Coder: A Code of Conduct for Professional Programmers </rt> <rp>  ） </rp></ruby>》。
* Jim Camp 的 《<ruby> <a href="https://www.amazon.com/Start-No-Negotiating-Tools-that-ebook/dp/B003EY7JEE/">  从零开始：专业人士不想让你了解的谈判工具 </a> <rp>  （ </rp> <rt>  Start with No: The Negotiating Tools that the Pros Don’t Want You to Know </rt> <rp>  ） </rp></ruby>》。


![](/data/attachment/album/201702/08/090152u00pcdprrz67trhr.jpeg)


### 学习如何为用户编写代码


与同事或其他人的交流大部分是以文本的形式进行的：目标描述和评论、代码注释、Git 提交、即时聊天消息、电子邮件、推文、博客等。


想象一下，人们要花费多少时间来阅读和理解所有以上提到的这一切。如果你可以通过写得更清楚、简洁来减少这个时间，世界将变成一个更好的工作场所。


* William Zinsserd 的《<ruby> <a href="https://www.amazon.com/gp/product/0060891548/">  写作法宝 : 非虚构写作指南 </a> <rp>  （ </rp> <rt>  On Writing Well: The Classic Guide to Writing Nonfiction </rt> <rp>  ） </rp></ruby>》。
* William Strunk 和 E. B. White 的《<ruby> <a href="https://www.amazon.com/Elements-Style-4th-William-Strunk/dp/0205313426/">  英文写作指南 </a> <rp>  （ </rp> <rt>  The Elements of Style </rt> <rp>  ） </rp></ruby>》。
* [奥威尔写作规则](http://www.economist.com/blogs/prospero/2013/07/george-orwell-writing)。
* 俄文：很好的 [Glavred 课程](http://maximilyahov.ru/glvrd-pro/)。


### 学习以前的计算机科学智慧


前端开发已经不仅仅简单的下拉菜单了，它前所未有的更复杂了。随着我们所需解决问题的复杂度越来越高，声名狼藉的“JavaScript 疲乏症”也随之出现了。


这意味着现在需要学习非前端开发人员过去几十年所积累形成的知识精华。而这也是我最想听到你向我推荐的内容了。


以下是我个人给大家的推荐：


* Coursera 的 《<ruby> <a href="https://www.coursera.org/specializations/algorithms">  学习像计算机科学家那样思考方式 </a> <rp>  （ </rp> <rt>  Learn To Think Like A Computer Scientist </rt> <rp>  ） </rp></ruby>》。
* [DHH](https://medium.com/u/54bcbf647830) 的 [对我意义非凡的五本书](https://signalvnoise.com/posts/3375-the-five-programming-books-that-meant-most-to-me)。




---


读完本文，你有些什么建议呢？在这新的 2017 年里你又想学习些什么呢？




---


作者简介：


Web 开发者，充满激情的摄影者，crazy dogs 的主人。


译者简介：


[GHLandy](http://GHLandy.com) —— 欲得之，则为之奋斗 (If you want it, work for it.)。




---


via: <https://medium.freecodecamp.com/what-to-learn-in-2017-if-youre-a-frontend-developer-b6cfef46effd#.ss9xbwrew>


作者：[Artem Sapegin](https://medium.freecodecamp.com/@sapegin) 译者：[GHLandy](https://github.com/GHLandy) 校对：[bestony](https://github.com/bestony)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

