老生常谈!程序员为什么要阅读源代码?

大家好,我是码农先森。

阅读源码这是一个老生常谈的话题了,但又是很多人想做又没有付出行动的事情。前段时间我研究了 Swoole 的源代码,并且输出了系列的源码分析文章「感兴趣的朋友可以翻阅以前的文章」。虽然这个过程很枯燥和艰难,但到最后有种苦尽甘来的感觉,因为突破了自己之前一直想做又不敢做的一件事情。可能有很多人会说了,平常的工作中又用不到,为什么要去学习呢?如果你发出了这样的疑问,那么你大概率是初入职场的小白,或者是一年经验用十年的资深程序员,这里所说的「资深」要打双引号了。

面试

面试造航母,入职拧螺丝。相信大家对这句话的精髓都深有体会,面试期间面试的问题都似乎要求面试者具备上能捅破天,下能钻地球的能力,既要上得了厅堂,又要下得了厨房。站在用人单位的角度来看「小孩子才做选择题,成年人全都要」。那为什么会出现这种现象呢?还记得要几年前互联网如火如荼的时候,编程培训行业如雨后春笋般的孵化出一批速成程序员,大量出现在人才市场,仅仅靠背几套面试题就能获得不错的薪水。

如今互联网行业人才市场饱和,直接加剧了程序员之间的内部竞争。想象一下如果面试官手里握着好几份候选者的简历,然而偏偏你理解底层源码,那面试官会向谁发放 Offer 呢?答案显而易见,这就是阅读源码在面试中的意义,它让你形成了差异化的竞争,在这个过程中能够脱颖而出。

职业

作为一名职业的程序员,想要在自己的领域能够获得稳定且长足的发展,阅读源码是一道必须跨过去的坎。初入职场的前三年基本上都是参与常规的业务需求开发,大多数都处于增删改查「俗称CRUD粘贴复制」的阶段。三年后会尝试组件封装、框架脚手架的搭建「也就是大家常说的造轮子」,并且时不时的指点下初级程序员,解决一些项目层面的问题。到达第五年的这个时间点,这是一个职业生涯的转折点。

具备这个阶段经验的程序员,对于绝大多数的需求开发都可以信手拈来轻松应对,如果想要谋求更高的技术造诣,就要从组件、框架,乃至语言实现层面的源代码做为着手点来进行提升。职业的发展都是一个不断攀升地过程,类似于游戏中的升级打怪,一关关的突破「关关难过,关关过」,只有突破了阅读源代码这一关,才能让自己的职业得到更好、更顺利的发展。

兴趣

大家常说:“如果把兴趣变成了职业,那将是一种灾难”。如果反过来呢?职业成为了兴趣,那是不是意味着职业上会获得更大成功?这个问题我还无法回答,因为我还没有成功。但这个观点并不妨碍有些人把阅读源码作为一种兴趣爱好,如果这样做能够驱动阅读源码这件事情得以坚持下去,同时满足了自己的兴趣,又能从阅读源码中获得知识,岂不是两全其美。

说实话阅读源码的确是一件很枯燥乏味的事,最近我在阅读 Swoole 源代码的过程中就深有感触,期间也有看不下去的时候,但是心里总是默念「这是自己的兴趣」这才让我坚持下来。虽说这不确信阅读源码是不是我的兴趣,但还是让我用兴趣的意念把这件事给完成了,通过阅读源码让我明白了「兴趣」的伟大。

结语

对于阅读源码这个老生常谈的话题,首先「面试」带来的是短期价值,它让我们在面试的过程中形成差异化的竞争,从而让我们脱颖而出。其次「职业」带来的是长期价值,它让我们在自己的领域能够获得稳定且长足的发展。最后「兴趣」带来的是一种信念,它让我们在困难面前能够有坚持下去的勇气和动力。总而言之,阅读源码是一件利大于弊的事情,希望大家能持之以恒的对待,坚持做具有长期价值且正确的事情。

推荐

  • 深入理解 Swoole 的底层加载原理
  • Swoole 源码分析之 epoll 多路复用模块
  • Swoole 源码分析之 TCP Server 模块
  • Swoole 源码分析之 Http Server 模块

欢迎关注、分享、点赞、收藏、在看,我是码农先森。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/700264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

css font-family

知乎的font-family的设置理解 -apple-system, BlinkMacSystemFont 这两个值是为了确保在macOS和iOS系统上能够使用系统默认字体进行文本渲染。-apple-system特别为Safari浏览器设计,而BlinkMacSystemFont则主要针对基于Chromium的浏览器(如Chrome&#…

【Linux】shell——条件判断test,各种运算符,expr

条件判断——test 真——0 假——1 test expression or [ expression ] 整数运算符 字符串运算符 -z 长度是否为0 -n 长度是否不为0 str1 str2 str1 ! str2 补 &&-->逻辑与,前面为真后面才会执行 || -->逻辑或,前面为假后面才…

京东网页html+css简单制作1(附带源码和素材)

一.代码效果展示 代码html骨架结构分为头部top,颈部banner,中间部分main,腿部fortet-image,尾部fortter,五部分组成,从上至下,从左到右结构。(总体因为没设计版心,所以位置比较乱) 其中中部mai…

云动态摘要 2024-06-11

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [低至1折]腾讯混元大模型产品特惠 腾讯云 2024-06-06 腾讯混元大模型产品特惠,新用户1折起! 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用 最新产品更新 云服务器运维监…

设计模式-代理模式(结构型)

代理模式 代理模式是一种结构型模式,它可以通过一个类代理另一个类的功能。代理类持有被代理类的引用地址,负责将请求转发给代理类,并且可以在转发前后做一些处理 图解 角色 抽象主题(Subject): 定义代理对象和被代理…

【安卓13 源码】Input子系统(2) - input系统与应用进程通信

点击手机屏幕,可以分发input 事件到对应的view,由上一节知道input 是运行在system 进程的,那应用进程与系统进程是如何通讯的呢,相信本文可以给到一点小小的答案。 先给个结论:应用在resume 的时候才去建立与input 服…

项目部署(前后端)

一:多环境概念: 借鉴来源:多环境设计_程序员鱼皮-多环境设计-CSDN博客 为什么需要多环境: 第一个例子:我们可以设想,我们肯定玩过王者荣耀,且王者荣耀也一直在不断更新,如果按我们…

cleanmymac清理时要一直输入密码 CleanMyMac X一直提示输入密码的解决方案

CleanMyMac X是一款专业的Mac清理软件,可智能清理mac磁盘垃圾和多余语言安装包,快速释放电脑内存,轻松管理和升级Mac上的应用。同时CleanMyMac X可以强力卸载恶意软件,修复系统漏洞,一键扫描和优化Mac系统。 在使用Cle…

【人工智能基础学习】Andrew Ng-机器学习基础笔记

⭐️我叫忆_恒心,一名喜欢书写博客的研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支…

HyperSnap软件最新版下载-HyperSnap官方最新版附加详细安装步骤

​HyperSnap是一个老牌优秀的屏幕截图工具,全新界面,不仅能抓取标准桌面程序,还能抓取 DirectX, 3Dfx Glide的 游戏视频或 DVD 屏幕图,能以 20 多种图形格式(包括:BMP, GIF,JPEG, TIFF, PCX等)保…

鸿蒙开发:应用组件跨设备交互(流转)【跨端迁移】

跨端迁移 概述 在用户使用设备的过程中,当使用情境发生变化时(例如从室内走到户外或者周围有更适合的设备等),之前使用的设备可能已经不适合继续当前的任务,此时,用户可以选择新的设备来继续当前的任务&a…

C盘爆满?教你轻松清理无故产生的大量临时文件!

在电脑操作中,用户发现自己系统C盘爆满了,无缘无故产生了大量的临时文件,导致电脑运作变得卡顿,但不知道要怎么操作才能解决这个问题?接下来小编给小伙伴们带来不同的解决方法,轻松清理电脑上的临时文件。 …

【lesson7】服务端业务处理模块实现

文章目录 业务处理实现思路业务处理类设计成员变量成员函数RunModuleupLoadlistShowdownLoadgetETagInfo 业务处理实现思路 云备份项目中 ,业务处理模块是针对客户端的业务请求进行处理,并最终给与响应。而整个过程中包含以下要实现的功能: …

这所大学25考研计算机学院专业课已全面改考为408!南京信息工程大学计算机考研!

南京信息工程大学(Nanjing University of Information Science and Technology),简称“南信大”,位于江苏省南京市,是一所以大气科学为特色的全国重点大学,由江苏省人民政府、中华人民共和国教育部、中国气…

【lesson1】第三方库(jsoncpp,bundle, httplib)的介绍和使用

文章目录 jsoncpp库json 认识jsoncpp 认识jsoncpp 实现序列化jsoncpp 实现反序列化 bundle库bundle库实现文件压缩bundle库实现文件解压缩 httplib 库httplib 库搭建简单服务器httplib库搭建简单客户端 jsoncpp库 json 认识 json 是一种数据交换格式,采用完全独立…

OS进程取样器OS Process Sampler执行CMD/Shell命令

Apache JMeter - Users Manual: Component Reference 1.背景 项目上最近需要测试一种很少用到的DICOM协议,但是网上资料很少,基本上可以总结为三种方案: 直接发送TCP 16进制数据包,但是参数化数据准备难度大通过开发封装jar包发送,需要开发组提供通过发送cmd命令给前置机…

ES升级--05--快照生成 和备份

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 备份ES数据1.关闭集群自动均衡2.执行同步刷新3.停止集群节点的Elasticsearch服务4.修改Elasticsearch配置文件,开启快照功能,配置仓库目录为…

java:FeignClient通过RequestInterceptor自动添加header

示例代码 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.12.RELEASE</version> </dependency> <dependency><groupId>o…

f-stack和DPDK

GPT-4 (OpenAI) f-stack和DPDK&#xff08;数据平面开发套件&#xff09;都是与高性能网络处理相关的技术。它们的目的是提高数据包的处理速度&#xff0c;优化网络I/O的性能。以下是对这两者的简要解释&#xff1a; 1. **DPDK (Data Plane Development Kit):** DPDK 是一个…

柯桥成人外语培训|职场商务英语剑桥国际英语口语外贸商务英语

01 “puppy love”是什么意思&#xff1f; 大家都知道&#xff0c;puppy有“幼犬&#xff0c;小狗”的意思&#xff0c;love是“爱”&#xff0c;那puppy love是什么意思呢&#xff1f;可不是字面上表达的小狗的爱哦&#xff01; 其实&#xff0c;"puppy love"真正的…