1. Frontend Masters 老师是 Douglas Crockford,JS 教父级人物,《JavaScript 语言精髓》作者。这门课讲了 JS 的历史和一些重要的语言细节,并把重点放在函数上。Crockford 认为函数这是 JS 这门语言最重要的部分。后半部分讲了浏览器和服务器的工作原理,以及网络安全。 (1) Deep JavaScript Foundations (2) Rethinking Asynchronous JavaScript (3) Functional-Light JavaScript, v2 (4) ES6: The Right Parts (5) Organizing JavaScript Functionality (6) Coercion in JavaScript 共 6 门课,老师都是 Kyle Simpson.《你不知道的 JS 》系列书作者,等下还会提到他。第一门课深入了 JS 的大部分重要细节,这是学好 JS 的第一步。其它几门课分专题继续深入,分别是异步编程,ES6 的重要部分,组织 JS 功能模块(学了这个后,我从没写过面条代码),轻量级函数式编程(有配套书,个人觉得是 JS 开发必学),最后是 JS 中的强制类型转换。 (1) Webpack 4 Fundamentals (2) Web Performance with Webpack (3) Webpack Plugins System 共 3 门关于 Webpack 的课程,老师都是 Sean Larkin。微软 Edge 团队的 Technical Program Manager,Webpack 和 Angular 核心团队成员,前不久刚来中国参加过前端圈的大会。这几门课从基础开始,一直到进阶,呈现了 Webpack 的基本原理,操作技巧,以及插件生态。 Hardcore Functional Programming in JavaScript 老师是 Brian Lonsdorf,学函数式编程的话,不知道他会多很多挣扎。等下还会提到他。课程从基本的函数组合开始,逐渐讲到硬核函数式编程(Functors, Applicatives 和 Monads 的应用等) (1) Asynchronous Programming in JavaScript (with Rx.js Observables) (2) Advanced Asynchronous JavaScript 共两门课。老师是 Jafar Husain。Netflix UI 工程团队 leader,响应式编程专家,TC39 成员。第一门课从零开始写常用的 Rxjs 操作符,逐渐进阶到 DOM 事件流处理,网络请求的处理等。第二门课是进阶课,从零开始写个 Observable,然后用 Observable 来解决一些棘手的动画问题。最后会用课程知识写个应用。 Advanced Vue.js Features from the Ground Up 老师是尤雨溪,这位不用我介绍了吧。这门课里面,尤雨溪会教你从零开始实现 Vue 的核心构成,如响应式系统,插件,渲染函数,路由,状态管理等。在我入职我目前所在公司的时候,我还没写过 Vue,入职后第一周学了这门课,然后带着团队重构 Vue 项目了。 还有很多优秀课程,全部列出来篇幅太大了。建议大家去探索寻宝。另外 Frontend Masters 是订阅制,费用比较贵,按月付的话,接近 40 美元一个月,年付会便宜很多。黑五和开学季会有折扣。我是在开学季用折扣价订了一年。

    另外,Frontend Masters 每年都会出一个免费的前端学习手册。今年的点击这里。

    1. Egghead 这个网站的风格是简短精炼。每个视频都很短,语速很快,适合有一定基础,想用碎片时间充电的前端从业人员。很多库的作者会在这里讲他们的作品,比如 Dan Abramov 会在这里讲 Redux,Michel Weststrate 会在这里讲 Mobx 和 Mobx State Tree 等,这些都是免费的。付费课程质量也大部分很高。你想学的某些主流技术,热门的库,大部分都在这里找得到教程。比如 Ramda,它有 200 多个 API,而且与其它库风格迥异,我是怎么短时间内对这么多 API 应用自如的?除了大量地训练和挤地铁时间查看文档,还离不开 Egghead 上的实战课程。这里再挑几门对我帮助最大的部分课程。剩下一些课程我会在本文后面再提。

    (1) RxJS Beyond the Basics: Creating Observables from scratch (2) RxJS Subjects and Multicasting Operators (3) Save time avoiding common mistakes using RxJS (4)Use Higher Order Observables in RxJS Effectively 全是 RxJS 的课程,老师是 André Staltz,我最崇拜的技术人之一,等下还会讲到他。这些课程从 RxJS 的入门一直讲到高阶操作。这些课程和前面提到的 Jafar Husain 的课程会有重合,但我觉得从不同的老师那里,从不同角度学习,可以掌握地更全。当然你不用每个主题都找两个老师学……我只是发现我订阅的两个网站都有 RxJS 课程,所以全学了。 Automate Daily Development Tasks with Bash 作为开发人员,你应该掌握一些自动化工作流,提升开发效率。这门课讲了开发中常用的 Bash 操作技巧,不管是前端和后端,都适用。 Quickly Transform Data with Transducers 我之前发表的消灭 for 循环的那篇文章,里面用的 Transduce 写法,就是在这门课里学到的。 Egghead 还有很多高阶 CSS 课程以及其它大前端的课程,比如单元测试,Serverless,等等。还有三门高阶函数式编程的课程,我放到后面部分讲。

    1. Udemy Udemy 是个在线教育界的淘宝,什么课程都有。你能在那里学音乐,学绘画,甚至还能学咏春拳…… 当然能学编程,而且有些热门编程老师确实很厉害。Udemy 有个套路,标价 200 美元的课程,经常悄悄打折 9.9 美元卖。我所有课程都是最低价买的,前后一年半共买了 60 多门课,通常是在黑五圣诞等折扣季买,当然,Udemy 几乎每个月都在促销。我买的课程覆盖前端后端,深度学习,区块链开发等。我只把前端课程的 2 / 3 学了,其它的真学不动了,大多数属于冲动消费……

    我学习的课程部分截图

    这部分我就不详细介绍课程了,只推荐三个老师。

    一是 Stephen Grider,我买了他大部分课程。Stephen 擅长用很直观的图表来拆解工程概念,再难的东西他也能拆到用日常语言解释。我一开始自学算法时,感到很吃力。Stephen 的算法课让我通过 JS 掌握了基础的计算机算法。他还有 Node,React,MongoDB 以及 GraphQL 的课程,大部分涵盖了入门和进阶。

    第二个是 Andrew Mead。他讲课能力也很优秀,我第一次学 Node 是学的他的课程,收获很大。另外他对学员的问题回应非常及时和详细。他的课程和 Stephen 的重复率挺高,不用两个都买。

    如果有兴趣学 iOS 开发,强烈推荐 Angela Yu 的课。(我做了半年 React Native 开发,所以去学了原生开发。)Angela 讲课幽默可爱,新人友好。她似乎是中国长大的,在英国学医。本来是医生,后来转行做 iOS 开发和设计了。厉害的人生各有各的不同啊……

    1. Wes Bos Wes Bos 可能相当于北美阮一峰…… 当然这种类比是不恰当的。我的意思是,他的课程覆盖了前端很广领域,也广受欢迎。如果你入门没多久,可以学他的免费课程 JavaScript 30. 用一个月时间,每天用原生 JS 写个网页应用。Mozilla 还赞助他开了 CSS Grid 的课程,吸引开发者用 FireFox。你也可以免费学这门课。他还有付费的 Node 和 React 课程。最近他准备出一个高阶 React 和 GraphQL 课程,我观望中,可能会买。另外他还主持了一个播客节目叫 Syntax,主题是前端开发,我每期都会听。挤地铁时用两倍语速听,能吸收到很多新鲜知识。

    2. YouTube YouTube 是个很神奇的地方,每个知识和娱乐的领域都能在这里找到精华。我在这里列出几个前端和泛编程的频道。

    Fun Fun Function 主播名字太长了,粉丝都叫他 MPJ。MPJ 是瑞典人,之前一直在 Spotify 工作,最近辞职后全职做 Fun Fun Forum 论坛了。这个频道覆盖了很杂的 JS 和前端开发知识。我在这个频道学到的都是在其它地方学过的,比如函数式编程,设计模式等,但是在这里学更像一种放松和实时看高手是怎样写代码和解决问题的。

    Traversy Media 主播非常勤奋,更新很频繁。内容大多是初级和中级,非常适合新人学习。我现在偶尔也会看他新出的教程,用原生 JS 写个动效,用 CSS 写完成度 100% 的企业展示页面等。

    Coding Tech 这个频道会持续更新计算机行业最新的优质演讲。前端和其它领域都有。

    1. GitHub GitHub 上参考别人的代码,能加快自己的理解。比如,Jason Miller(等下我还会介绍他) 的热门 repo 我每个都会看。EventEmitter,状态管理,异步函数自动放到 web worker 的工具库,Fetch API polyfill,等等听起来挺复杂的东西,他五六行,十几行代码就实现了,还发布到 NPM 成为完整的包。还有 You Don’t Need jQuery, You Don’t Need Lodash, 30 Seconds of Code 等 Repo,对提升原生 JS 解决问题的能力有非常大的帮助。碎片时间可以在手机上学习。

    2. JavaScript Weekly 我觉得 JavaScript Weekly(免费 Newsletter) 是前端开发者必须订阅的,但我发现好像身边人都不知道。很少有人能不关心技术趋势还能走在前面的。你应该关注同行最近又开发出了什么酷的东西,你关注的技术又出了哪些新教程。不过,每天盯着技术热点看也容易分心。一周关注一次,频率刚刚好。

    四,影响我的技术人 如果你了解过一万小时天才理论,你可能知道一个好的 Mentor 在个人成长中的无法替代的作用。大多数人都没有如此幸运,找到一个好的导师。我也是。对此我的一个并不完美的替代方案是关注行业里的思考者和先行者,听下他们的建议,了解他们是怎样思考和工作的。下面是对我影响最大的技术人:

    Kyle Simpson. 我的 JS 是他领入门的,也是他带着走向进阶的。我的整个学习路径,都有他的影响。作为一个教育者,他会给学习者很多各方面的建议。我会关注他所有的演讲和开源项目。Twitter: @getify Eric Elliott. 我学函数式编程是始于他。我比较幸运,一开始学编程的时候刚好碰到 Eric 开始在 Medium 上连载函数式编程教程。我在学了三个月 JS 之后,就遇到了一个全新的编程范式,并且被说服了。我推荐所有 JS 开发者都了解下这一系列文章 Composing Software 你可以听一个从 BASIC 时代就开始写程序的前辈,是怎样看待不同编程范式的;了解为什么组合比继承更优,为什么 JS 适合用来函数式编程。Twitter: _ericelliott André Staltz. 他是社区里面的响应式编程专家。如果你想学响应式编程的话,一定要看他写的这篇文章,The introduction to Reactive Programming you’ve been missing. 他还写了一个函数响应式框架叫 Cycle.js 除了技术,他最让我佩服的还有他对技术与社会之间关系的思考。他对于目前 Facebook 和 Google 等互联网巨头控制用户数据的现状不满,他的一个 mission 就是要创造去中心化的互联网。(万维网的创始人,Tim Berners-Lee 爵士,也在做这件事)他最近发布了一款安卓手机应用叫 Manyverse,一个真正去中心化社交平台。这款应用是用 React Native 写的,开源。感兴趣的话,你可以看下源码,看下他是怎么组织代码的。Twitter: @andrestaltz Sarah Drasner. Sarah 是个非常 nice 的姐姐,非常有亲和力。她是 SVG 动画专家,CSS 专家,微软资深开发。还是 Vue 核心团队成员。她在 Frontend Masters 上有 Vue.js,高阶 SVG 动画,UI 设计等课程。她在 Twitter 上也会发很多开发 Tips。Twitter: @sarah_edo Wes Bos. 刚刚提到过这位。他除了在播客上给开发者提供很多建议外,还在 Twitter 上分享很多开发技巧,JS, CSS, Bash, VSCode 等技巧都有。我在开发中也用了很多他分享的技巧,省了很多时间。Twitter: @wesbos Mathias Bynens. 谷歌 V8 引擎工程师,TC39 成员。他会从引擎实现的角度,告诉开发者怎么写代码。他也会分享一些 V8 的项目细节等。我之前写了消灭 for 循环的文章,好多人反对,还有些人直接嘲讽我。其中有一个说法是高阶函数没有 for 循环性能好。作为一个新手,我哪来勇气去对杠来自资深开发者的质疑的?因为引擎开发者都说了,那点微观语言层面的性能差异,不会成为你整个应用的性能瓶颈。你应该把注意力放在编写易理解和易维护的代码上。 Twitter: @mathias Brian Lonsdorf. 网名 Dr. Boolean. 这家伙就是个天才。他有些害羞,但是在讲他最擅长的函数式编程的时候,总能把满脑子天马行空的想法讲地很清楚。如果想学硬核函数式编程的话,推荐从关注他开始。他 Twitter 更新不频繁,但是更新的时候一般都是值得你记笔记的时候。Twitter: @drboolean Jason Miller. 刚有提到他。他是 Google Chrome 团队工程师,还是 Preact 的作者。他写了一堆平均只有十几行代码的库。研究他的代码不用一个文件一个文件地跳,因为就在一个文件里…… 他在 Twitter 上也很活跃。Twitter: @_developit Bartosz Milewski. 这位真是位大神。我说我被他影响都有强行给自己贴金的嫌疑。他有量子物理博士学位,后来去做软件开发了,成了 C++ 专家,出过 C++ 的专著。后来因受不了 C++ 糟糕的设计,去写 Haskell 了,也成了专家。最近又把兴趣转向范畴论了,开始给程序员教范畴论。业余还研究音乐理论(我看他 YouTube 点赞列表知道的……)。我最近几个月每周都安排几个早晨,去他的 YouTube 频道听他讲范畴论(这个不需要高数基础)。等下我会继续谈他的范畴论教程。Twitter: @BartoszMilewski