AICon 深圳站 Keynote 嘉宾官宣!共探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:003826

评论

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

低能离子束芯片编辑技术实现高效设计

qife

芯片设计 硬件优化

javax.security.auth.login.LoginException: Cannot locate KDC

刘大猫

人工智能 数据挖掘 算法 LoginException 算法数据分析

值得买商品详情API响应数据解析

tbapi

值得买 值得买商品详情API 值得买数据接口

AppAuth-iOS - OAuth 和 OpenID Connect 客户端 SDK

qife

ios Oauth Authentication

视觉语言模型知识蒸馏方法优化

qife

知识蒸馏 注意力机制

哈尔滨二级等保测评实施指南:六大步骤助你高效通过

等保测评

保护通信安全:端到端加密实战指南

qife

网络安全 signal

用过这么多方案,远程访问还是贝锐花生壳内网穿透最靠谱

科技热闻

RocketMQ 客户端负载均衡机制详解及最佳实践

Apache RocketMQ

阿里云 RocketMQ 云原生 消息队列

监督学习与无监督学习:机器学习技术对比与应用实例

qife

机器学习 监督学习

Animate.css - 轻松实现网页动画效果

qife

CSS 前端

VC维度1概念类的差分隐私学习器最优解

qife

差分隐私 VC维度

谷歌耗时一月关停服务器间谍软件Catwatchful

qife

网络安全 数据泄露

逆向工程系列第三篇:二进制分析与破解实战

qife

逆向工程 IDA Pro

泄漏检测与修复综合管理系统(源码+文档+讲解+演示)

深圳亥时科技

AWS新工具推荐移除未使用的权限

qife

AWS 权限管理

南加州大学与某机构共建可信机器学习研究中心

qife

机器学习 安全算法

“同声传译”还是“全文翻译”?为何HotSpot虚拟机仍要保留解释器?

milanyangbo

编译原理 Java虚拟机 #java 解释器

大数据-59 Kafka 拦截器全解析:原理、拦截链机制与自定义实现实战

武子康

Java 大数据 kafka 分布式 消息队列

区块链U卡APP外包开发的费用

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

攻破天网系统——Real World CTF (2022) 解题实录

qife

CTF SQL注入

2025年哈尔滨等保测评失败原因剖析:制度、技术与执行的三重挑战

等保测评

Wire,一个神奇的Go依赖注入神器!

左诗右码

2025 China Joy,Affinity以广告科技解锁开发者与出海企业的共同增长

科技热闻

Building An Elastic Query Engine on Disaggregated Storage

数新网络官方账号

哪些企业需要私有化部署?有没有推荐的私有化im

BeeWorks

即时通讯 IM 私有化部署

虚拟机器人如何理解自然语言指令

qife

人工智能 自然语言处理

计算机图形学在服装定制中的创新应用

qife

计算机图形学 算法优化

ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人

芯动大师

ROS

单样本学习计算任务的新方法

qife

机器学习 元学习

哈尔滨三级等保测评技术要求:从主机安全到应用安全的全面防护

等保测评

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