说话、打字、思考:软件不是办公桌上的工作

2020-10-22 08:53:21

那是上午晚些时候(就像通常最好的淋浴一样),我在反思我白天是如何度过我的时间的。作为一名在家工作的顾问,我经常需要证明我的账单和时间是合理的,在这种情况下,我证明了在淋浴上花更多的钱是合理的。

和我们大多数人一样,我的职业生涯开始时给人的印象是,高效的一天是在符合人体工程学的键盘上度过的,在Microsoft Visual Basic 6.0专业版中键入数百行代码,而不是站在完美的高压淡水热流中。然而,我作为一名开发人员花的时间越长,我就越不相信我需要坐在办公桌前,才能交付我们这些高级工程顾问提供的真正令人震惊的电子表格到Web应用程序的业务价值。

为了让您也有理由将上午的大部分时间花在温暖的蚕茧中,让我们将其分解,看看有效的软件开发的5项体力活动。就像所有好的listiles一样,这大致是按照时间和重要性递增的顺序排列的。

有些软件开发可能不需要任何交谈就能有效。例如,我知道大声谈论Linux内核开发被普遍认为是不礼貌的。~/bin的内容太多了,我们就不说了。

但我参与的每个商业项目至少都需要一些讨论。当人们太忙或太害羞而不能交谈时,缺乏高带宽通信可能会使人们很难梳理出需求并解决解释不清的业务问题。

但更重要的是,缺乏交谈使得在任何新关系的早期阶段很难建立信任和融洽的关键关系。作为群居动物,我们特别擅长口头表达,而不是特别擅长通过电子邮件和辛辣的推文做到这一点。

另一方面,我在一些项目中工作过,在这些项目中,交谈是一种道具,用来掩饰没有人知道该做什么。十几个人坐在一个房间里,一言不发地谈了一个小时,我们都走了出来,比我们走进来的时候更笨。

老实说,我只是为了对称才加了这个。我唯一要补充的是,我们有两只耳朵和一张嘴,所以要么双耳听力提供了对抗某些选择压力的进化优势,要么我们应该听的比说的多一倍。

当然是写代码了!但也包括…。自述、评论、内联文档、PR描述、代码审查、GIT提交;这些都是核心工作的一部分。人们很容易将这种元编写看作真正的“代码”编写之上的开销。但是,在这些其他地方进行有效的编写是代码的力量倍增器。

它是异步的,这意味着它可以在每个读者方便的时候(即上午晚些时候淋浴后)消费。

它可以很容易地分发,并且在分享时不会有任何保真度损失(与与John谈论Sarah告诉你们的内容相比,Steve在会议上说你们都没有出席)。

它创建了一个记录,而不是“等等,我们为什么要…。?“。

写作就是思考!写作迫使你把你的想法组织得条理清晰(至少对某些人来说是这样)。它揭示了你的理解或计划中的缺点或差距。

正因为如此,我鼓励团队通信主要是编写的。JIRA,SLACK,电子邮件,Trello,博客帖子,什么都行。即使是一面墙上贴着便利贴的高清晰度照片,有时也是不可或缺的建筑路线图。不管它是怎么出版的,详细的,经过深思熟虑的写作是💯。

在刚刚赞扬了编写自述文件、提交消息、公关描述等优点之后,我显然应该鼓励您阅读它们。它被称为大写自述是有原因的,而不仅仅是因为它是一个缩写。然而,如果每次有人问我一个已经在自述文件中得到回答的问题,我就有一美元,我就有三美元。💰。

这是因为我简洁地称之为读写周期反馈循环的恶性循环。当人们不更新评论时,人们会被训练成忽略它,所以人们不会更新它,以此类推。老实说,如果你知道某人正在阅读你的git承诺,他们的质量会迅速提高。即使你以前从来没有读过同事们的连贯的git承诺,要求他们详细说明最终解决它的意思永远不会太晚。

我最近开始了一个项目,涉及一个完全不熟悉的医疗技术领域(附言:你仍然是我最喜欢的病人,01-004📊❤️)。在项目的这个阶段,我发现最有价值的活动就是阅读。

我们必须解析一种特殊的文件格式,它有一个宝石。但为什么要把所有有用的背景都埋在宝石里呢?文件规范并不是很长,即使需要多次尝试才能理解。阅读文件格式规范可以更容易地理解为什么gem需要加载_Digital_Signals_by_Epoch,这反过来会为您手头的问题提供替代解决方案。

如果没有从阅读这些源代码中获得的洞察力,则无法发现相邻的可能的1,所以无论您处理的是什么,请转到源代码并阅读Read Read…。

文档(阅读写得非常好的Postgres手册或Redis文档是我将功夫下载到他大脑中的一种私下体验)。

代码(被大大低估了-我的Gemfiles中没有一个宝石我至少捆绑过一次opend)。

开放获取期刊的规范、法规、政策文件、NIST指南、原文。

…。你明白了,只要找到权威的文件,然后把它灌输到你的大脑里就行了。即使看似毫无根据,与文本的短暂邂逅也会给人留下长久的印象。这就像顺势疗法,但却是真的。

归根结底,这是我的主要努力,但也是一种隐藏的努力。

我的编程/编码/开发时间实际上有多少是花在思考问题上的?建模领域,思考边缘情况,在头脑中玩弄抽象。

当你思考是什么造就了优秀的开发人员时,这一点是显而易见的。我最看重的是和我一起工作的人不是准确的打字员,他们是清晰的思想家。

然而,图像坚持认为打字就是工作,工作就是打字,在办公桌前的椅子上就是高效的一天。因此,我们有双4k显示器、机械键盘、副翼座椅、触摸杆、Vim快捷键,任何对我们敲击电脑最有利的东西都有。

当我们将“思考”提升为核心工作时,我们自然会开始专门针对它进行优化。一般说来,我们不需要站在任何东西前面就能有效地思考,而且我经常发现最好不要站在前面。我最清晰的时刻总是在我移动的时候,通常是我在锻炼的时候。此外,我几乎可以在任何地方用手机阅读,最好的对话往往是在散步时进行的。

因此,虽然我为我的工作空间的所有人体工程学感到高兴,但我越来越多地发现,编写代码只是短暂的部分,我只是在那里收获了我从说话、倾听、阅读和思考中播种的所有精神作物。

为了将其提炼成更有头韵的东西,我有时会将其描述为软件开发…的3ts。

说和听;口头讨论。大多数情况下,我们需要少量但很关键的高带宽同步通信。

键入代码注释:自述、代码评审、公关描述;以及所有异步通信:项目更新、技术概述、带有下一步工作的电子邮件;这些都是工作的重要部分,而不仅仅是辅助或忙碌的工作。在某些情况下还会键入实际代码。但是我发现你花在打字上的时间越多,你需要(重新)打字的时间就越少。

谈话、打字、思考:这就是我们的工作。就我个人而言,我想给自己留出空间,把所有的部分都做得很好。

相邻的可能是一种影子的未来,徘徊在事物当前状态的边缘,一幅现在可以重塑自己的所有方式的地图。