技术债务简介(以及它为何会改变你的职业生涯)
它是什么?
最近,我发现一个简单的规划系统就取得了很大的成功。
每个赛季,我都会写下一份目标清单。
每周,我都会记下一份我想完成的事情的清单,这些事情可以帮助我完成日常任务并努力实现我的季节性目标。
每天,我都会根据每周清单中的事项确定优先顺序。
此外,我还有一个“某日清单”,上面列出了我希望在未来某个不确定的时间完成的项目和目标。
在软件开发中,技术债务基本上就是代码库的“未来某一天”列表。
它是一些理想情况下应该完成但没有优先考虑的事情的集合。
为什么要记录它?
好的,这就是技术债务的要点,但开发人员为什么要费心追踪它呢?
好问题。
原因如下:
-
如果你不追踪,你就只能依靠你的记忆。总有一天,我们的记忆会失效。
-
它有助于传达理想的工作是值得做的,即使我们现在做不好也可以。
-
它保证如果你现在不能做理想的事情,你以后仍然可以做到。
-
它有助于生成代码库的长期愿景和目标。
我该如何记录它?
只要有用就行。我倾向于在代码库的 GitHub 仓库中创建一个 wiki 页面。
我到底记录了什么?
再说一遍,技术债务就是你有一天想要做的任何事情。
通常,这包括升级依赖项、实现新的设计模式、重构大部分代码、自动执行手动任务、采用新技术等。
例子
- 升级到 Tailwind v3
- 升级到 Next v12
- 创建 React Spring 动画钩子
- 包装 React Query 的
useQuery
钩子 - 将共享的通用组件移入设计系统
- 采用新的方式组织代码库
- 重组全球状态
- ...ETC...
我如何知道某件事是“某一天”的理想还是当前的需求?
这是一个价值百万美元的问题。没有正确答案。
我无法提供详细的蓝图,但我可以提供一些指导原则:
-
如果想到“某一天”要做这件事就感到有压力,那么就应该在现在做。
-
你有时间做这件事吗?如果没有,那么你要么协商时间,要么接受不太理想的情况。
我如何确定其优先级/完成它?
对一些人来说,“将来某天”清单的概念听起来并不那么令人安心。他们可能还记得以前列在“将来某天”清单上的事项,但这些事项永远都无法被提上日程。
我明白。
虽然将技术债务视为“某一天”的清单是最简单的描述方式,但将其视为“延伸目标”的看板可能更为合适。
“延伸目标”是指你优先完成但不必为了晚上睡觉而完成的事情。
一般来说,我发现优先考虑技术债务的最佳时机是在项目生命周期内。
技术债务应被视为添加到项目主要要求的延伸目标。
如果您是产品团队的开发人员,那么您通常会遵循以下节奏:1)规划项目,2)启动项目,3)完成项目。
在规划项目时,您可以优先考虑一些有趣的技术债务项目,以便在整个项目中完成(尽管将它们视为延伸目标)。
尽管最好将它们视为延伸目标,但我还是建议您在考虑它们的情况下对项目进行估算。
它们并非延伸目标,因为它们不应该被计入预算。相反,它们之所以被称为延伸目标,是因为在发生意外事件时,它们可能是你最先需要削减的事情,而这些事情你不需要做太多。
除了在项目规划阶段优先处理技术债务项目之外,我还发现,项目一结束就是处理这些项目的最佳时机。
通常,项目结束时的进度会比较慢,因为已启动的项目正在接受监控,而下一个项目的规划正在最终确定。
在这段较慢的时间内,充分利用来完成技术债务项目。
最后提示
1. 采取主动
如果团队对完成项目相关的技术债务项目有正式的期望/流程,那当然很好,但即使没有这样的正式流程,也要主动采取行动。随着时间的推移,你或许能够倡导这些事情的正式化。
2. 在单独的拉取请求中处理技术债务项目。
这样,审阅者就可以将其与必备的项目拉取请求分开处理。
3.跟踪已完成的技术债务项目。
就像待办事项清单一样,我喜欢查看自己已完成的工作。追踪每一项已完成的任务可以带来令人满足的成就感,或者也可以提醒自己需要委派一些工作。
已完成的技术债务项目也是包含在年度审查、简历等中的好内容。
4. 为你的手艺感到自豪。
编码是一门手艺。技术债是提升手艺的一种方式。
即使管理人员可能看不到(也不会询问)你的技术细节,但通过使代码理想化来专注于你的技术将帮助你保持动力并与未来的职业机会保持相关性。
但请不要误会我的意思,人们不需要了解技术细节就能看到认真对待自己的技术并因此而改善团队的人的价值。
5. 寻找与同事分享技术债务工作的方法。
我是开发者内容模型的忠实粉丝。
简而言之,你把你正在做的事情以独特的方式呈现给他人。
您可以通过发布所学到的知识、分享要点、录制视频和/或撰写有关所做工作的博客文章来向全球观众展示您的工作。
当你看到全球观众对你的学习感兴趣时,你会感到非常欣慰。
此外,它还能帮助你建立作品集。即使是你目前的职位,你也可以把推文和博客文章重新用作团队文档。
您还可以向公司内部更广泛的受众展示您的工作。
一个好方法是进行技术讲座(召集一群工程师,用 15-30 分钟的幻灯片演示来展示你的学习成果)和/或进行展示和讲述(召集一群工程师,让每个人花 5-10 分钟来重点介绍你最近学到的东西)。
结论
我希望你能够明白,技术债务不仅仅是追踪“我们真的应该这样做,但我们做不到,所以也许我们会做到,但可能不会”之类的事情。
技术债务是改进代码库、发展技术以及在同行中获得影响力和尊重的有效方法。
鏂囩珷鏉簮锛�https://dev.to/michaelmangial1/an-introduction-to-tech-debt-and-why-it-can-change-your-career-381m