时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

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

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

评论

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

在禧玛诺工厂,一位工程师的零代码实践

NocoBase

开源 低代码 数字化转型 零代码 制造业

Java 内存模型与 Happens-Before 关系深度解析

不在线第一只蜗牛

Java

领 “鸿蒙有礼”专属权益,解锁鸿蒙电脑高品质内容体验

最新动态

TypeScript实用类型之Omit

不在线第一只蜗牛

typescript

2025浙江安博会·浙江(杭州)国际安防产品博览会

AIOTE智博会

安防展 安博会 浙江安博会 杭州安博会

欢迎“大表哥”登录Mac!用CrossOver就能在苹果电脑上玩《荒野大镖客2》了

阿拉灯神丁

Mac软件 mac冒险游戏 crossover mac 破解版 苹果电脑游戏推荐

电商平台促销期DDoS攻击应对策略

网络安全服务

CDN 服务器 宽带 电商节 DDoS 攻击

ON1 Photo RAW 2025.2 for Mac(照片编辑器)

Geek贝

如何在应用中实现地图关键字搜索和标记聚合功能?

HarmonyOS SDK

harmoyos

PS插件:Infinite Panel Black & White for Mac(无限黑白面板插件)

Rose

2025杭州国际智慧城市,物联网展览会

AIOTE智博会

物联网博览会 物联网展 智慧城市展 智慧城市博览会 iot展

AI 如何重塑 B 端产品用户体验

inBuilder低代码平台

中小企业数字化免费使用的开源MES系统/MES源码

万界星空科技

开源 源代码 开源软件 开源mes mes源码

NebulaAI亮相华为开发者大会:NebulaAI×iDME,AI赋能千行百业,松山湖见!

行云创新

AI 华为开发者大会2025

酷开携手途虎养车落地AI智能体车机,打破后装座舱智能化瓶颈

业界

域名锁定是什么意思?怎么解除域名锁定状态?

防火墙后吃泡面

百度垂搜数据管理系统弹性调度优化实践

百度Geek说

大数据 云原生 搜索 弹性调度

飞机的“十亿分之一”是什么?从安全评估到仿真验证全揭秘

DevOps和数字孪生

航空航天 飞机

五分钟搭建属于你的AI助手:Ollama+DeepSeek+AnythingLLM深度整合教程

量贩潮汐·WholesaleTide

人工智能 AI DeepSeek

商品中心—商品考核系统的技术文档(二)

电子尖叫食人鱼

架构 教程

首秀!行云创新“智算解决方案”,即将亮相华为开发者大会

行云创新

AI 华为开发者大会2025

聚焦“AI+运维”深度融合,龙蜥系统运维联盟 MeetUp 圆满结束

OpenAnolis小助手

AI 操作系统 系统运维 龙蜥社区 龙蜥meetup

TinyPNG and TinyJPG for Mac(ps图像压缩插件) 详细安装教程

Rose

商品中心—商品考核系统的技术文档

电子尖叫食人鱼

架构 教程

华为云亮相 KubeCon China 2025,开源生态引领 AI 时代技术跃迁

华为云原生团队

云计算 容器 云原生

摆脱硬件依赖:SkyEye在轨道交通中的仿真应用

DevOps和数字孪生

轨道技术 轨道交通

Prompt for mac远程SSH服务器管理工具

Geek贝

龙蜥社区两大委员会月度会议圆满召开

OpenAnolis小助手

开源 操作系统 龙蜥社区 OpenAnolis Anolis OS

尖叫青蛙Screaming Frog SEO Spider 激活码+安装教程-Mac/win

Rose

京东商品详情数据接口抓取指南

tbapi

京东API接口 京东商品详情接口 京东数据采集

西南会议 | 2025 Altair 区域技术交流会精彩内容提前揭晓,立即报名锁定技术干货

Altair RapidMiner

AI 数字孪生 仿真 CAE 航空航天

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