这种问题问出来肯定招黑子,所以首先明确一点:不要捧杀我,比我还厉害的人多的是。(参考 尤雨溪:关于程序员的个人崇拜)
这个问题的一个有意思的点是如何定义 “强”。俗话说文无第一,程序员的 “强” 不像格斗那样打一场就见分晓,每个人对于这个字的定义可能都不一样。公司职级?GitHub stars?npm 下载量?赚钱多少?显然这都不应该是程序员 “强” 的定义。
我更愿意把 “强” 理解为 “制造 impact 的能力”,也就是你能通过你的代码产生多大的影响力。大部分觉得我 “强” 的人,其实更多的是出于 Vue 的影响力产生这样的感觉。如果你的目标是要做出像 Vue 这样的项目,实话实说,这个需要机遇。把 7 年前的我穿越到今天,我也不能保证能再做出一个 Vue 这种级别的项目。为什么呢?因为影响力的本质来自于解决问题。跟科研一样,如果一个领域的问题已经被解决得差不多了,那么在这个领域制造 impact 的难度就高了很多。在恰当的时机解决了恰当的问题,会产生很大的影响力,但问题总是处在一个不断被发现和解决的动态平衡中,你能否发现那个值得解决,同时你也有能力解决的问题,需要一定程度的机遇。
这里明确一个大前提:创造影响力的机会总是存在,但受一定的时代进程的影响。这里并不是说能不能成完全靠运气:作为个人想要最大化创造影响力的机会,最重要的是两点:
在大前端 / js 语境下 (2) 大致属于 “努力就能做到” 的范畴 —— 说实话前端没有什么艰深到必须拼智商的东西,明确了需求的前提下,大部分东西都能做出来。当然我这么说可能过于简略了,如果你是一个新人,肯定是要先好好打基础,多看多研究,模仿着造几个轮子,开源那么一两个小库。代码细节上还是有很多经验需要靠时间去积累的。
当你具备了 (2) 以后,更难的是 (1),也就是搞明白力气应该花在哪里。具备 (2) 的人远远多于 (1) —— 但最终做出影响力的人必然是兼具 (1) 和 (2)。
有些人可能有 (2) 的能力,但是在问题的发现上完全以自己的偏好或者是技术兴趣为主,那么即使投入很多,也可能产生不了太大的影响力。程序员很容易对实现过程产生兴奋感,但这也恰恰是个很常见的陷阱。因为想实现一个东西,把它做成了一套方案,但其实这个方案可能要么根本没有受众,或是这个问题早就被别人更好地解决了...
这里明确一下,在一个小众领域深耕活的很滋润也不是不可能,不想迎合大众,就是想单纯享受钻研技术的乐趣也是一个合理的选择。但这种前提下也就别抱怨影响力做不大。想要影响力大,你就必须思考 “什么才是值得解决的问题”。