很多成功的软件工程师都具有高效的时间管理能力。这项能力可以助你在职场中快速进步,而不必在冲刺阶段长时间加班。
每个组织都试图通过自动化管道、增强型 IDE 和 DevOps 减少时间浪费并提高生产力。通过避免这 6大时间浪费,让你的一天更有效率。
作为软件工程师的 6 大时间浪费
1. 添加太多功能
为了考虑所有“假设”,你有多少次把需求过度复杂化了?如果你正在开发的 API 可以设计为无缝集成到其他平台,要怎么办?如果你的仪表板可以发送自动报告,要怎么办?
抵制冲动。不要过度设计。你不应该在过于领先的功能上花费大量时间。而且更多的代码意味着更多的错误,以及会让应用程序膨胀的非必要脚本。过度设计让理解代码和添加新功能都增加了复杂度。
为避免这种情况,请不断问自己代码是否已经满足了特定的需求。确保把需求的使用场景和边缘场景都考虑到了,但不要花费数周时间来研究本可以更快交付的功能。
如果你对添加解决极端场景的功能感到困惑,请在下一次 sprint 会议中提出。这样你将节省大量时间,并将确立自己的团队合作精神。
2. 一次又一次地编写相同的脚本
作为软件工程师,你应该遵循 DRY(不要重复自己)原则以提高工作效率。这可以通过两种方式完成:消除冗余代码或简化开发流程。
让我们看看如何处理这两种情况。
代码冗余:搭建服务器甚至是虚拟环境需要多次编写相同的脚本和操作。你将使用几乎相同的步骤和代码,完成开发、测试、组织和生产的4层开发体系结构的搭建。除此之外,管理基础架构依赖关系变得越来越复杂。这不仅是重复和无聊的,而且手动操作也会让你容易受到人为错误的影响。
低代码平台通过可重用的基于抽象的组件和可视化拖放界面来达到开箱即用。当然,你不会为每个场景都找到一键式解决方案,但会找到最基本、可重复的解决方案。自动化管道将帮助你根据需要为尽可能多的环境构建、复制和扩展代码。
流程中的冗余:回想下你在开发过程中遵循的流程步骤,并思考哪些步骤可以减少。自动化是你在这里的朋友。
此外,还要注意那些最终执行了两次以上的流程。你将受益于创建一个自动序列,该序列可以在每次想要执行任务时触发。
然而,在开始自动化之前,请始终注意时间权衡。在自动化任何东西之前要问自己的一些问题包括:如果我自动化了它,会比我完成任务节省更多的时间吗?至少在接下来的几周内,我会经常这样做吗?
在自动化之前,请始终注意时间权衡。实现自动化前要问自己一些问题:自动化后,会比手工完成任务节省更多时间吗?至少在接下来的几周内,还要经常做这些任务吗?
如果答案是肯定的,请自动化。减少时间浪费(和头痛)。
3. 从头开始构建系统
如果开发人员在每次构建web应用程序时都必须自定义JDBC数据库连接的代码,那么完成单个项目将需要很长时间。
开发可维护且安全的软件应该是你的首要任务。然而,这并不意味着从头开始构建系统。你不需要重新发明轮子并重建已经存在的功能。
公司需要高效的工作,而你从头开始构建系统所花费的时间在大多数情况下是多余的。因此,相反,通过使用框架构建预构建的功能,并根据客户的需求对其进行自定义。
此外,检查预先存在的公司代码数据库。如果库中现有功能与分配给你的功能重叠,则最好检查函数调用是否可以为你提供所需的数据,或者是否可以集成。
但是,在处理财务或健康记录等机密数据时,从头开始构建功能以增强安全性是有意义的。但在大多数情况下,框架、知名的开源库或付费插件都能完美地完成这项工作。
4. 糟糕的测试策略
在自动化和手工测试之间进行选择时,你必须注意一个微妙的平衡。让我们看看,你作为软件工程师是如何来制定有效的测试策略。
编写一个小的手工测例来确保添加的新功能正常工作是很容易的。但是当你扩展时,运行这些手工测例需要更多的时间,尤其是当你试图找到那个破坏你代码的bug时。
如果你的应用程序或网站有许多组件,那么你没有运行特定测例的可能性也会增加。自动化测试甚至系统测试,都有助于避免这种情况。
你需要花更多时间来做自动化测试。但是,一旦它们被编写好,你进行任何代码更改,它们就可以被重用和触发。因此,你不必因为添加了新功能而手动重新测试以前的功能。
选择正确的任务进行自动化同样重要。可惜的是,这也是 QA 自动化测试中最常见的错误之一。很容易陷入过度自动化的陷阱,并最终逐个脚本地复制测试。这是一个很大的时间浪费,因为弄清楚为什么你的自动化不起作用仍然是一项复杂的手工任务——这正是你想要避免的事情。
不要让它变得比它必须的更复杂。相反,应专注于简单的测试用例,而忽略具有许多依赖性的不频繁或复杂的任务。在开始编写任何单元测试用例之前,制定并优化你的测试策略,将帮助节省大量时间。
5. 不正确的代码优化
这是一种相当常见的时间浪费,通常很难从一开始就发现。你花费大量时间为不具有优先级或可能不需要的用例优化代码。
你唯一的重点应该是让功能发挥作用,然后再考虑优化。但是,不要设定不切实际的基准。优化决策通常基于案例。
如果性能优化只需要几分钟,那就去做吧。但是,在大多数业务场景中,字节级优化通常对项目来说并不重要。优化了之后是会更好吗?是的。但是,如果你需要花费数小时才能获得 1% 的性能增量,最好先与利益相关者进行讨论。
假设你正在为内部团队开发网页。如果网站在 1 秒内成功加载,那你实际上不需要在 0.5 秒内加载完网站。这不会显著改善业务运营。但如果它是一个电子商务商店的网页,让它在1秒内而不是2秒内加载将是一个功能要求。
解决这种时间浪费的最佳方法是定期从用户那里获得反馈。你应该根据他们的极端场景进行优化,而不是自己构建场景优化。
6. 无效沟通
无效的沟通是造成软件开发中很多时间浪费的直接原因,有时是间接原因,其中一些已经提到。
软件开发分成不同部分——各个团队成员致力于不同的产品功能,然后成为 QA 团队的输入,最后成为最终用户的产品。
沟通至关重要,尤其是在开发和移交阶段。假设开发人员误解了业务需求。这种沟通差距会使解决方案过于复杂,并导致技术错误并增加出现错误或返工的机会。
由于沟通是和人打交道,因此无法完全消除这种时间浪费。然而,有了适当的项目管理工具和协作环境,它肯定可以减少。Trello 或 Microsoft Teams 等工具有助于减少摩擦。
在个人层面上,在开会或开发功能时,请始终考虑大局。学会倾听和有效协作。养成将会议讨论的内容写下来或发送摘要的习惯,以明确双方的期望。
沟通宜早不宜迟。不要假设需求,并在可能的情况下,在处理整个项目之前展示一个小演示。
最后的想法
这里的关键是养成避免这些浪费时间的活动的习惯。短期生产力“技巧和窍门”只能带你到此为止。但是良好的编码实践和自我意识将帮助你提高效率。找到你花费时间最多的地方,试着减少它,你就可以逐步成为一名成功的软件工程师了!
{测试窝原创译文,译者:喜安}