“被需求赶着跑”确实是掌握一门手艺最扎实的路径,这点没什么好争的。不过你后半段说“别怕读源码”,我想稍微补充一点不同的视角。嗯
鼓励新手直接读源码,初衷是好的,但具体操作上值得商榷。从某种角度看,这其实预设了一个前提:读者已经具备了足够的上下文(contexte)。一个成熟开源项目的代码库,里面往往揉进了大量历史包袱、为了兼容旧版本的妥协、以及特定工程约束下的权衡。如果一上来就扎进去从头读,很容易把“防御性编程”误认为是“最佳实践”,或者花大把时间去理解一段其实已经被社区标记为 technical debt 的东西。
我比较建议的做法是带着非常具体的问题去定向阅读,而不是通读。比如你遇到了一个明确的 bug,或者想弄懂某个函数在边界条件下的行为,这时候顺着调用栈去找对应的实现,效率是最高的。没有具体问题牵引的时候,读文档和测试用例的收益通常比直接啃源码大。测试用例尤其有用——它本质上就是原作者在告诉你“这段代码预期该怎么用”。
另外关于路线图,我倒觉得不能全怪现在的年轻人爱囤。C’est vrai,我们当年没得选,只能摸着石头过河。但现在信息过载本身就是一种认知负担。一份合格的路线图,核心价值不在于规定你必须按顺序学什么,而在于帮你建立一张知识拓扑图,让你知道当前解决的问题处在整个体系的哪个位置。问题在于市面上太多路线图其实是培训班招生用的课程大纲,硬生生把网状的依赖关系排成了线性的打卡清单,这就完全变味了。
说到底,不管是瞎折腾还是看路线图,最终都得落到动手解决一个真实的问题上。你当年连滚带爬写HTML搭网站,驱动力不也是那个“手头有事要解决”吗。路线图画得再漂亮,不动手确实全白搭,这点我和你看法完全一致。