.技术债务真正的代价

ESP32 S2 AT固件烧录全攻略:USB与串口双模式详解(附常见问题排查) 本文详细介绍了ESP32 S2 AT固件的烧录方法,包括USB和串口双模式的完整流程及常见问题排查。通过硬件准备、软件工具配置和具体操作步骤的解析,帮助开发者高效完成固件烧录,解决实际开发中的典型问题,提升物联网设备开发效率。 阅读详情

无论你是否喜欢把它想成技术债务或是对冲期权,在我们的周围都充斥着糟糕的代码,糟糕的决定,以及这些东西给我们每天的生活带来的影响。但是这些决定所带来的长期影响会是什么?我们真的做了明智的选择吗?Martin Fowler谈论了技术债务的四种类型:从鲁莽的、故意的到偶然的、谨慎的。

故意不计后果的债务

故意不计后果的技术债务就是这样的:开发者(或者他们的经理)会允许那些只可能带来坏结果不可能带来好结果的决定被通过—例如,放弃TDD或者不用任何设计。无论从什么角度来看,这种做法都是非常不专业的。如果开发人员不能做出正确的选择,那么管理者就应该介入,并带入一些能够做明智选择的人进来。 Michael Norton将这称为“令人讨厌的行为,而不是技术债务”。如果我们不能从中受益,并且只是简单地完成任务,写一些糟糕代码,那么这根本不是技术债务,这是垃圾。

不易察觉的债务

不易察觉的技术债务比较有趣。如果我们不知道有更好的东西,我们又怎么会去做一些改变呢?工业标准和最佳的实践都在不断发展。我确定曾经某段时间EJB被认为是很好的组件模型,但现在它绝对被认为是不折不扣技术债务。当前的最佳实践方式很容易就变成未来的垃圾代码。

当开始时,如果我们就已经有了这个领域的知识,或者可能我们从未在这个领域工作过,没有这个领域的知识,可能设计出来的东西会不太相同。有些时候技术债务是不可避免和必然发生的。

谨慎故意的债务

接下来是谨慎而有意的技术债务,这种情况下,我们会有意做一个决定来增加技术债务。这里就有一个再普通不过的决定:

“不管怎样,我们要达到这个季度的目标利润。

我们的市场工作已经开始,所以我们必须在短的时间内抢占市场。

我们已经承诺了交货日期,所以没有太多时间给我们去犯错误。”

有时,我们必须做一些妥协:通过降低工作成果的品质,我们可以更快的完成工作,但我们会稍晚时候付出代价。

不同于其它的技术债务,这是一种特殊的技术妥协。我们故意做决定让代码质量比我们能够达到的质量要差。我们知道这会在以后让我们慢下来;我们知道我们需要回来重做,在所谓的“二期工程”里完善它;但是为了在规定的时间内完成任务,我们接受妥协。

它始终都是正确的决定吗?

1.妥协在短期来看更快,但在长期来看其实更慢

在我们现在就需要的东西与后续可能产生的不明的债务之间做选择时—显而易见,我们始终都会选择妥协。

2.每个妥协都看似渺小,但它们积累起来却非常庞大

不管有多少人都经历过“欠债”,技术债务都会积累起来。我们所做的每次妥协都会增加已有债务的代价。这意味着,每次妥协的代价可能很小,但积累起来后它们会产生巨大的影响。

一开始,我决定不重构一些代码。下一轮时,由于没有很好的重构,很难测试代码,所以我跳过了一些单元测试。第三轮时,我的测试覆盖率非常低,所以我没有信心进行扩展性重构。现在,这段程序真的变得很难测试也很难修改。我的代码在一点一点地,越来越快地恶化。每个妥协都堆积在以前的妥协之上,而且将它们放大。每次妥协看似影响很小,但它们累加起来却让人大伤脑筋。

3.长期的代价很难被量化

当我们同意不重构一段代码时,当我们同意留下一些半成品时,当我们同意为了急于通过测试而采用最小测试项时:这真的很难去估计长期的代价。当然,我们能够估算如何做是正确的—我们知道什么是“真理”。但是,我们如何去估计成本的支出?特别是当它们积累起来时。

我怎么能估计为了解决复杂问题而浪费的时间?时间的损失有可能是因为一个非常难以追查的bug。额外花费的时间可能是因为下一次我无法很容易地重构代码;或者是因为下一次我不敢重构代码,但额外的债务使我不得不这样去做。我怎么可能去量化这个问题?

IMVU,他们发现他们:

“至少低估了一个量级的技术债务的长期代价”

它始终都是错误的吗?

这里有一些很明显的例子,它们都在产生技术债务;或者至少做得有些不称职。如果你想在客户面前展示一个新特性以判断其是否有价值,那么它不需要很完美,它只需要迅速地出现在那里就行。如果新特性对客户没用,那么你将其删除。你节省了将其做“完美”的成本,并迅速获得了你所需要的信息。这显然是符合成本控制的,是一种管理开发过程的简易方式。

但是,如果展示的这个特性获得成功了呢?那么,你需要制定一个计划清理它,重构它,确保它产生足够的文档并被充分的测试。这就是债务。只要你有一个删除它的计划,无论这个特性是有用或无用—那么这是一个完美而有效的方式。但如果不是这样,那么这个半成品特性可能需要数年时间去构建代码。

不同的是,我们会有一个计划来消除债务。多久我们就会接受一个模糊的承诺“我们会回过头来修复它”,或者,“我们会在第二阶段完善它”。我的墓志铭应该是“现在开始第二阶段的工作”。

在代码中留下债务,且没有任何消除债务的计划,就像一个家伙用一张信用的钱去还另一张信用卡的钱。你让债务产生,而不去处理它。没有偿还债务的计划,你最终将走向破产。

技术债务的风险

也许技术债务最大的危害是它代表的风险。技术债务使得我们的代码更加脆弱,不太容易修改。当我们最近讨论这个问题时,正如@bertvanbrakel所说:

“技术债务会使代码变得僵化”

在我们代码上堆积的债务越多,代码就越难改变。这种僵化会带来最大的风险:我们无法足够快速地改变代码。如果竞争环境和监管环境突然变化?如果一个新的竞争对手出现,彻底改变了我们的行业,我们需要多久才能赶上?如果我们只有一个僵化的代码库,在我们花2、3或4年时间赶上竞争对手时,我们又能得到什么呢?

当然这是指的最坏的情况,这种灵活性的缺失(缺乏创新)会一点一点地损害公司。一旦一个革命性的公司变成老古板,无法作出反应,并只释放衍生产品。当公司发现自己无法创新,跟不上不断变化的局势—它们就会变得无关紧要。这也就是技术债务真实的代价。

没有一个偿还技术债务的计划,没有可靠的办法来估计它所带来的长期成本,我们真的可能做出谨慎而故意的决定吗?这种轻易就能增加技术债务的决定做得是否太草率了呢?

ESP32-S3开发板烧录失败?Bootloader模式进入全攻略 本文详细解析了ESP32-S3开发板烧录失败的常见原因及解决方案,重点介绍了如何正确进入Bootloader模式。通过按键组合、硬件设计差异分析、自动下载模式失效排查等实用技巧,帮助开发者高效解决烧录问题,提升开发效率。 阅读详情

相关推荐

ESP32-C3固件烧录全攻略:从入门到精通

本文详细介绍了ESP32-C3固件烧录的全过程,从硬件接线、软件环境搭建到三种主流工具(VSCode+PlatformIO、Flash Download Tools、esptool.py)的实战操作。内容涵盖固件构成、烧录地址等核心知识,并提供了常见问题的避坑指南,旨在帮助开发者从入门到精通,快速掌握ESP32-C3的固件烧录技能。

weixin_29183637的博客 673

技术债务(Technical Debt)

技术债务(也称为技术债务或代码债务)描述了当开发团队采取行动加快交付某个功能或稍后需要重构的项目时的结果。换句话说,这是将快速交付优先于完美代码的结果。如果您在软件行业工作过一段时间,那么您很可能听说过“技术债务”这个词。也称为设计债务或代码债务,这个短语(或更准确地说,比喻)广泛用于技术领域。它被称为包罗万象的包罗万象,从错误到遗留代码,再到缺少的文档。但究竟什么是技术债务?为什么我们这样称呼它?...

weixin_42887343的博客 4921

ESP32 烧录 7 大常见错误:从超时到MD5不匹配的根因分析与修复

本文深入解析ESP32烧录过程中的7大常见错误,包括等待报头超时、MD5校验失败等,提供从硬件信号层到软件配置层的系统化排查方法。通过详细案例和解决方案,帮助开发者快速定位和修复程序烧录问题,提升开发效率。

weixin_28720767的博客 324

DevOps笔记-12:到底什么是技术债务

一、什么是技术债务? 1、技术债务定义 举个例子:来了一个紧急需求,要求你在 3 内开发完成上线。评估后有两种方案,方案 1:采用分层架构,引入消息队列。这样做的好处是结构清晰,功能解耦,但是需要 1 周的时间;方案 2:直接在原有代码的基础上修修补补,硬塞进去一块逻辑和页面,这样做需要 2 时间,还有 1 时间来测试。大多数情况下会选择方案 2,因为业务的需求优先级始终是最高的。尤其是当下,市场竞争恨不得以秒来计算,先发优势非常明显。 技术债务,就是指团队在开发过程中,为了实现......

魏波 5760

架构师必备:技术债务的识别、管理与解决之道

在开发开始之前,需求往往没有得到充分的定义,导致开发在设计之前就草草开始。这种方式看似可以节省时间,但由于需求在开发过程中不断变化,往往需要后期大量返工,增加了技术债务

AlbenXie的博客 1589

一文带大家了解什么是技术债务

技术债务(technical debt),也称为代码债或设计债,是软件开发中的一个术语,用于描述由于最初选择更快的交付而不是需要更长时间的干净,高效的代码而导致的额外返工成本。这个概念是从金融债务中借来的,在金融债务中,一个人借钱去买他现在想要的东西,当你没有钱买它的时候,以后必须支付利息。本质上,它指的是在项目速度上对良好的编码实践所做的妥协,这积累了最终必须以时间、金钱和资源的形式“偿还”的“债务”。

liwenxiang629的博客 2599

如何有效管理技术债务:IT项目中的长期隐患

技术债务是指为了快速达成短期目标而采取的权宜之计,通常是牺牲了代码质量、架构设计的健壮性或最佳实践,从而导致未来维护和扩展成本增加的风险。编写了不完善的代码,没有足够的注释或测试覆盖;设计了一个缺乏扩展性的系统架构,导致后续功能难以集成;选择了过时或容易淘汰的技术栈,随着时间推移难以维护。就像金融债务一样,技术债务一旦积累过多,后期的“利息”——也就是维护和修复这些问题的成本——会远远超过当初的节省。因此,技术债务虽然在短期内可以提升开发速度,但必须以合适的方式管理,避免其长期积压。

2301_79685859的博客 1727

Arduino ESP32烧录失败完整自救指南:6大场景一次排清

Arduino ESP32 开发板上手门槛低、生态成熟,但"上传失败"(俗称烧录失败)几乎是每个新手都会撞上的第一堵墙。报错五花八门,有的是编译过不去,有的是串口连不上,还有的是刷到一半突然卡死。别急着退货,本文按"先自查、再分场景、最后兜底"的思路,把常见的烧录失败原因一次排清,全程照着做即可。 ## 开工前的三分钟自检 很多烧录失败其实栽在最不起眼的地方。正式排查前,先花三分钟过一遍这三件

gitblog_00112的博客 922

程序写不进去?Arduino ESP32 烧录失败 6 步从零排查实战

项目交付前夜,你点下 Arduino IDE 的上传按钮,底部却弹出红字:`Failed to connect to ESP32`。换线、重启、重装驱动,折腾到深夜依旧无果——这种经历几乎每个 **Arduino ESP32** 玩家都撞上过。本文按"先判现象、再查链路、后换通道"的顺序,从 0 到 1 排查**固件烧录失败**的每一步,把下载难题一次讲透。 > 先记住一个总原则:烧录失败九成出

gitblog_00149的博客 1016

ESP32烧录故障排除终极方案:从新手到专家的完整指南

你是否曾经在深夜调试ESP32时,突然发现设备无法识别,烧录进度条永远停留在0%?这种令人抓狂的时刻,相信每个物联网开发者都经历过。别担心,今我将为你揭秘ESP32烧录的终极解决方案,让你从此告别"端口未找到"的噩梦。 作为一名从菜鸟成长起来的技术专家,我深知烧录失败带来的挫败感。本文将带你系统学习ESP32烧录的核心技术,从基础概念到高级技巧,全面覆盖常见故障场景。无论你是刚接触ESP32的

gitblog_00029的博客 761

esp32串口报错flash read err 1000...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1121

ESP32-CAM通过Arduino连接Wi-Fi的核心要点解析

深入解析ESP32-CAM通过Arduino实现Wi-Fi连接的核心方法与常见问题,涵盖引脚配置、代码烧录和网络调试等实用技巧,帮助快速上手esp32-cam的无线通信功能。

weixin_35815766的博客 840

ESP32-C3固件烧录实战指南:从入门到精通

本文详细介绍了ESP32-C3固件烧录的全过程,从硬件准备到软件工具选择,再到具体烧录步骤和常见问题解决。涵盖了PlatformIO、Flash Download Tools和esptool.py三种烧录方式,适合从入门到精通的开发者参考。特别强调了GPIO9引脚的连接细节和烧录模式进入方法,帮助读者避免常见错误。

weixin_26834815的博客 419

ESP32-S3 通过esptool.py刷写MicroPython固件的完整指南

本文详细介绍了如何使用esptool.py为ESP32-S3刷写MicroPython固件的完整步骤,包括准备工作、环境安装、固件烧录及常见问题解决。通过本指南,开发者可以快速掌握微控制器编程的基础,实现物联网设备的快速开发与原型设计。

php55的博客 841

告别命令行恐惧:用ESP32-S3的Flash Download Tool图形化烧录固件(保姆级图文教程)

本文详细介绍了如何使用ESP32-S3的Flash Download Tool图形化工具进行固件烧录,无需命令行操作。从工具下载、USB驱动安装到烧录参数配置,提供了保姆级图文教程,特别适合硬件爱好者和学生快速上手。通过直观的图形界面,大幅降低学习成本,提升烧录效率。

weixin_27869497的博客 265

ESP32-C3 通过 ESP-Prog (JTAG) 实现离线固件烧录与调试配置

本文详细介绍了ESP32-C3通过ESP-Prog(JTAG)实现离线固件烧录与调试配置的全流程。从硬件连接到OpenOCD配置,再到高级调试技巧,帮助开发者高效完成批量烧录任务,提升产线效率与稳定性。特别适合智能家居、工业控制等物联网设备的量产场景。

weixin_26918763的博客 128

ESP32-S3烧录总失败?先别急,检查这5个硬件条件(附完整接线图)

本文详细解析了ESP32-S3固件烧录失败的5大硬件原因,包括电源质量、时钟电路、Strapping引脚配置、上电时序和串口连接问题。通过专业测试方法和实战案例,帮助开发者快速定位并解决烧录难题,确保硬件环境满足ESP32-S3的严格启动要求。

weixin_27956639的博客 485

合宙ESP32-C3开发板的Micropython固件烧录:避坑指南与高效技巧

本文详细介绍了合宙ESP32-C3开发板Micropython固件烧录的全流程,包括硬件准备、驱动安装、固件选择、烧录工具优化及开发环境配置。特别针对常见问题提供了实用解决方案,帮助开发者高效完成固件烧录并优化开发体验。

weixin_29190169的博客 410
上一篇: bat文件如何设置以管理员身份运行
下一篇: android 局部界面动态切换
OrionUp
博客等级 码龄14年 1粉丝 4原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值