写点什么

防止和偿还技术债务:技术负责人和项目经理可以做些什么

  • 2024-03-19
    北京
  • 本文字数:1656 字

    阅读完需:约 5 分钟

大小:793.49K时长:04:30
防止和偿还技术债务:技术负责人和项目经理可以做些什么

技术负责人和项目经理可以通过给开发人员更多的时间来防止和偿还技术债务。此外,Nedelcho Nikolov 认为,他们还可以计划留出空闲时间和重构 Sprint,让团队有时间改进代码。为了确定技术债务的优先级,开发团队可以展示如果现在努力投入可以节省多少时间,以及如果现在不偿还技术债务,软件将在未来变得多么复杂。


Nedelcho Nikolov 在 2023 年 DEV Challenge Accepted 大会 上分享了他处理技术债务的经验。


Nikolov 说,技术债务常常是由截止日期造成的,因为你必须赶时间写代码,但又无法把它做好。你必须做出一些妥协,要么是单元测试,要么是一些在生产环境中运行良好但没人知道为什么要那么写的糟糕的代码。


造成技术债务的另一个原因可能是因为团队是个新团队,尚未制定编码标准,正如 Nikolov 所解释的那样:


我们有一个新组建的团队正在开发一个全新的项目,每个人都用自己的方式编写代码,这使得维护和发现问题变得困难。


Nikolov 说,技术负责人和项目经理可以通过给软件开发人员更多的时间来防止技术债务。他们还可以在项目中计划一些空闲时间,以便在大忙之后整理事务,或者允许团队进行几个重构 Sprint,让他们有时间改进代码。


Nikolov 认为,确定技术债务的优先级是很困难的,因为你必须说服你上面的人腾出时间来做一些不赚钱的事情。他建议在谈话中加入一些数字,比如如果现在努力投入可以节省多少时间,以及如果现在不偿还技术债务,软件将在未来变得多么复杂:


如果代码编写得很好并且没有债务,并且代码处于最新状态,那么可以通过开发人员的估算来获得这些数字。通常,利益相关者对数字比较感兴趣,所以这可能是最好的方法。


为了处理技术债务,Nikolov 建议团队每个 Sprint 投入一些时间来偿还债务,或者至少在团队成员完成任务并看到管道中有需要修复或重构的东西时。他建议现在就投入时间去做,这很容易做到。


另一种方法是整个专门用于修复的 Sprint,正如 Nikolov 解释的那样:


我们有一个新团队正在进行一个项目,按时完成了,但代码质量有所降低。完成后,我们专门用了几个 Sprint 进行重构。这样,我们成功偿还了债务,拥有一个干净、易于浏览和添加新功能的代码库。


Nikolov 补充说,只要有可能,就腾出时间来偿还技术债务,因为随着时间的推移,这会变得越来越困难。不要害怕技术债务,它是不可避免的。他总结说,技术债务让我们能够按时完成项目或任务,但我们必须在之后尽快偿还,这样就不会陷入一片混乱。


InfoQ 就处理技术债务的相关问题采访了 Nedelcho Nikolov


InfoQ: 如果我们无法对偿还技术债务的成本和收益进行详细估计,还有其他划分优先级的方法吗?


Nedelcho Nikolov: 另一种方法是使用投入/影响(Effort/Impact)矩阵,你可以对每个任务进行评分:


  • 容易做且对工作有很大影响——快速获胜(Quick Win);

  • 容易做,但不会有太大帮助,因为它位于没有发生变化的代码中,或者位于在不久的将来没有人会去修改的功能中——时间填充(Time Fill-ins);

  • 难做 / 需要更多时间,但会有很大影响——主要项目(Major Project);

  • 难做且对项目没有影响——钱洞(Money Pit)。


有了以上评分,你就可以很容易地优先考虑哪些债务应该现在偿还,哪些可以等。


InfoQ:如果随着时间的推移积累了大量技术债务,我们可以做些什么?


Nikolov:当你积累了很多技术债务,以至于很难处理时,就必须从头开始整个项目。说服利益相关者这样做很困难,因为你要花时间去做的不是为了赚钱或添加新功能的东西,而是重新做已经存在的东西,但要说服他们也并非不可能。


我们和团队曾遇到过这样的一个项目,一个 15 年的 PHP 应用程序,没有任何框架,在一个文件中混合了 PHP、HTML 和 JS 代码。利益相关者希望进行完整的重新设计,采用响应式设计。经过一些估算,我们成功说服他们从头开始整个项目。现在我们有了一个运行在 Laravel 上的现代 PHP 应用程序,前端使用 VueJS,搭配 Tailwind CSS。当然,由于我们的时间安排,现在有新的技术债务需要偿还,不过我们会在每个 Sprint 中逐步偿还这些债务。


原文链接

https://www.infoq.com/news/2024/02/prevent-repay-technical-debt/

2024-03-19 08:003692

评论

发布
暂无评论
发现更多内容

python函数参数定义中的这两个分隔符,还有人不知道吗?

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言

服务韧性工程(SRE)论坛演讲实录 | 数据中心服务能力成熟度新标准简介及应用展望

雅菲奥朗

运维 SRE

“零代码”智能组装,华为云新一代iPaaS超联接能力让集成更智能

轶天下事

如何利用AI找到能帮你引荐大客户的人

客户在哪儿AI

ToB营销 ToB获客 ToB增长 ToB销售

探索办公智能助手--办公小浣熊

在书中成长

乘用车1-5月销量同比增长7%,火山引擎数据飞轮能帮车企盘活下半年增长吗?

新消费日报

云原生中间件,构筑软件安全可信的连接桥梁

轶天下事

30天拿下Rust之网络编程

希望睿智

网络编程 rust语言

人形机器人的理想与现实

脑极体

AI

需求管理效率提升:2024年10款优质需求池管理工具全指南

爱吃小舅的鱼

需求管理 需求池管理

服务韧性工程(SRE)论坛演讲实录丨金山办公:云原生时代下金山办公SRE架构演进之路

雅菲奥朗

运维 k8s SRE

服务韧性工程(SRE)论坛演讲实录 | 老娘舅:协同移动云推进自动化运维,提升系统稳定性

雅菲奥朗

运维 自动化

服务韧性工程(SRE)论坛演讲实录 | 浙江移动:云化网络可观测性的探索和实践

雅菲奥朗

人工智能 运维 可观测性

GitHub星标3500的Python爬虫实战入门教程,限时开源!

我再BUG界嘎嘎乱杀

Python 编程 爬虫 后端 开发语言

服务韧性工程(SRE)论坛演讲实录 | 东信软件:基于SRE的智能运维建设

雅菲奥朗

运维 SRE CMDB

华鲲振宇携手华为云时习知,探索数字化培训新路径

轶天下事

供配电学习笔记 day2

万里无云万里天

电力 工厂运维

滴滴开源项目xiaoju-survey搞事情了...

XIAOJUSURVEY

GitHub 开源 科技 贡献者

伙伴活动|AI硬件大潮来袭,深圳的创客们在哪里?

声网

Go 语言专题之Sync.Mutex底层

Go 互斥锁Mutex RWMutex

服务韧性工程(SRE)论坛演讲实录 | 混沌工程:复杂系统韧性实现之道

雅菲奥朗

运维 SRE 混沌工程

专为运维工程师设计!阿里藏经阁出品的Python实战手册被我搞来了

我再BUG界嘎嘎乱杀

Python 编程 运维 后端 开发语言

30天拿下Rust之超级好用的“语法糖”

希望睿智

语法糖 rust语言

中小企业和数智化的距离,只差一块华为IdeaHub

Alter

供配电学习笔记 day3

万里无云万里天

电力 工厂运维

Altair 签署协议收购 Metrics,扩大其在 EDA 行业的影响力

Altair RapidMiner

人工智能 仿真 altair

防止和偿还技术债务:技术负责人和项目经理可以做些什么_软件工程_Ben Linders_InfoQ精选文章