如何看待前端发展如此迅猛的态势,以及如何选择自己的技术栈?——来自用户 Yeoman
这里有两个问题,先回答第一个「如何看待前端发展如此迅猛的态势」。
Excited!
目前前端百花齐放的状态,与前端社区自由开放这一特点是分不开的。相比之下,同样是客户端技术,iOS、Android 与 Windows 开发的生态圈则相对封闭。这些技术背后都有一两个主导厂商,从语言到工具,到平台,到渠道,无处不见他们以利益为主导的影子。这倒不是说前端的发展没有利益的驱动,而是说开放的社区更容易产生思维的碰撞,自由的社区提供了实现这些想法的土壤。比如,任何一个开发者都能 看到并参与下一版 JavaScript 特性的讨论 , 用投票来告诉浏览器厂商自己最希望实现的特性 ,或者 直接动手创造一个 Babel plugin 来实现自己的疯狂想法。前端社区花了一些时间才形成现在的分工:W3C 与 TC39 负责平台与语言标准的收集与制定,浏览器厂商实现标准,社区来解决其他问题,厂商与社区共同来推动标准的发展。正是这样一个正反馈的系统,成为了前端社区的活力来源。
下面来说第二个问题,在前端百花齐放、日新月异的态势下,「如何选择自己的技术栈呢?」
「选择」这个词让我想起了早期魔兽世界的天赋系统,仿佛按照 PVP 大神英雄榜的天赋一路点下来,一个「前端工程师 – 2016 款」就出炉了。然而大神之所以能上榜,他所掌握的这些技能组合并不是关键,关键是他知道在什么情况下应该用什么的技能。同样技术栈也不是结果,而是积累过程中的产物。尽管如此,积累的过程也是有方法可循的,我分享下我的经验。先放总结:「保持对社区的关注,动手去解决实际问题,尝试寻找问题的本质。」
作为自己迈出的第一步,你得知道都有哪些好用的工具。我获取信息的途径有 1) 在 GitHub 和知乎上关注一些很厉害的开发者的动态。2) 订阅一些感兴趣的 Weekly( 1 、 2 、 3 )。在整理这个回答的时候,我还发现了 这个有趣的网站 ,里面也许有更适合你的方式。通过这一步,我能知道某个工具可以解决什么问题,对于大部分我还未真正遇到过的问题,等遇到的时候就晓得有这样的工具,那就足够了。
实践出真知。学习使用一种工具最有效的方式就是使用它,比如运行一下示例代码,跟着教程一步步构建一个 demo,甚至将它应用到自己的下一个项目中,这些都是不错的方法。在这个过程中,我会熟悉 API 的具体使用方法,理解工具抽象出的概念,弄懂工具是通过什么方法解决了要解决的问题。可能我还会踩到一些坑,然后体会到与同类工具相比它的优势与劣势。所做的项目越具体,我对要解决的问题的体会就越深入,对这个工具的理解过程就越容易越本质,同时对工具的研究也会反过来加深自己对这个问题的认识。这也是为什么我更倾向于在实际遇到问题时才去深入学习使用相关的工具,而不赞成为新而新、提前优化的方式。
我觉得理解问题本质要比掌握工具重要的多,甚至可以说工具的发展是对问题抽象的发展的体现,所以在使用工具的过程中我会一直问自己:这个工具解决的本质问题是什么,是通过怎么的方式解决的。如果对问题的本质有了自己的理解,那么当这个领域出现了新工具,自己就能更容易判断出哪些是这个工具的核心价值,哪些是锦上添花的特性了。
不知不觉熬了一锅鸡汤,如果你还在纠结技术栈的选择,正好我这里有一本 《2016 最新潮最前沿十大前端技术》 ,既然与你有缘就送给你吧。
大家可以通过 问题提交通道 来向 LeanCloud 提问。