2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

  • 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:003788

评论

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

Rust-Shyper:基于 Rust 语言的高可靠、开源嵌入式 Hypervisor

openEuler

Linux rust 操作系统 虚拟机 嵌入式

权威学者、企业CFO荟聚上海国家会计学院,共探「智能会计 价值财务」

用友BIP

智能会计 价值财务 用友智能财务 业财融合

聊聊「低代码」的实践之路

Java 架构 低代码

企业数据平台建设的基石:构建统一的数据存算能力

星环科技

存算能力

MySQL8.0.32的安装与配置

Java你猿哥

Java MySQL ssm Java工程师

分布式存储技术(上):HDFS 与 Ceph的架构原理、特性、优缺点解析

星环科技

hdfs 分布式存储 Ceph

基于公共信箱的全量消息实现

百度Geek说

大数据 即时通讯 企业号 4 月 PK 榜 公共信箱

SysCare:为您的操作系统保驾护航

openEuler

Linux 操作系统 openEuler 内核 热补丁

硬核!阿里P8耗时6月打造的架构师速成手册,颠覆你对架构师的认知

Java你猿哥

架构 分布式 ssm 软件架构 架构师

用友iuap 让企业数智化能力深入、让业务价值浅出

用友BIP

用友 用友iuap 用友技术大会 数智底座

自动化回归测试平台 AREX 0.2.8 版本正式发布!

AREX 中文社区

自动化测试 接口测试 回归测试

数栈V6.0全新产品矩阵发布,数据底座 EasyMR 焕新升级

袋鼠云数栈

大数据 基础软件 数字化转型

度量分析开源社区健康度,助力企业开源生态健康发展——华为开源管理中心王晔晖

开源雨林

开源治理 OSPO OSS Compass CHAOSS

分布式技术剖析

星环科技

分布式

竞争焦点转向数智底座 用友能否再引领

用友BIP

用友iuap 用友技术大会 升级企业数智化底座

如何创造数据资产价值?如何对内赋能业务运营,对外创造市场价值?

星环科技

数据资产 数据要素流通

这一秒,困扰了程序员 50 年!

Java你猿哥

Java 程序员 ssm 计算机

字节二面:HashMap线程不安全体现在哪里?

Java你猿哥

Java 线程 ssm 架构师 HashMap底层原理

统一、飞鹤等快消龙头企业,如何抓住未来10年数智化的机遇?

用友BIP

用友iuap 用友技术大会 快消行业

电信及互联网行业数据安全内控审计建设实践 | 盾见

极盾科技

数据安全

关于聚合根,领域事件的那点事---深入浅出理解DDD | 京东云技术团队

京东科技开发者

DDD 企业号 4 月 PK 榜 聚合根 领域事件

Github星标120k!这份阿里独有的高并发实战笔记太强了!

Java redis zookeeper Netty 高并发

戴尔科技园动力计划,携手中南高科赋能中小企业数字化转型

科技热闻

从入门到精通,超详细的程序员Java学习路线指南

Java你猿哥

Java 数据库 Web ssm 死磕 Java 基础

浅谈测试用例设计 | 京东云技术团队

京东科技开发者

测试 测试用例 测试用例设计 企业号 4 月 PK 榜

校企共建|阿里云与西安电子科技大学人才培养交流会顺利举行

云布道师

校企合作

如何在微服务下保证事务的一致性 | 京东云技术团队

京东科技开发者

架构 微服务 事务 一致性 企业号 4 月 PK 榜

分布式存储技术(下):宽表存储与全文搜索引擎的架构原理、特性、优缺点解析

星环科技

分布式 全文搜索

阿里十年资深码农共享SpringCloud微服务架构实战文档

Java你猿哥

微服务架构 Spring Cloud ssm 架构设计 架构师

请查收!一份2023年程序员不得不看的自救提升指南(彩色终极版)

Java你猿哥

Java 面试 JVM 面经

大语言模型的本质:会思考的狗、聪明的马和随机鹦鹉

FN0

AIGC 大语言模型

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