《97 Things Every Should Know》中第一个编程方面的建议

文章链接:行事谨慎

  很赞同文章中的观点,在做项目中是要谨慎行事和考虑后果。一直在项目前期考虑不够周到,以至于在项目后期不断解决项目前期带来的技术问题。刚入行半年,希望能在项目开始能考虑得全面一点,使得技术债务能轻一点或者没有。

文章翻译:

“无论你做什么,都要谨慎行事以及考虑后果”——Anon.

  无论时间表在一开始迭代的时候看起来有多么的舒适,有时候你都无法避免压力。如果你发现你必须在“正确地做这件事”和“快速地解决这件事”之间做出选择,通常“快速地解决这件事”是很有吸引力的,因为你知道你以后会回来解决这个问题的。当你对你自己、你的团队、你的伙伴做出这个承诺,你是认真的(you mean it参考有道翻译)。但是通常下一个迭代会带来新的问题,而你会将注意力放在这些问题上。这一系列可延期的工作被称为技术债务,不是你的朋友。特别的,Martin Fowler 在他的技术债务中称这种故意的技术债务不应该与无意的技术债务混淆。

  技术债务就像是借贷:你在短期时间内会从中受益,但你必须为此支付利息直到它被偿还完。代码中的捷径会使添加功能或者重构你的代码变得困难。他们是缺陷和脆弱测试案例的滋生地。你离开它越久,它就会变得更糟糕。当你着手进行最初修复时,可能会有一堆不太正确的设计选择叠加在最初问题之上,使得代码变得难以重构和纠正。事实上,通常只有当事情变得糟糕到你必须要解决它,你才会回头去解决它。到那时候问题是如此难以解决,你真的没有时间或风险。

  有时,你必须承受技术债务以满足最后技术债务或实现某个特征的一小部分。不要尝试着处于这种状态,但是如果情况绝对需要,那就去做吧。但是(这是个大大的但是),你必须追踪技术债务并迅速偿还,否则事情就会迅速恶化。一旦你做出妥协的决定,写任务卡或者记录在你的问题追踪系统中以确保它不会被遗忘。

  如果你计划在下一个迭代中长话债务,那么花销将是最小的。不偿还债务会产生利息,而利息应该被追踪以使花销可见。这将强调技术债务对业务价值的影响,并能适当确定偿还的优先循序。如何计算和追踪利息的选择将取决于特殊的项目,但你必须追踪它。

  尽可能快地偿还完技术债务,否则这将会是轻率的。

  翻译如有错误欢迎指正!

《Act with Prudence》读后感的更多相关文章

  1. 《DevOps软件架构师行动指南》读后感

    从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...

  2. nodejs开发指南读后感

    nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...

  3. DevOps:软件架构师行动指南(文摘)

    第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来

  4. 2020年DevOps工程师入门指南

    DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...

  5. 5月29日 Java性能调优指南 读后感

    并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习

  6. 敏捷开发、DevOps相关书籍——书单

    自己瞎整理的一些书单,都是豆瓣评分比较高的书,可以作为选择的一个参考. 书名 豆瓣链接 持续交付:发布可靠软件的系统方法 https://book.douban.com/subject/6862062 ...

  7. 有奖试读—Windows PowerShell实战指南(第2版)

    为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...

  8. [转载]你所不了解的DevOps

    DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...

  9. 给 DevOps 初学者的入门指南

    当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...

  10. CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

随机推荐

  1. 使用iCarousel的旋转木马效果请求图片

    使用iCarousel的旋转木马效果请求图片 https://github.com/nicklockwood/iCarousel 先看看效果: 源码如下: // // RootViewControll ...

  2. JavaScript学习---JavaScript深入学习

    对象的概念 对象分类[3种]:     ECMScript(JS自己的对象), BOM(浏览器对象)    DOM(文档对象,操作HTML的) 11种内置对象:       Array ,String ...

  3. [BZOJ 3992][SDOI2015]序列统计

    3992: [SDOI2015]序列统计 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 2275  Solved: 1090[Submit][Stat ...

  4. Angular组件之间通讯

    组件之间会有下列3种关系: 1. 父子关系 2. 兄弟关系 3. 没有直接关系 通常采用下列方式处理(某些方式是框架特有)组件间的通讯,如下: 1父子组件之间的交互(@Input/@Output/模板 ...

  5. UVa 1515 - Pool construction(最小割)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. luogu P2742 【模板】二维凸包

    嘟嘟嘟 没错,我开始学凸包了. 其实挺简单的. 前置技能: 1.极坐标系 2.向量叉积 1.极坐标系 就是一种二维坐标系.只不过两个坐标分别表示向量和极轴的角度和自身的长度.对于不同的问题,极轴可以自 ...

  7. List泛型的应用

    在我看一个源程序的时候看到这个例子使用了IList<T>返回类型,因为上午刚刚总结过List<T>的详细用法,突然出现了IList<T>,感觉很奇怪,于是上网搜集了 ...

  8. xmppframework 简介

    XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开 ...

  9. JNI由浅入深_2_C语言基础

    *含义 1.乘法 3*5 2.定义指针变量 int * p://定义了一个名字叫p的变量,能够存放int数据类型的地址 3.指针运算符, //如果p是一个已经定义好的指针变量则*p表示以p的内容为地址 ...

  10. 404 Note Found 队-需求报告

    目录 组队后的团队项目的整体计划安排 项目logo及思维导图 项目logo 思维导图 产品思维导图 产品思维导图-引导 产品思维导图-后端数据处理.存储 产品思维导图-短信识别 产品思维导图-智能分析 ...