为什么程序员喜欢在半夜写代码?

简介:

本文的作者是 Swizec Teller,他是一名自由职业者兼连续创业家,有超过17 年以上的软件开发经验,自称 A Geek with a Hat。几年前因为在inside.com上发了一篇文章《Why programmers work at night》,解释为什么大部分工程师,包括他本人,总是遵循着「吸血鬼的生活作息」来写代码。

《Why programmers work at night》最后还写成了一本书,可以在Swizec Teller的网站上购买电子书或实体书籍。书的内容主要是其文章的延伸,加上他担任工程师以来的个人经验、采访其他工程师的心得、以及针对工程师的心理学研究。

很多人笑说:「工程师是可以将咖啡因转换成代码的机器。」

他们会告诉你工作最有效率的时段是在夜深人静的时候。有些人比较早,有些人比较晚,最常见到的作息时间大概是这两种:凌晨四点起床做事的,跟凌晨四点做完事去睡觉的。

03797860ba7bfe9558357def21375b3dac979641

这种作息时间的用意就是为了减少分心的机会。不过你可能会问,锁上房门不是可以达到一样的效果?何必熬夜伤身写代码?

深夜工作的关键就在于三件事:创作者的时间表、困倦的大脑、明亮的电脑屏幕。

创作者的时间表

Paul Graham在2009年写了一篇文章《Maker’s Schedule, Manager’s Schedule》,他认为基本上世界上主要分成两种时间表,一种是「管理者的时间表」(Manager’s Schedule),适用于总经理、总监、产品经理等「管理者」;另一种则是「创作者的时间表」(Maker’s Schedule),适用于软件工程师、设计师、开发者、作家等「创意工作者」。

首先先简单介绍「管理者的时间表」,这种时间表是以「一小时」为基本划分单位,每小时都有不同的事情需要处理,大部份的人都是在这样的时间表下工作。Paul Graham 认为这是一个适合「下命令」的时间表(Schedule of command),因为时间可以弹性安排、拆开再重组,所以这个小时去开会、下个小时要整理会议记录、再下个小时去拜访厂商,即使不小心分心了,十分钟的分心顶多耗掉一个小时的时间,每件事情都可以立即处理。

另一种则是「创作者的时间表」,也就是我们这些工程师所遵循的时间表。Paul Graham 认为对创作者而言,每个时间单位至少要有半天这么长,因为工程师不可能在一个小时内写完一个功能,一个小时可能还不够他们「准备开始」写代码,毕竟「创作」是需要时间酝酿的。

这样的时间表就像在一个庞大的抽象系统中投入大量的精力工作,有人比喻成用昂贵的水晶玻璃来盖房子,一旦有人分散你的注意力,整项工程就会瞬间崩塌,碎成千万片。这就是为什么工程师非常讨厌工作时被别人打断或分心

也因为工程师非常需要集中精神来工作,所以除非能连续好几个小时不被打扰,不然我们根本不想开始工作。好不容易在脑子里勾勒出设计流程、进入状况,一旦被打断,一切都得卷土重来。

事实上,如果你和创业家们讨论这个问题,就会发现他们在白天里根本没办法完成任何开发工作。最普遍的障碍就是受到一连串的干扰,像是临时出现许多急事需要处理、重要的电子邮件需要回覆等等。因此创业家大部份都选在深夜里、其他人在休息的时候,再进行这些开发工作。

d9f6d33255bf149bdcf4a3fe1f3b17a46aebea42

困倦的大脑

不过工程师们晚上也还是得睡觉,毕竟我们又不是什么不用休息的新新人类,而且白天的精神一定还是比晚上好上许多。那为什么我们要把这些复杂的开发工作留在大脑困倦的时候做,然而头脑最敏锐清晰时,却做些相对简单的事情呢?

因为「累」是让工程师Code 更好的诀窍。

听过Ballmer Peak 吗?一点点的微醺可以让工程师发挥超人般的Coding 技巧,然而一点点疲倦也可以达到一样的效果。当你的大脑开始累了、困了的时候,根本没有多余的精力可以「分心」,你不得不集中精神完成工作。

以我个人的经验来说,在喝了太多茶或能量饮料、精神最充沛的时候,我工作反而最没效率。照理说,有这么多的精力跟脑力,应该能用来写代码、找bug,但事实上因为大脑跟身体「太嗨」,我根本静不下心来好好做事,一下子上Twitter、一下子看Hacker News,没办法专注在同一件事情上两秒钟。

相反的,当有点累时,我才会把屁股好好的黏在椅子上开始写代码。在大脑稍微有点疲倦的情况下,我可以写代码连续写上好几个小时,根本不会想到Twitter 或Facebook,完全忘记网路的存在。

而且我发现大多数的工程师、开发者们都有和我一样的情况。日常生活中百分之八十的事情,都不需要大脑全力运作就能解决,因此在脑力过剩的情况下,你就会去找其他事情做。疲倦会让你「笨得刚刚好」,没有多余的脑容量塞其他东西,脑力只够把手边的工作做完,根本没办法分心。

明亮的电脑屏幕

这点倒是很好理解,晚上长时间地盯着电脑萤幕工作,会延迟你的睡眠周期,让你忘记疲倦,直到凌晨三、四点才去睡觉,然后睡到隔天中午才起床。然而当夜晚再次来临时,你会感觉精神很好,这是当然的!毕竟你睡到中午才起床啊。

重复这样的作息一阵子后,你的身体会适应这样的规律,活在一个不同的「时区」。更有趣的是,我发现这样的睡眠周期不会一直向后延,而是在凌晨三、四点左右达到一个平衡,然后停留在这个时区里。

这可能是因为,如果一直向后延,睡到下午、甚至傍晚才起床的话,其他人会认为你是个无可救药的大懒虫,这种「社会压力」逼得我们不得不停留在四点入睡、中午起床的时区里,毕竟再更晚睡的话,中午肯定是起不来啦!

78385f0f0207671751030c05a77ccb8a715e3403

总而言之,工程师之所以偏爱在三更半夜写代码,就是因为在深夜里工作时间没有限制,可以更灵活地运用时间(最惨就是今晚不睡觉而已),而且大脑疲倦得不容易分心,最后,狂盯着电脑屏幕刚好可以保持清醒。



原文发布时间为:2018-10-13

本文作者:Swizec Teller

本文来自云栖社区合作伙伴“Python爱好者社区”,了解相关信息可以关注“Python爱好者社区”。

相关文章
|
Java
【极问系列】springBoot集成elasticsearch出现Unable to parse response body for Response
【极问系列】springBoot集成elasticsearch出现Unable to parse response body for Response
1557 2
|
小程序
uni-app:刷新当前页面
执行这三行代码就可以实现uniapp刷新当前页面。
4762 0
空壳备案主体会自动注销时间
空壳备案主体会自动注销时间https://www.20200824.com/48.html
2305 0
|
6月前
|
文字识别 监控 Java
顺丰同城抢单辅助脚本,顺丰骑士抢单辅助免封号,自动抢单神器【java版开源】
这是一套OCR实时检测订单列表并自动右滑的完整代码方案,适用于学习研究。代码包含四个主要模块:OCR处理(文字识别)、价格分析
|
应用服务中间件 PHP nginx
访问网站500 Internal Server Error怎么办
访问网站500 Internal Server Error怎么办
|
小程序 前端开发 API
微信小程序全栈开发中的多端适配与响应式布局是一种高效的开发模式。
探讨小程序全栈开发中的多端适配与响应式布局,旨在实现统一的用户体验。多端适配包括平台和设备适配,确保小程序能在不同环境稳定运行。响应式布局利用媒体查询和弹性布局技术,使界面适应各种屏幕尺寸。实践中需考虑兼容性、性能优化及用户体验,借助跨平台框架如Taro或uni-app可简化开发流程,提升效率。
423 1
|
存储 SQL JSON
大分区表高并发性能提升100倍?阿里云 RDS PostgreSQL 12 特性解读
世界上几乎最强大的开源数据库系统 PostgreSQL,于 2019 年 10 月 3 日发布了 12 版本,该版本已经在阿里云正式发布。PostgreSQL 12 在功能和性能上都有很大提升,如大分区表高并发性能提升百倍,B-tree 索引空间和性能优化,实现 SQL 2016 标准的 JSON 特性,支持多列 MCV(Most-Common-Value)统计,内联 CTE(Common table expressions)以及可插拔的表存储访问接口等。本文对部分特性进行解读。
3610 0
大分区表高并发性能提升100倍?阿里云 RDS PostgreSQL 12 特性解读
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进 - 注意力机制】HCF-Net 之 PPA:并行化注意力设计 | 小目标
YOLO目标检测专栏介绍了HCF-Net,一种用于红外小目标检测的深度学习模型,它通过PPA、DASI和MDCR模块提升性能。PPA利用多分支特征提取和注意力机制,DASI实现自适应特征融合,MDCR通过多层深度可分离卷积细化空间特征。HCF-Net在SIRST数据集上表现出色,超越其他方法。论文和代码分别在[arxiv.org](https://arxiv.org/pdf/2403.10778)和[github.com/zhengshuchen/HCFNet](https://github.com/zhengshuchen/HCFNet)上。YOLOv8的PPA类展示了整合注意力机制的结构
|
域名解析 负载均衡 网络协议
【信息收集】 IP信息收集
IP信息收集、CDN、C段、DNS记录
486 3
|
人工智能 运维 Serverless
30 秒出服装设计稿,森马用函数计算+AIGC 整“新活”!
阿里云函数计算帮助森马应对AI项目初期的决策周期长、自建GPU集群成本高和模型部署难的挑战,通过提供一键部署的Stable Diffusion模型,实现快速的AI推理应用开发和部署。
166951 13