HTML5培训-高端面授HTML5培训机构
云和教育:云和数据集团高端IT职业教育品牌
  • 华为
    授权培训中心
  • 腾讯云
    一级认证培训中心
  • 百度营销大学
    豫陕深授权运营中心
  • Oracle甲骨文
    OAEP中心
  • Microsoft Azure
    微软云合作伙伴
  • Unity公司
    战略合作伙伴
  • 普华基础软件
    战略合作伙伴
  • 新开普(股票代码300248)
    旗下丹诚开普投资
  • 中国互联网百强企业锐之旗
    旗下锐旗资本投资

出来混总是要还的@程序员,你的技术负债还了吗?

  • 发布时间:
    2019-09-02
  • 版权所有:
    云和教育
  • 分享:

在软件工程领域中,“技术债务“是一个贬义词。人们在使用这个词的时候常常表达出某种遗憾,过去犯下的错误,最终需要通过重构来弥补。

什么是技术负债?

配图1 程序员你的技术负债还了吗.jpg

技术负债(英语:Technical debt),又译技术债,也称为设计负债(design debt)、代码负债(code debt),是编程及软件工程中的一个比喻。指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,从而在未来给自己带来的额外开发负担。这种技术上的选择,就像一笔债务一样,虽然眼前看起来可以得到好处,但必须在未来偿还。

技术债务的产生有着很多原因,但其中更多的是由于要在短时间内匆忙完成原本耗时较长的工作,导致部分业务逻辑没有完整的设计等,使得产品在短时间内有效,但是长远来看,却是一颗不稳定的炸弹,一旦触发,对产品、对企业都有可能造成无法挽回的损失。

配图2 程序员你的技术负债还了吗.jpg

总而言之,技术债务会带来很多麻烦,有些甚至是“致命”的。

那么身为技术开发者,该如何偿还技术负债?

如何偿还技术负债?

技术债务分为有意的技术债务和无意的技术债务,两种形式的技术债务形成的原因和带来的结果是不同的,解决方法也不同。

无意的

由于经验的缺乏导致初级开发者编写了质量低劣的代码。

解决方案

技术培训

配图3 程序员你的技术负债还了吗.jpg

毕竟大部分的程序员学习能力还是很强的,部门牛人的培训还是很有必要的,也是学习的重要途径之一。

从最开始的代码规范、到熟悉业务、最后再到编写文档。

2.CodeReview

CodeReview 是非常重要的,同时也是对自身的一个提高。

在这个阶段不同工程师之间可以相互review,审查别人的代码能够发现很多问题,同时也能学到很多知识。

有意的

团队根据当前而非未来进行设计选型,这种方式可能很快就能解决当前的问题,但却很拙劣。

这就情况很可能是为了图省事才这样干的。也有可能是工期太短,人员太少,技术问题等等。

解决方案

1.系统设计的框架是对的

必须能够有效处理当前需求可预见的情况,对于未知的、可能出现的特殊情况,很小的改动就能解决问题。

配图4 程序员你的技术负债还了吗.jpg

根据当前的业务,进行合理的创建数据表,尽量的代码解耦和。必须有日志模块,操作日志,错误日志,业务日志等等…

2.所有的工程师有主人翁的意识

开发前,针对产品提出的需求,进行要进行细节确认,自己也可以画一个程序的流程图。

开发时,首先把流程全部顺下来,其中遇到调用其他接口、技术难点、需求模糊,及时确认或记录 TODO 标签。

配图5 程序员你的技术负债还了吗.jpg

开发后,及时对自己的流程进行确认,查看代码中是否有未解决的地方。

每个公司都有自己任务管理系统,例如JIRA之类的,提测后,时时关注自己的BUG。

如果与产品有分歧的地方一定要及时沟通,达成共识。

配图6 程序员你的技术负债还了吗.jpg

3.一定要有健全的测试环境、预发布环境、正式环境

因为有些程序可能需要进行压力测试,所以服务器的配置还是很关键的。

多个环境的测试,更能保证程序的健壮性。

4.定期处理一些技术债务

等产品上线后,开发就没有那么紧啦,这个时间大家可以找个时间处理技术债务,一边建立感情,一边品味一下原来的代码,是不是酸爽无比。

5.善于发现系统的技术债务

配图7 程序员你的技术负债还了吗.jpg

勇于发现系统中的技术债务,当然不是为了所谓的奖励,仅仅是为了自己的提高,让自己为系统负责,而不是事不关己高高挂起。

当然,最重要的其实是把技术债务的重要性提到一个被认可的位置上。

工程师如果能遇见一个债务可能导致的问题,自然愿意花时间去处理。

总结

配图8 程序员你的技术负债还了吗.jpg

技术债务是伴随着项目出现而且无法避免,但是如何保持其在可控范围之内,是我们应该思考的问题。技术债务的避免和消除都需要优秀的开发人员,人始终是软件开发中最重要的因素。作为一名普通的码农,不断地提升自己是非常必要的。