普通程序员和大神级程序员有什么区别?[知乎]

2020-04-10

step 1:风雪海

可以分为三个阶段

低级程序员 为找Bug焦头烂额,拆东墙,补西墙,Bug不断

中级程序员 制造的bug可以全部解决

大神程序员 过千行而不留bug,此乃大神也

其实好的程序员都是分工明确

软件系统能分好多层,对于底层开发的程序员对业务根本上没什么感知的,他们只负责他们自己的那个环节开发就是了,他们的开发的一些问题更多的是与自己上下层的程序员交流,从他们那儿得到反馈并加以改进,每个人只关心自己那里的对外输入与输出

写技术文档,一些模块的设计,实现流程都是要以文档的形式先写出来,不是直接上来就开始编码的,有一些大公司写这些技术文档的时间甚至比写代码的时间都要长很多,并且有时还要发各种各样流程的邮件,这些都占用了他们工作中的大部分时间。

提示每个地方的程序员都是分工比较明确,每个程序员所做的事情从技术上来说就比较单一了,就技术这块,服务器有专门的运维工程师来管,数据库有专门的DBA来管,程序员只写代码就可以了,而程序员这块内部又分好多层次,如底层的程序员与业务层程序员,前端程序员,后端程序员,等等。

对于一件事情不停的重复做就是专家嘛,一个程序员长期就专注于某一个领域,常年做,就对这块当然就是最熟悉了,就是这块的专家,在单一某一方面的专业性就会相对强一些。

码编码时间少主要是因为写文档时间与走流程时间过长导致。

每个人就像一个螺丝钉一样,人多竞争也大,一般稍微一点点优秀的人也很难在这些人中突出出来,要想能够从这么多人中,出类拔萃,一层层晋升,走上金字塔的顶端,必须有超强的能力才行,虽然你优秀,但是比你优秀的人太多了,因此在大公司能够得到很高的职位是很不容易,可能会有一些小的晋升,但是晋升到一定程度就可能碰见天花板了,再也无法上去

找在小的程序员,可能就是野蛮生长了,做的事就比较综合,一个公司中就5个程序员,他就是其他人眼中的“技术”,他们要拦下公司的所有与技术有关的“技术”活,除了会服务器,数据库,还要写代码,甚至公司的打印机,网络出问题了也需要他们帮忙。

他们做了那么多的事情,像写文档这事,发邮件这事能节省时间就节省时间了,因此小公司的程序员很少写技术文档的,他们只是写代码,甚至连注释都不会写的,这样就造成好多代码非常难以维护,由于这样的情况,会发现这些程序员特别吃香,他们就是公司的半边天,他们中一个人离职了,没人能维护了他们的代码,即使再招一个比较牛的程序员进来也是非常难以下手原来人写的代码,曾经还有小公司因为一个程序员离职导致业务停滞很长一段时间。

step 2:量子位

或许从大神们的工作状态中,能找到一些蛛丝马迹。

有位名叫Ivan Bessarabov (简称“伊万”) 的好事者,刚刚统计了各路大佬的代码提交 (git commit) 时间分布。

包括Linux之父,Python之父,Go语言的作者……

 

 

伊万考虑了时区,并把多人合作提交的代码踢出去没算。

结果很有意思,发现了几个不同的物种:正常人类,夜行兽,还有……永动机。

这引起了网友的热烈讨论,Hacker News热度已经超过600点:

 

 

正常人类

正常人类通常在白天工作。

然而在程序员大佬中,这个物种并不常见。

Go语言的作者Rob Pike看上去算是个非常正常的人类:

(第一列是时间,第二列是代码行数。)

 

 

Go项目的repo显示,Rob的工作时间集中在上午9点到下午5点之间,朝九晚五,非常健康。

 

 

虽然一天可能就睡5个小时,业余时间似乎也都在coding吧,但总之,组织鉴定他是个正常人类!

下面这位“正常人类”,画风就开始有点不一样了:

 

 

这来自Linux之父Linus Torvalds:

 

 

白天工作,没问题。但是这位大神的代码从早上7点就开始有喷发之势,这个劲头几乎能持续到晚上八九点钟。

睡眠时间比上面那一位看上去更短了一些,不算上发呆时间的话。

 

 

这简直是正常人类里的战斗机。

而根据网友爆料,Linus可能是被迫成为正常人类的,在他有孩子之前,他也是昼伏夜出的夜行生物。

 

 

还有的人的画风是这样的:

 

 

这是FFmpeg的作者Fabrice Bellard在这个项目上的工作时间,真是越夜越开心啊。

令人好奇的是,这位大佬是会睡着睡着觉灵感突发蹦起来提交代码的吗……

夜行兽

说不上什么科学道理,但程序员大佬的身体构造可能发生了什么诡秘变异。

他们中间夜行生物的比例似乎要高于正常人类。

比如像这样:

 

 

这是LiveJournal的作者Brad Fitzpatrick在memcached项目上的提交。

 

 

大佬疯狂熬了一宿,灵感喷涌而出,太阳当空照的时候,他就满意地去睡觉了。

Brad对Go语言也有代码贡献,在这个项目上他的画风更加狂野了:

 

 

LLVM编译器的作者Chris Lattner也是当之无愧的夜行兽,他曾在苹果和特斯拉工作,现在则加入了谷歌。

 

 

他的代码提交时间长这样:

 

 

别人都是朝九晚五,这位大概是晚九朝五吧……

研究了那么多大佬,伊万小哥自然不会放过那位仁慈的独裁者。Python之父Guido van Rossum同样被戳上了夜行兽认证。

 

 

这样的代码提交时间似乎在说:美好的一天从下午开始,夜晚才是真正的coding time

 

 

至于夜行兽们为什么24小时都在提交代码,大概他们像猫一样白天也想醒就醒吧……

永动机

除了日行和夜行,还有一个物种叫白夜行,他们不止24小时提交代码,且产能没有重大波动。

“世界上最好的语言”PHP的创始人Rasmus Lerdorf,便是一个优秀的代表。

 

 

由于GitHub上找不到初版PHP,伊万便统计了这位创始人在php-src项目上的提交时间:

 

 

看得出,越到晚上越是兴奋,但白天体能也并没有太多损耗。

不过这个物种里,还有产能更加强盛的个体。

下图是两个Web框架,和它们的作者,名叫Sebastian Riedel。

 

 

 

 

△ 都是基于Perl语言的框架

这是他在Mojolicious框架项目里的提交时间表,数字快要爆炸了:

 

 

高产的时段,依然集中在夜晚。

但即便是产能最低的早上8点和9点区间,也都超过了100行。

伊万统计到这里,都不由地惊叹:

这时间表是疯了。好嫉妒他的生产力。

这样看来,每个物种都有各自的战斗机。

强大的战斗力难分高下。

谁喜欢周末写代码?

伊万的观察结果,被著名夜行者之一、LLVM编译器的作者Lattner翻了牌。

 

 

他提了个建议,说如果把工作日和周末分成两个数据集来分析的话,可能会很有趣。

于是,伊万就真的续了一篇。

因为有五个工作日,两个休息日。如果每日产能平均分配,应该是周中71.4%,周末28.6%。

那么,周末提交的比例超过28.6%的话,就表示更喜欢在周末写代码。反之,就是更倾向在工作日写代码。

结果,日行族的Linux之父Linus (19.3%) 和Go语言之父Pike (9.7%) ,都是工作日产能的更加丰厚。

可以理解,毕竟日出而作,日落而息,周中忙碌,周末休息,都是普通人眼里的自然规律。

 

 

夜行族便不同了,既有喜欢工作日的Python之父van Rossum (10.2%) ,也有喜欢周末提交代码的LLVM编译器作者Lattner (27.3%) 。

永动机又如何呢?

PHP创始人Lerdorf,是所有被测的著名程序员里,周末提交比例最高的,达到了30.3%。

 

 

而永动机中的战斗机、两个Web框架的作者Riedel,周末提交比例是26.2%。只是略低于26.8%。

总体来看,永动机可能是最喜欢周末上班的一个物种。

质疑之声

那么问题来了。Hacker News讨论版上,不到一天便涌来了187条评论,提出问题的也不少。

比如,顶楼是名叫Dahart的网友,他说不能轻易把提交时间等同与工作时间:

我都让团队尽量避免在夜里、周末、或者快到的时候提交代码,因为后面还有其他工作人员,需要这些代码。至少有15年都是这样过来的。

除此之外,推特网友@JDevlieghere还说,提交时间和git的机制有关系:

我自己跑了一下LLVM,然后发现代码提交时间,延迟了几个小时。

LLVM作者Lattner也附议了这个问题。

不过依然不可否认,代码提交时间是个非常好的观察角度。

One More Thing

 

 

独乐乐不如众乐乐,伊万小哥开源了代码,热情邀请大家一起探秘大佬都是什么物种。

所以现在你可以亲自解密一下国内大佬coding time了。

比如,听说广州程序员张小龙就喜欢深夜抽烟写代码,伴着音乐享受夜的温柔,不知道现在是否还这样……

分享到:
  • 收藏