“头脑需要书,就像剑需要磨刀石一样”。
扫码关注《Python学研大本营》,加入读者群,分享更多精彩
在Game of Thrones(《权力的游戏》)中 Tyrion Lannister 对 Jon Snow 说的“头脑需要书,就像剑需要磨刀石一样”。
开发人员对打字的人体工程学进行了过度优化,而对思考的人体工程学却不够优化。
前几天我洗了个澡。这是早上(通常都是最好的淋浴时间),我正在反思我如何度过白天的时间。作为一名在家工作的顾问,我经常需要证明我的账单和时间是合理的,在这种情况下,我正在证明在淋浴时花更多的钱是合理的。
像我们大多数人一样,我的职业生涯开始时的印象是,高效的一天是在键盘上以符合人体工程学的方式在 Microsoft Visual Basic 6.0 专业版中输入数百行代码,而不是站在非常热的高压淡水流中。但是,我作为开发人员花费的时间越长,我就越不相信我需要在办公桌前提供我们高级工程顾问提供的真正令人震惊的电子表格到 Web 应用程序的业务价值。
为了让您也可以证明将早晨的大部分时间都笼罩在清洁温暖的茧中,让我们分解一下,看看有效软件开发的 5 项身体活动。像所有好的列表一样,这是按照时间和重要性增加的顺序大致排序的。
第五位:说话
一些软件开发可能不需要任何谈话就可以有效。例如,我知道大声谈论 Linux 内核开发被普遍认为是不礼貌的行为。~/bin 的内容太多了,我们就不说了。
但我从事的每一个商业项目至少都需要一些讨论。当人们太忙或太害羞而无法说话时,缺乏高带宽通信可能会导致难以梳理需求并解开解释不清的业务问题。
但更重要的是,缺乏交谈使建立信任和融洽变得困难——这在任何新关系的早期阶段都至关重要。作为社交动物,我们特别擅长口头上这样做,而不是特别擅长通过电子邮件和辛辣的子推文做到这一点。
另一方面,我参与过一些项目,其中谈话是一种伪装,没有人知道该做什么。十几个人坐在一个房间里,一言不发地聊了一个小时,我们走出去的时候都比走进去时更笨。
所以在大多数情况下:说话很关键,但要适量。
第四位:听
老实说,我只是为了对称而将其包括在内。我唯一要补充的是,我们有两只耳朵和一张嘴,所以要么双耳听力提供了对抗某些选择压力的进化优势,要么我们应该听的次数是我们说话的两倍。
随心所欲地取用你精辟的智慧。
(快速谷歌为什么我们有两只耳朵)
第三位:写作
当然是写代码!还有……自述文件、评论、内联文档、PR 描述、代码审查、git 提交;这都是核心工作的一部分。很容易将这种元编写视为真正的“代码”编写之上的开销。但是在这些其他地方有效地编写代码是您代码的力量倍增器。
更重要的是,根据我的经验,最好的沟通是书面的。
它是异步的,这意味着它可以在每个读者方便的时候使用(即在早上淋浴后)。
它可以很容易地分发,并且在共享时没有保真度损失(与与约翰谈论莎拉告诉你的事情相比,史蒂夫在会议上说你们都没有参加)。
它创造了一个记录,而不是“等等,我们为什么……?”
写作就是思考!写作迫使你连贯地构建你的想法(至少,对某些人来说似乎是这样)。它揭示了你的理解或计划中的缺点或差距。 正因为如此,我鼓励团队交流主要是书面的。Jira、slack、电子邮件、trello、博客文章等等。有时,即使是一张贴满便利贴的高分辨率照片,也是不可或缺的建筑路线图。但是,它已出版,详细,经过深思熟虑的写作是💯。
也许比写作更重要的是:
第二位:阅读
刚刚赞美了编写自述文件、提交消息、PR 描述等的优点,我显然应该鼓励你阅读它们。它被称为大写的 README 是有原因的,而不仅仅是因为它是一个首字母缩略词。然而,如果每次有人问我一个已经在 README 中回答的问题,我就有 1 美元,我会得到 3 美元。💰
这是因为我简洁地称之为恶性阅读写作循环反馈循环。当人们不更新评论时,人们就会被训练忽略它,所以人们不会更新它,等等。说实话,如果你知道有人正在阅读你的 git 提交,他们的质量会迅速提高。即使您以前从未从同事那里读过连贯的提交修改,现在请他们详细说明其含义永远不会太晚。
但就像写作一样,阅读的价值远远超出了代码存储库。
我最近开始了一个项目,涉及一个完全陌生的医疗技术领域。在项目的这个阶段,我发现最有价值的活动是阅读。
我们必须解析一种专门的文件格式,其中有一个 gem。但是为什么要把所有有用的上下文隐藏在 gem 中呢?文件规范并不长,即使需要多次尝试才能理解它。阅读文件格式规范可以更容易地理解为什么 gem 需要load_digital_signals_by_epoch,这反过来会为您手头的问题提供替代解决方案。
如果没有从阅读这些资源中获得的见解,则无法发现相邻的可能,因此无论您正在处理什么,请转到源并阅读阅读阅读...(重要的事情说三遍)
文档(阅读写得很好的postgres 手册或redis 文档是我不得不让 Neo 将功夫下载到他的大脑中的壁橱体验)
代码(被大大低估了——我的 Gemfiles 中没有一个 gem,我bundle open至少没有 d 一次)
日志文件,错误消息,关于如何阅读火焰图的教程
规范、立法、政策文件、NIST 指南、开放获取期刊中的原始论文
......你明白了,只需找到权威文件并将其灌入你的大脑。即使看起来没有任何意义,但与文本的短暂相遇也会留下持久的印象。这就像顺势疗法,但却是真实的。
第一位:思考
当你把它归结起来时,这对我来说是主要的努力,但它是一种隐藏的努力。
我有多少编程/编码/开发时间实际上只是花在思考问题上?对领域进行建模,思考边缘情况,在头脑中玩抽象。
当您考虑什么是优秀的开发人员时,这一点很明显。我最看重与之共事的人不是准确的打字员,他们是清晰的思想家。
然而,图像仍然存在,打字正在工作,工作就是打字,富有成效的一天就在你办公桌的椅子上。因此,我们拥有双 4k 显示器、机械键盘、aeron 座椅、触控条、vim 快捷键,以及任何优化我们在电脑上轻敲的东西。
但是我们对思维的人体工程学关注有多少呢?
当我们将“思考”提升为核心工作时,我们自然会开始专门针对它进行优化。一般来说,我们不需要面对任何事情来有效地思考,而且我经常发现最好不要这样做。我最清晰的时刻总是在我运动时,通常是在我锻炼时。此外,我几乎可以在任何地方用手机阅读,而且最好的对话通常是在散步时进行的。
因此,虽然我为我的工作空间的所有人体工程学感到高兴,但我越来越发现编写代码是一个简短的部分,我只是收获了我从谈话、聆听、阅读和思考中播种的所有精神作物。
为了将其提炼成一些更头韵的东西,我有时将其描述为软件开发的 3 T(Talking · Typing · Thinking)。
说话·打字·思考(Talking · Typing · Thinking)
说和听;口头讨论。大多数时候,我们需要少量但关键的高带宽同步通信。
打字输入代码注释:README、代码审查、PR 描述;以及所有异步通信:项目更新、技术概述、带有后续步骤的电子邮件;这些都是工作的重要组成部分,而不仅仅是辅助或忙碌的工作。在某些时候还输入实际代码。但我发现你花在输入其他东西上的时间越多,花在(重新)输入代码上的时间就越少。
思考:(包括,出于头韵的目的,阅读)
说话、打字、思考:这就是我们所做的工作。我想给自己一个空间来把它的所有部分都做得很好。
不管怎样,我得去洗个澡。🚿
参考文章: https://wanqu.co/a/7565/talking-typing-thinking-software-is-not-a-desk-job/
推荐书单
《Python数据分析师修炼之道》
购买链接:https://item.jd.com/10033216156972.html
本书详细阐述了与Python数据分析相关的基本解决方案,主要包括Anaconda和Jupyter Notebook、NumPy向量计算、数据分析库pandas、可视化和数据分析、Python统计计算、预测分析模型等内容。此外,本书还提供了相应的示例、代码,以帮助读一步理解相关方案的实现过程。
本书既可作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
精彩回顾
扫码关注《Python学研大本营》,加入读者群,分享更多精彩