5

现在很多人看源码似乎都是为了面试,纯粹的程序员应该在思考啥?

 3 years ago
source link: https://www.v2ex.com/t/786840
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

现在很多人看源码似乎都是为了面试,纯粹的程序员应该在思考啥?

  guimeisang · 1 天前 · 7602 次点击
88 条回复    2021-07-03 01:42:46 +08:00

securityCoding

securityCoding   1 天前   ❤️ 10

我一直觉得源码只是看的话根本没多大用处 , 得写得抄才能真正理解作者的意思

Saxton

Saxton   1 天前

如果你纯粹为了面试看源码,那没有意义。
如果你为了提升自我能力而看源码,那很有意义。

czfy

czfy   1 天前

什么是纯粹的程序员?
只需要和代码打交道,不需要和人打交道?这样的研发岗存在吗?

msaionyc

msaionyc   1 天前

有时候想了解一个组件是如何工作的
有时候想看一些优秀的模块设计,借鉴一些好的思想
纯粹为了面试看源码确实很枯燥,但看着看着感兴趣了也没准呢

kop1989

kop1989   1 天前

哪有所谓“纯粹的程序员”。

另外,不是为了面试而看源码,只有一个原因,就是想搞明白作者是怎么实现的,自己的设想和作者的实现孰优孰劣。
带着问题去阅读源码,是最好的提高自己的方式之一。

meteor957

meteor957   1 天前

p2pCoder

p2pCoder   1 天前

看代码,看书,都是一个积累的过程,并不是一个完全的知识内化的过程,说到底,还是要用了,要在诸多限制下落地,才是最有意思,最有挑战的。还是要想办法去真实的世界解决真实的问题,特别是后端、算法这种岗位。

dfkjgklfdjg

dfkjgklfdjg   1 天前

看源码是看因为某些地方自己卡壳了,然后想看看别人是怎么实现的,然后去读的源码,多看几个仓库,就会得到一个自己相对比较满意的解决方案。

现在大部分人看源码是为了面试,就是正常人没人看源码, 都是 API 战士,怎么实现的不知道,出现 bug 了怎么办?百度,也不去看 Issues,遇到真正喜欢 Coding 的人一比就黯然失色,为了能有竞争力,才开始读源码,刷算法,为了够到那根门槛而读 /刷。

内驱动学习不是每个人都有的,更何况那么多人都是来 IT 行业捡钱的,哪里还会放弃打王者的休息时间去学习。

不过那些直接啃源码的新人,从 VueJS 到 ExpressJs 坚持了一年还在啃,虽然我满头问号,但是我是真的佩服这个毅力(你干点啥不好...)。

3dwelcome

3dwelcome   1 天前   ❤️ 10

早就有老外吐槽过,"纯粹的程序员“都是凭爱好在写代码,而且都是上班写自己的代码,而且还不会很专注于一个商业项目,兴趣点总是在变。

你没办法让聪明人长时间 CRUD 。想了一下,好像有那么一点点道理。

e583409

e583409   1 天前

纯粹的程序员 定义是什么?
我现在慢慢发现自己喜欢上写代码 同时功利一点为了面试 开始刷 leetcode 半年刷了 190 道题
写的总结 https://mp.weixin.qq.com/s/0YqBCiTcRtk6hijGE7RfOw

wxw752

wxw752   1 天前

「天下无贼」

ace12

ace12   1 天前 via Android

@securityCoding 有时候还是能学到一些技巧的

luozhiyun

luozhiyun   1 天前   ❤️ 5

我感觉是为了兴趣看源码比较好。我现在在看一个框架或技术的源码之前会想,如果是我来做这件事,那么我会怎么做,会怎么实现。看到精妙的实现方案会惊叹,Woo ~ 这个不错,然后记录下来。慢慢的就形成了一篇篇的分享。
现在我在研究 TiDB,想看看它是如何做分布式数据库的,感兴趣的不妨一起看看: https://www.luozhiyun.com/archives/category/%e5%90%8e%e7%ab%af/tidb

terranboy

terranboy   1 天前   ❤️ 1

学学别人怎么写的 怎么思考的 不是挺好吗

kensoz

kensoz   1 天前

大多数公司都是业务代码,crud,有几个项目组需要搞懂源码级别的需求。
所以说看源码就是为了面试,除了你真的在工作中需要用。
极少数人说兴趣爱好,自我提升我信,但是大部分都是抱着或许面试用得着的心态来学。

h82258652

h82258652   1 天前

我看源码是为了魔改...

coderluan

coderluan   1 天前

纯粹的程序员应该在思考啥?

"今天午饭吃啥"

LowBi

LowBi   1 天前 via Android

思考怎么做产品

CodingNaux

CodingNaux   1 天前

为了面试去看源码,那也能从中学习,这也挺好
成年人的世界不是只有对与错
成年人的世界不容易,世道艰难
不要问为啥,这么做肯定有其原因,问就是卷

bigNewsMaker

bigNewsMaker   1 天前

都是带着目的去看源码,搞不懂有的人还看出优越感了

Jooooooooo

Jooooooooo   1 天前

应该思考怎么把业务做好啊, pm 提需求, 要在实现需求的基础上, 以程序员的视角看有没有可能做的更好.

charlie21

charlie21   1 天前

让他们把精力投入到无穷无尽的看源码过程之中 这很 OK

avastms

avastms   1 天前   ❤️ 2

你看,我今天带着批判的目光去看 Midway.js ,看看阿里这帮人做出了啥破玩意,
我发现文档里面,他们的 @Query 装饰器,竟然可以不用手动指定,而是自动取得参数的名字。
这是装饰器 API 中没有提供的,按道理只能取得参数的顺序,而不能取得参数的名字,这是不能实现的,我很好奇他们是怎么做的,甚至觉得是文档写错了。
所以我下载了这个项目的源码,找到了 Query 装饰器的实现。
你猜他怎么干的? 原地取得这个方法并给他 toString,拿到源码后正则匹配。
还能这么 xjb 干,我也是服了。

Oktfolio

Oktfolio   1 天前

我都看我目前需要的,比如 Spring Security 因为要去做改动,所以看了。
Spring 我就没去看,然后面试过不了......

littlewing

littlewing   1 天前

现在很多人写代码似乎都是为了钱,纯粹的程序员应该在思考啥?

hdfg159

hdfg159   1 天前 via Android

追随自己的兴趣去看源码,自然而然的想去读,看看别人的优雅写法和实现

avastms

avastms   1 天前

@avastms BTW 这样做是严重不可以的,因为这限制了被装饰的函数必须是原函数,而不能是被二次封装二次装饰的函数,是短视而破坏整体性的 API,为后来的开发埋坑,谁写的这个代码,工资-1

auh

auh   1 天前

程序员要没有那点工资,有几个这么激动的?之前是硬件专业,很后悔,毕业出来做软件了。没兴趣。天天都是那么一点点框架,真不知道有啥意思。

avastms

avastms   1 天前

@avastms BTW2,又看了一下文档,竟然参数装饰器由编译器确保在原函数声明后第一个运行,这样做问题竟然真的是不大的,只要参数装饰器没有多个且不嵌套就可以了,行,牛逼,工资-0.5 吧

DeWjjj

DeWjjj   1 天前 via Android

写什么框架看什么框架。

leven87leven87   1 天前

主要还是借鉴别人的思想,用在自己的项目中

bojue

bojue   1 天前

感觉还是解决方案的积累,看总比不看的好

icyalala

icyalala   1 天前

纯粹的程序员在思考:
这个变量该怎么命名?
我到底为什么要写代码?
晚上该吃什么?

tcpdump

tcpdump   1 天前

就算你是天赋异禀的天才程序员,是需要解决实际业务问题的,而不是炫技的。

HiShan

HiShan   1 天前   ❤️ 1

这题目就有矛盾的。

为了面试而看源码? 不是就是一种纯粹吗?

xiaket

xiaket   1 天前

有哪些源码看了可以帮助面试的, 干了这么多年活还真不知道.

no1xsyzy

no1xsyzy   1 天前

请先界定纯粹,或者说先界定不纯,你要把什么排除在外。

@avastms 这听着像是因为 Java 缺少 macro 。

www5070504

www5070504   1 天前

应该是在思考这作者到底为什么要这么写吧

ChoateYao

ChoateYao   1 天前

看源码是为了了解别人实现,把别人的变成自己的。

为了面试看源码,没有实践思考大部分都是为了看而看,就好比设计模式,多少人看了又看就是很少应用到自己项目里面。

qiaobeier

qiaobeier   1 天前   ❤️ 1

我认为王小波算得上是纯粹的程序员。

HolmLoh

HolmLoh   1 天前   ❤️ 1

看大型开源框架的源码对大部分人的日常开发没什么鸟用
日常开发不同于开源的框架,框架为了保证拓展能力必然会写的极其的绕,举个例子就是 spring bean 的生命周期,光是创建到销毁就分了 7 步,一般的业务开发写成这样不是自讨苦吃吗,这也为什么有人说 Java 人都被设计模式荼毒的原因

ericgui

ericgui   1 天前

用到啥看啥,比如我最近要用到 rc-table 和 rc-calendar,我考虑自己发包,毕竟不敢把自己托付给福报长,但 又不得不用,于是只好 fork 一份,自己维护了。这就要去阅读源码了,那我是不是可以宣称,我阅读过 ant design 的源码?

阅读源码这个事,也要看投入产出比,也要看是要学习的目的,是真的要用到,还是要了解茴字有几种写法

而我最近在详细研究我司的现有代码,其实已经真的也都是收获非常大的,毕竟看完了,就能立刻用得到

所以个人的提高,只是“阅读”源码也没什么 p 用

ca1123

ca1123   1 天前

这说明面试还不错啊

ipwx

ipwx   1 天前

只是阅读源码效率极低。要从读源码开始,争取进步到看 API 就能猜出怎么实现的程度。

wfd0807

wfd0807   1 天前

真正的程序员在思考怎么赚钱 DOGE

hhyyd

hhyyd   1 天前

就像小时候学写作文,先是读优秀课文作文等,做些摘抄什么的。从整段背诵,到运用名言名句,再到考试独立完成一篇作文。多读课文,读诗词名句,优秀作文。都是必要的积累。

至于是考试前突袭背几篇拿高分,还是长期培养阅读的习惯,熟好熟坏,不言自明。

namelosw

namelosw   1 天前   ❤️ 1

很多人的层次还谈不上思考「纯粹程序员」的问题,思考的更多是吃饭,所以。

我个人理解的「纯粹程序员」就是跳出已有框架,更多思考计算本质的人。

其实「纯粹程序员」一直存在,在计算机出现之前就已经有了,比如早期的 Haskell Curry, Alonzo Church, Alan Turing,或者后来的 John McCarthy, Alan Kay, Tony Hoare 等等。写业务的程序员固然重要,但是一个业务程序员消失了就会有人做他的工作,一个公司消失了就会有其他公司填补它的市场。但是这些推动业界发展的关键人物没存在过,我们现在可能还没有电脑 / 写二进制 / 写 Fortran 等等。

当然也不用非得只思考本质不干活,很多大佬也是工业界出来的,比如 Joe Armstrong 在爱立信搞的 Erlang 其实是在不知道 Actor 的情况下独立实现了它。

我感觉 SICP 里面的比喻很恰到好处:我们现在看待计算机就跟古埃及人看待几何一样 — 那个时代大部分和几何相关的工作者更关注的是怎么用标尺,量角器这些「工具」,而我们回头看那个时代的时候根本不会关心这些工具,而是会认为他们发现背后的几何原理拥有重大意义。那么以同样的方式思考,远未来的人回头看 20 ~ 21 世纪的计算机科学 / 编程,更关注的显然不是 M1 或者 Rust,而是更本质的「计算」本身。

如果只是想找一些更纯粹的问题思考的话,看源码不如做一做 Nand to Tetris 这种项目,走马观花地做一遍下来你就会有很多好奇的方向,和你比较感兴趣的抽象层,和很多「为什么不」「如果这样的话」之类的问题可以深入。

kongkongyzt

kongkongyzt   1 天前

很多时候看源码既不是为了面试或者是提高自我能力, 而是看这东西到底咋实现的, 为了追踪问题而去看源码

ReferenceE

ReferenceE   1 天前 via Android

?面试不至于看源码吧
看源码主要是思考和使用
例如,释放类时都会调 IDeposited 接口
没人会关心 runtime 中,deposited 各个 service 的顺序是什么

charlie21

charlie21   1 天前

你用你用的工具,古埃及人用古埃及人的工具,你们都不关心它的意义,只想准确正确交工然后早点下班回家吃饭。

没人要的 “意义” 就应该烂在地里,参考 古希腊哲学起源 ..

希腊哲学是从关心世界的根源即本原开始的,如泰勒斯的“水”、阿那克西曼德的“无限”、阿那克西米尼的“气”、毕达哥拉斯的“数”、赫拉克利特的“火”
http://db.cssn.cn/sjxz/zxqksjk/ztjj/201906/t20190610_4914802.shtml

simo

simo   1 天前

纯粹的程序员都在思考怎么 v2 发问和作答,我们都很纯粹

xloger

xloger   1 天前

而且很多为了面试“看源码”的,大多看的还是网上别人发的源码分析文章。

别人说看 Android 系统源码时我都会问怎么看的,IDE 点进去看的只是一部分源码,完整的是得自己额外下源码的,没说这个过程的,可以想象出他们是怎么“看源码”的了。

我关于 Android 本身的源码,印象比较深的一次是一个 Activity 关闭后没有及时调 onDestory,网上搜索无果,但是看到 Logcat 上看到了一条日志,然后就源码查这个日志,看怎么处罚这个条件,检查到最后知道是 handler 里有消息没处理完,再一验,是其他同事不小心在某些情况下会死循环反复发 Message 。
框架的源码,我一次是用 Glide 解析 Gif,一部分 Gif 用默认的加载方法不会动。我怀疑是 Glide 解析这个文件把它当普通文件识别了,也许是我生成的 Gif 头文件信息不对之类的。也看了一会源码,不过时间紧张最后直接在应用层加了个判断了。

纯粹的程序员看源码,我觉得分为两个情况:
1 、抱着解决某个问题的角度,去阅读分析这个问题是怎么产生的,该怎么解决。
2 、觉得这个功能实现得很棒,很厉害,去研究学习怎么设计怎么实现的。

nicocho

nicocho   1 天前

最近准备,看了好多源码。
刚好来个新需求,我借鉴了源码里的设计方式,学以致用?感觉挺好的,

KouShuiYu

KouShuiYu   1 天前

+ 学习
+ 借鉴
+ 文档不够详细

wobuhuicode

wobuhuicode   1 天前

面试现在不是都刷题的吗?
读源码来面试不靠谱吧。

ily433664

ily433664   1 天前

早上吃什么?
中午吃什么?
晚上吃什么?

sjzjams

sjzjams   1 天前

如果真的是认真看源码那就不用为面试担忧了,提高在不知不觉中,看源码看算法都是给自己开拓思路

fyxtc

fyxtc   1 天前

@securityCoding 极端了,阅读代码本身就有足够的含量,问题是是否看的是优秀的代码以及是否理解透彻

RainCats

RainCats   1 天前

在中国,纯粹的程序员大概饿死了

shangfabao

shangfabao   1 天前

我的有时候看源码是因为一些开源的文档里写的不清楚

xbdsky

xbdsky   1 天前

思考怎么找对象

suotm

suotm   1 天前

define "纯粹程序员"?

feather12315

feather12315   1 天前 via Android

弄懂黑科技怎么实现的

jiayong2793

jiayong2793   1 天前

架构师思考的是需求和方案,程序员只思考代码

westoy

westoy   1 天前

当然在思考, 晚饭吃什么

snappyone

snappyone   1 天前

思考不懂的东西,然后到处找答案

songlinliee

songlinliee   1 天前

学模电的时候会先从二极管三极管的原理开始讲。
但是最后学到后面的章节其实能理解特性就行。
所以学会基础的目的是为了忘记基础?

fgk

fgk   1 天前

应该是为了看作者的思路、编码风格影像才深刻

ClayStan

ClayStan   1 天前

@czfy 辞职,然后来开源社区(前提是不缺钱

ylsc633

ylsc633   1 天前

1. 看别人的项目

目的: 学习别人的写法, 看看他们怎么写项目的, 有没有值得学习的地方, 代码是否比我的优雅,我需要进步,不断学习才能进步

2. 看编程语言底层源码

目的: 比如我写 go, 看底层源码, 对面试肯定有好处, 但主要是 能看到底层实现, 可以让自己少踩一些坑(比如 map,看了源码知道 有并发读写问题,底层实现的时候有异常抛出, 比如一些并发原语,底层实现是 noCopy 如果传递的话,可能有一些意想不到的问题出现), 另外,看底层如何实现也是十分有意思的, 比如互斥锁, 什么时候自旋,什么时候会进入饥饿模式, 什么时候退出等等

但是因为个人基础一般,能力有限, 只能尽量去看

railgun

railgun   1 天前

不是为了 debug 我才懒得看开源的代码

akira

akira   1 天前

就和你做数学题的时候是一样的,
不会做的时候 ,看看别人是怎么解题的
会做的时候,看看别人的思路和自己的有什么不同

oldmanong

oldmanong   1 天前 via iPhone   ❤️ 1

我一般是遇到异常报错或者 bug 才去看源码,一边口吐莲花一边看,效果还特好

kingfalse

kingfalse   21 小时 55 分钟前 via Android

唯一的用处就是面试,别的都是扯淡,其他的不都得面试过了再说遇到遇不到

zhw2590582

zhw2590582   21 小时 55 分钟前

对我来说源码看过很容易忘,但作者写代码的思路就会保留下来,挺有用

undefine2020

undefine2020   21 小时 28 分钟前

@3dwelcome 那看来只有发达国家的程序员和我们的 x 二代程序员有资格当“聪明人”了

scemsjyd

scemsjyd   21 小时 26 分钟前 via Android

我看源码纯粹是想知道代码底层怎么实现的,写代码的时候心里有数。不然用错了,都不知道。不知道大家的想法是什么样的?

Marszm

Marszm   21 小时 22 分钟前

可以找漏洞。。干安全的最喜欢审计源码了。
纯粹的程序员,可能思考如何让程序改变世界。

mikulch

mikulch   21 小时 8 分钟前

@avastms 阿里的项目是这样子的吧,正常操作了。

zjq07

zjq07   20 小时 51 分钟前

我只是想知道 TM 的为什么报错

FreeEx

FreeEx   20 小时 38 分钟前

个人为了学习看源码我觉得很好,但是面试的时候问源码就很操蛋了,哪个框架是一下子变成现在这个样子的?都是一点点慢慢发展的,为了面试使劲背 xxx 为什么这么设计,下一个版本变了又要换一种背法了。

hu8245

hu8245   20 小时 16 分钟前

@securityCoding 哈哈哈,真相了。边抄边说妙啊妙啊,真是妙蛙种子吃着妙脆角妙进了米奇妙妙屋,妙到家了

lifesimple

lifesimple   14 小时 51 分钟前

面向工资编程 怎么能说没有意义呢🐶

Akiya

Akiya   13 小时 39 分钟前

遇到第三方库出的问题的时候,只能自己去看源码了啊

james122333

james122333   4 小时 43 分钟前 via Android

@HolmLoh

然而即便是如此扩展能力也是差强人意
只是从难写变成还可以 一个特殊虚求基本上就趴了 或者绞尽脑汁费脑力体力才想出

james122333

james122333   4 小时 41 分钟前 via Android

@james122333 需求

james122333

james122333   4 小时 36 分钟前 via Android

@jiayong2793

因为程序员是接触代码第一线
当然考虑有所不同

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK