查看原文
其他

别人看源码,那我也要看!

鱼皮 程序员鱼皮 2022-08-14

大家好,我是鱼皮,最近金三银四求职季到了,我发现有一些小伙伴开始焦虑了,比如我 星球 里的一位朋友,问了我这样一个问题:

我猜想这位小伙伴的问题是指阅读一些知名框架 / 项目的源码,而不是读老师作业题中的代码。

关于是否要去看源码这件事,简单聊聊我的看法吧。

首先,很多程序员会觉得程序员的最高境界就是 看牛逼源码写牛逼源码 ,我个人也对这点不置可否,毕竟这就是学习 + 创造的过程嘛。无论我们处于什么学习阶段,入门也好、精通也罢,都应该多去看别人的源码来学习,也应该多去写代码来实践。

同样,阅读知名项目的源码不仅能给我们的编程技能带来很大的提升,也会给我们求职(写简历、面试)增加核心竞争力。

正因如此,大家都知道读源码好了,网上培训机构的课程也卷起来了,动不动就是什么带你读源码、教你写源码(对某些同学的确有帮助)。。。

但都是读源码,为啥有些人读的过程就像是看本小说,有些人读起来却像是在背课文?为啥有的同学读完后能自己写一个,有些同学读完就忘、啥收获都没有呢?

这就是咱们该关注的问题:应该什么时候去读优质项目的源码?

我个人觉得主要是两个因素吧,一是你自己的 积累 ,二是 性价比

积累

如果还没有足够的积累,缺少一些前置知识(比如设计模式),就直接去读源码,肯定会知难而退或者半途而废。

我们学任何编程技术都应该遵循以下步骤:

  1. 先了解这技术的作用。比如 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器。
  2. 能够使用该技术来解决问题(完成需求)。比如用 Nginx 搭建自己的网站,支持被他人访问。
  3. 学习如何更好地用它来解决问题。比如了解 Nginx 各项配置,怎么根据情况去配置对应参数,提高性能等等。
  4. 了解其架构组成、各模块作用、各模块通讯机制、核心设计原理等。比如 Nginx 的架构图:
Nginx 整体架构
  1. 最后才是阅读源码,深挖细节。

如果你还不会使用某个技术、没有用它做过项目,那么很多这个技术的概念你可能都是不了解的,看源码的时候也绝对是一脸懵。

我自己也读过一些框架的源码,我感觉理想的看源码过程应该是:你先去猜想作者会怎么实现、自己心里有一个大致的预期和方案,再去通过读源码来验证自己的猜想是否正确。类比为做数学题的话,就是去检查答案;而不是没学过知识点就去硬看答案。

找工作的话,不一定非要阅读牛逼源码,一般能做到倒数第二步(了解架构和设计原理)就足够了。

性价比

看源码毫无疑问会花费大量的时间,这就需要我们去衡量性价比。

到底是去看源码,还是去做自己的项目呢?

我个人认为,这取决于你自己当前的阶段和发展目标。就拿我本人来说,我是很喜欢做项目的,而目前我学的大部分技术已经能够满足我做项目的需求,一些调优技巧我也有所实践,那我可能就不会投入太多时间去看源码。但是当我写程序的过程中遇到问题时,我会本能地追踪进源代码去分析。即 带着目的去读源码

对于求职的同学来说,如果你还没有项目经历,我建议你先不要想着去读源码(可以了解,但别花太多时间),而是应该先把企业中常用的技术框架玩转。源码等找到工作再去精心研究也并不迟。



所以,不要看别人去读源码,你也跟着去读,更不用因此感到焦虑。

幸存者偏差,无论是校园学生还是职场员工,真正敢说自己读过牛逼源码的同学还是少数。当然,追求极致的野心我们还是要有的,向写出优质源码的大佬表示致敬。

最后,欢迎大家加入鱼皮的 编程学习圈子 ,和 3000 多名 小伙伴们一起交流学习,向大佬 1 对 1 提问、跟着鱼皮直播做项目~


往期推荐

鱼皮的项目视频被狗曝光了。。。

这代码谁写的,太可怕了!

帮改简历,发现了一些 “通病”

并发编程的 10 大坑,你踩过几个?

给学弟几个找工作的重要信息!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存