0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一位软件开发工程师面对生活压力的自述

工程师人生 来源:网络整理 作者:工程师吴畏 2018-06-28 16:06 次阅读

债务这个词,相信大家已经都对其深有体会了,特别是像我一样作为“房奴”的人,每个月都要去银行还钱,那就是债务啊。

在软件开发的过程中,我们往往也会借债,人们称之为技术债务,其实也就是为了快速地解决问题,而采取的不规范的方案。比方说把某个条件写死,再比方说采用一些捷径达到目的,而这只是特殊情况,无法应用在其他模块中。

对于房贷,大家肯定每个月都会记着去还,但是对于技术债务,大家似乎就不那么关心了,的确这个东西不一定是谁借谁还,可能一个人的代码中产生了技术债务,然后由于负担太重,闪人了,那没有办法,这笔债务就会压在后来工作接替者身上,古语说:父债子偿,不知道这应该叫什么。

然而,技术债务其实最终的承担者还是系统的所有者,或者说系统的开发商。而且,技术债务有一个致命的特点,与我们的房贷不同,而与一种很可怕的借款——我们称之为高利贷——相同,那就是会利滚利。试想一下,如果我们在一个类中欠下了技术债务,然后之后的程序又对这个类进行了扩展和修改,再后的程序对扩展后的程序又做出了更大的扩展,或者说后来的程序在一些功能的写法上参照了欠下债务的类,那么这个债务就会产生非常大的利息,甚至于超过了债务本身。用不了太多时间,我们就会发现,已经无力偿还这份技术债务了。

上面所提到的还只是在功能上的技术债务,我觉得技术债务遍布于我们的系统开发过程之中。比方说:

在代码规范上也存在技术债务,如果一个程序员为了快速开发或者修改一个功能,在开发的时候没有遵守代码规范,那么此时就会欠下代码规范方面的债务。如果不尽快偿还的话,那么之后的基于该程序的修改,也会有很大的可能不遵守代码规范,这也正是破窗子理论的体现。这样下去,程序的可维护性就会大大降低,直至不可维护。

在文档上也存在技术债务。现在很多的开发团队中还是存在技术文档的,像详细设计什么的。如果一次开发中,由于时间紧,只修改了代码,而没有修改相关的文档,那么必定就会造成文档和实际代码功能上的不一致。这样做的后果就是,在一段时间之后,我们会发现文档根本就不足以作为参考,因为有些时候不仅不会帮助我们,而且还会造成误导,从而大家对文档都失去了信心。

从上面的种种我们可以看出,欠下技术债务,而疏于修改,后果会非常严重,那么我们应该怎么做呢?其实道理很简单,首先是尽量不要欠下技术债务,其次就是一旦迫不得已欠下了债务,就应该以最快的速度偿还。我们在银行借的房贷,5年还和20年还,利息会相差很多,对于技术债务,也是同样,如果尽快偿还,那么不会付出太大的代价,而且是在我们的能力承受范围之内的,但是如果拖的时间太长,债务就会变得越来越多,直至我们无力偿还。

所以,作为程序员,除了关心自己生活中的债务之外,也请对技术债务提高警惕!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 工程师
    +关注

    关注

    59

    文章

    1571

    浏览量

    68552
  • 程序员
    +关注

    关注

    4

    文章

    952

    浏览量

    29815
收藏 人收藏

    评论

    相关推荐

    我国软件开发者数量突破940万

    。目前,开源已覆盖软件开发的所有场景,全球97%的软件开发者和99%的企业使用开源软件。 工业和信息化部总工程师 谢少锋:我国已经成为全球开源参与者数量排名第二,增长速度最快的国家,开
    的头像 发表于 12-24 13:52 135次阅读

    嵌入式工程师常用的开发工具有哪些?

    仿真器可以模拟复杂的微控制器和外设,帮助工程师在早期阶段进行软件开发和调试。这大大缩短了开发周期,降低了开发成本。 总之,嵌入式工程师需要
    发表于 12-20 15:29

    ECU电控软件开发及测试介绍

    本文重点介绍符合AutoSar架构的应用软件开发、MBD开发模式下的软件质量评估与优化方案、复杂场景下的ECU性能压力测试方案。
    的头像 发表于 09-26 14:25 3424次阅读
    ECU电控<b class='flag-5'>软件开发</b>及测试介绍

    9月12日云技术研讨会 | ECU电控软件开发及测试全流程解决方案

    本次研讨会,经纬恒润将结合业务团队多年来在软件开发和测试领域的工程实践经验,分享探讨基于AutoSar架构的应用软件开发、基于MBD开发软件
    的头像 发表于 09-26 14:18 1405次阅读
    9月12日云技术研讨会 | ECU电控<b class='flag-5'>软件开发</b>及测试全流程解决方案

    寻求专业工程师帮助设计USB多口充电器

    嗨, 我正在开发款USB多口充电器,现寻求一位专业工程师或产品设计的帮助。希望能够与有经验的工程师
    发表于 08-05 12:03

    嵌入式软件开发招聘

    本帖最后由 jf_19082533 于 2024-7-26 13:56 编辑 寻求:嵌入式软件工程师 要求:3年以上开发经验,音视频领域应用层开发 地址:北京市昌平区 邮箱:1017933921@qq.com 欢迎广大感兴
    发表于 07-26 13:44

    【《软件开发珠玑》阅读体验】+ 心得

    ,《软件开发珠玑》是本值得每个软件开发者阅读的书籍。它教会了我们如何了解需求、设计、项目管理,如何与团队合作以及如何持续学习和进步。在未来的软件开发生涯中,我将继续秉承书中的理念,努
    发表于 06-23 17:56

    找STM32硬件开发兼职工程师

    上海做传感器的公司,找STM32硬件开发兼职工程师,会硬件开发,嵌入式软件开发,可项目外包。有意联系:15900460170
    发表于 06-22 19:12

    嵌入式软件工程师如何提升自己?

    ,可以为自己的职业生涯打下坚实的基础,并实现个人的职业目标。愿每一位嵌入式软件工程师都能在这个充满挑战和机遇的领域中取得成功!
    发表于 06-12 11:20

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式软件工程师软件开发领域中的种专
    发表于 05-16 11:00

    为何国外工程师偏爱使用for(;;)来实现MCU死循环?

    一位工程师发现,国外工程师在给demo在做死循环时用的是for(;;),而不是常用的while(1)。这仅仅是个人习惯的问题,还是有更深层次的含义?
    发表于 04-01 11:26 662次阅读
    为何国外<b class='flag-5'>工程师</b>偏爱使用for(;;)来实现MCU死循环?

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入在硬件设备中的
    的头像 发表于 01-22 15:27 2334次阅读