AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

评论

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

数据服务 | 某造纸企业管理会计PDCA体系的敏捷经营和精准决策

用友智能财务

运维‘ 经营分析 会计

什么样的海外直播网络能满足做海外直播要求?

Ogcloud

海外直播专线 海外直播 直播专线 tiktok直播专线 海外直播网络

《CPython Internals》阅读笔记:p118-p150

codists

CPython Internals

【YashanDB知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string

YashanDB

数据库 yashandb

2025 年以太坊和 Polkadot 生态中有哪些关键进展值得关注?

TechubNews

区块链 以太坊 web3 #Web3 加密市场

快速上手 INFINI Console 的 TopN 指标功能

极限实验室

INFINI Console TopN

【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致

YashanDB

数据库 yashandb

【YashanDB知识库】并发update报错YAS-02208 lock conflict in consistent write

YashanDB

数据库 yashandb

Jenkins质量门禁设计方案的深入探讨

测试人

软件测试

Python库房管理系统开发指南

不在线第一只蜗牛

Python

My Metronome for Mac(音乐节拍器软件)v1.4.1激活版

小玖_苹果Mac软件

前沿洞察:低代码赋能企业数字化转型,解锁打造敏捷组织的底层逻辑

不在线第一只蜗牛

低代码

时序数据库TDengine 2024 年末奖项大盘点,七大奖杯实力出圈!

TDengine

tdengine 时序数据库 数据库·

解锁电商数据的无限可能:探秘京东商品SKU信息API接口

科普小能手

数据挖掘 电商 京东 运营干货 API 接口

如何玩转TikTok直播?掌握这些关键要点

Ogcloud

TikTok 直播专线 tiktok直播 tiktok直播专线 tiktok直播网络

为什么说预测市场AI Agent项目 Aegis ,将会超越 axibt 的高度?

股市老人

【连载 11】Phaser 类

FunTester

懒猫微服移植 drawDB 应用

玄兴梦影

NAS 移植应用 懒猫微服应用移植 drawDB 懒猫微服

Kokoro,一个 82M 参数的超强 TTS 模型;美团、字节领投 3D 生成大模型影眸科技丨 RTE 开发者日报

声网

一文详解 Astherus “Stage 1: Spectra”,开启 DeFi 收益之门

股市老人

【YashanDB知识库】druid连接池做断网测试,无法自动重新连接

YashanDB

数据库 yashandb

NFTScan | 01.06~01.12 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan #Web3

比克动力李凤梅:中国在供应链端优势明显

科技热闻

Nginx 可观测性最佳实践

观测云

nginx

Univer Go 推出 AI 辅助编写 Univer API 功能

梦数技术团队

JavaScript 开源 Excel 表格 spreadsheet

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