17611538698
webmaster@21cto.com

开发者如何与干扰作斗争

技术人生 0 51 2024-04-20 10:48:34

图片

导读:这篇文章是分散你注意力的,你应该回去工作了!是不是? 


有哪些事情干扰你


在软件工程中,人们通常将生产力杀手称为“干扰”。我面对它们,你也面对它们,每个人都面对它们。


我们的主要工作习惯是专注正在解决的问题,并将其转化为代码。保持专注至关重要,排除干扰是值得关注和欢迎的。


那么你能识别可能出现的全部类型的干扰吗?让我们将它们分解。 


明显的干扰


明显的干扰包括如下: 

  • 私人通话/私信/面对面 交谈 

  • 群组通话/临时通话/碰头会 


电话和社交软件在让你知道有人正在打电话给你,这是我们使用它们的原因。你可以将它们关闭或静音,但可以对紧急呼叫做出快速反应。

这是我们应对干扰的一种。

利用手机软件可以将联系人组织为优先组,为这些组标记免打扰时间,或者将来电简化为各种信号级别。 

  • 响铃——你家人打来的电话,不能不接! 

  • 振动——你的老板称之为“享受”的这种氛围 

  • 重定向至语音信箱、自动短信等,这是一些朋友、啤酒好友的来电

     

工作场所是人们分心的显著来源。

我们以小组和团队的形式工作,应该欢迎合作的各种尬啊。但你可以向同事发出信号,表明自己处于免打扰模式。大耳机表明你正在取消环境并专注于某件事。是的,使用科技的新玩具比如降噪耳机非常有效,以至于吸引你的注意力意味着那个人需要进入你的视野。 

有一个简单的规则: 眼不见=心不烦。没有声音通知,只有视觉通知。因此,在工作时间尽量减少那些该死的干扰。 

还有其它的事情 #thereIsAlwaysSomething* 

在我作为软件开发角色漫长而繁忙的生活中,我发现在基于团队开发的环境中,日常工作量可以分为以下三个主要部分。 

  • 编码 ——你计划的任务工作 ;

  • 团队合作 ——代码审查、头脑风暴、互相帮助、会议、敏捷仪式、公司和办公室员工 ;

  • #thereIsAlwasSomething  — 你也在编码,  (或其他工程)临时任务、生产错误、救火、“我们可以帮助修电脑吗……”等任务。 


开发者在整个工作日都在编码的想法是一厢情愿的,其实大约三分之一的时间花在非编码活动上。

主要区别在于公司的心态,包括如下: 

  • 创业心态 —  #thereIsAlwaysSomething 被认为是一项常规工作职责。就像 “年轻、敏捷、充满活力的团队”。 

  • 企业心态 —  #thereIsAlwaysSomething 被认为是一种 异常情况 — 你拥有专门的维护团队,可以从开发团队中过滤掉这些任务。维护团队仅在需要时寻求合作,并且主要以计划任务的形式进行。 


#thereIsAlwaysSomething 任务可能会被某些团队或个人开发人员视为干扰。PO/PM 需要掌握如何确定何时以及由谁来完成这些任务,以最大程度地减少干扰。

在任何特定时刻将其扔到团队频道中并附上“我们可以帮忙吗……”,这样的话是一个坏主意,而且会分散其它人的注意力。

与团队就何时以及如何在适当的位置宣布 #thereIsAlwaysSomething 任务达成一致。

我的建议是进行每日站立会议。 

灰色地带  

还有一个干扰因素的灰色地带。对于组织中的某些人来说,推动他们是自己的工作,但对于许多开发人员来说,这可能被视为分散注意力或者浪费时间。 


  • 会议 ——管理者们会说服你他们是有益的,而开发者会认为浪费时间。如果有这样的思想存在,请进行协商。

  • 敏捷仪式 ——其中一些你可能会认为是干扰,最令人讨厌的是定期回顾。在我们需要时达成一致 

  • 公司垃圾 ——电子邮件、民意调查、致谢、时间表等。

  • 内部障碍 ——电源/网络/服务器中断 

  • 计算机/软件更新 ——无法用言语解释


几乎所有这些干扰都可以通过将其安排在非生产时间、推迟甚至避免来消除。至于电子邮件,可使用过滤和重定向到指定的文件夹。 

非明显的干扰 


在线或内部文档搜索信息 


在编码期间收集信息或在文档中搜索某些内容会分散您编码的注意力。这是一个滑坡,很容易让你离开很长一段时间,并且你可能会失去焦点或编码流程。在编码之前尝试识别这些内容 。提前收集尽可能多的信息和文档,并为它们添加书签。


不使用有效或节省时间的工具 


进行重复、枯燥的打字而不是使用键盘快捷键和代码格式化工具,这样可能会让人筋疲力尽,并扰乱思路和编码。


是的,我们必须学习它们并习惯使用它们,这些 生产力增强器是对抗意外干扰的最佳工具。这同样适用于您不经常使用的技术 - 一个典型的例子是正则表达式(regex)。


使用专门的正则表达式工具和生成器;人工智能在这里也对我们很有帮助。 


等待一些开发进程 

  • 配置依赖项需要时间——你可能会被吸引走 

  • 项目设计需要时间——你可能会被吸引走 

  • 部署项目需要花费大量时间——你肯定会被引走 


上述一些因素都会在编码过程中影响你,特别是当你需要尝试一些早期的代码版本时。但这些都是可以预见的。提前计划这些行动,最好是在工作周期结束时或休息之前。

当某些步骤失败时,休息还可以帮助您思考和理解出了什么问题。 

纠正与优化的措施 


习惯划分优先级


你永远不会有一个没有干扰的环境。


新任务总是会来的,学会优先考虑它们。一个优秀的图表可划分了可能认为分散注意力的任务(但在经理或同事眼中可以被视为生死攸关的问题)。


我们可以从两个角度来划分: 


  • 紧急/不紧急 

  • 重要/不重要 


图片

我对此图的两个象限还添加了第五个动作——“什么也不做”。

有时,什么都不做是也是有效的(正如你所想,“让它们腐烂”)。你会惊讶地发现有多少“问题”根本就不是问题,而是“自动”解决了。如果问题仍然存在,他们会再次向你“致意”。 

优先处理分散注意力的任务是一种社交技能。请记住,你并不是公司中唯一能够解决这些问题的人。 如果对当前工作中出现的干扰没有信心,请进行谈判并学会“说不”。另一方面,不要傲慢;尝试理解为什么其他人认为这项任务紧迫。

而且,令人惊讶的是,一项你乍一看会分散注意力的任务可能会变成一次愉快的旅程,让你从当前的任务中得到休息。 

日常生活 


处理干扰的最佳方法是有规律的日常(工作)。 

找到最有生产力的时间 

确定大脑工作最佳的时间,并将其与团队日常工作和职责联系起来。我效率最高的时间是上午 10 点至下午 1 点和下午 3 点至 6 点。设置您的环境以尽量减少可能的干扰——耳机、通知静音模式、Slack 中的离开/免打扰模式等。 

计划你的拖延 

不要被随机的一些干扰所引诱——计划它们!

软件工程师是永远的学生;他们每天都在学习。在非工作时间阅读推文和博客,阅读新闻和 Slack 频道。我在上班时就这样做,通常在每日例会开始时完成。然后,下一阶段是午餐后放松一下并再次浏览它们。你活着不仅仅是为了工作——它是一个平衡生活的工具,但要明智地使用它。 

附加建议


休息一下 

编程可能会让人筋疲力尽,主要是因为软件开发人员经常面临长时间坐在电脑前编码的情况。

这可能是不健康的。

我们需要在任务之间定期暂停。我每 30 分钟休息 1-2 分钟,每小时休息 5-7 分钟。休息意味着站起来散步!厕所、零食、咖啡、查电话等。如果可能的话,欢迎在新鲜空气中进行较长时间的休息。

图片

你可以使用现在流行的“番茄工作法”,即工作 25 分钟,休息 5 分钟。

无事之日 

有时,你知道那天你不会做任何有创意的事情。拥抱那些日子,用它们来做简单的日常任务——清理桌面文件、重新组织工作文件夹、更新软件、清理硬件、更新文档、添加单元测试等。

不需要别人知道你在干什么。

心流天数 

有时,你发现一天 24 小时太短,但你感觉自己有能力编写比 8 小时更长的代码。我们称之为编码心流。它通常发生在项目的新创意部分开始时,当你充满想法并希望将它们转化为代码时。

再次强调,利用这个机会,打破所有规则和惯例——在晚上、周末编码,并感受心流。

嗯,你现在已经是一名艺术家了。 图片

编码时的良好习惯 

  • 首先编写最令人兴奋或最具挑战性的部分

  • 将枯燥的部分简化为 MVP 或模拟函数,将它们标记为 TODO,然后再返回。 

// @TODO - there are 3 places where to find it and 2 possible fallbacks...function generateConversationTopic(/*conversationId: string*/): string {      return 'Talking with ???';}

  • 复制和/或重构类似代码,不要重新发明轮子;

  • 编写单一用途且不太复杂的函数速度更快,并且不会带来疲劳。三个单一用途函数比一个通用函数更好,即使它们占用更多代码行。 


结语

本文是一篇关于开发者如何识别和对抗干扰的主观文章。

可能只有一些东西对你有用,而且显然还有很多东西要说,所以欢迎在评论中添加你的更好技巧和想法。 

祝大家编码愉快!图片

评论