《Act with Prudence》读后感
《97 Things Every Should Know》中第一个编程方面的建议
文章链接:行事谨慎
很赞同文章中的观点,在做项目中是要谨慎行事和考虑后果。一直在项目前期考虑不够周到,以至于在项目后期不断解决项目前期带来的技术问题。刚入行半年,希望能在项目开始能考虑得全面一点,使得技术债务能轻一点或者没有。
文章翻译:
“无论你做什么,都要谨慎行事以及考虑后果”——Anon.
无论时间表在一开始迭代的时候看起来有多么的舒适,有时候你都无法避免压力。如果你发现你必须在“正确地做这件事”和“快速地解决这件事”之间做出选择,通常“快速地解决这件事”是很有吸引力的,因为你知道你以后会回来解决这个问题的。当你对你自己、你的团队、你的伙伴做出这个承诺,你是认真的(you mean it参考有道翻译)。但是通常下一个迭代会带来新的问题,而你会将注意力放在这些问题上。这一系列可延期的工作被称为技术债务,不是你的朋友。特别的,Martin Fowler 在他的技术债务中称这种故意的技术债务不应该与无意的技术债务混淆。
技术债务就像是借贷:你在短期时间内会从中受益,但你必须为此支付利息直到它被偿还完。代码中的捷径会使添加功能或者重构你的代码变得困难。他们是缺陷和脆弱测试案例的滋生地。你离开它越久,它就会变得更糟糕。当你着手进行最初修复时,可能会有一堆不太正确的设计选择叠加在最初问题之上,使得代码变得难以重构和纠正。事实上,通常只有当事情变得糟糕到你必须要解决它,你才会回头去解决它。到那时候问题是如此难以解决,你真的没有时间或风险。
有时,你必须承受技术债务以满足最后技术债务或实现某个特征的一小部分。不要尝试着处于这种状态,但是如果情况绝对需要,那就去做吧。但是(这是个大大的但是),你必须追踪技术债务并迅速偿还,否则事情就会迅速恶化。一旦你做出妥协的决定,写任务卡或者记录在你的问题追踪系统中以确保它不会被遗忘。
如果你计划在下一个迭代中长话债务,那么花销将是最小的。不偿还债务会产生利息,而利息应该被追踪以使花销可见。这将强调技术债务对业务价值的影响,并能适当确定偿还的优先循序。如何计算和追踪利息的选择将取决于特殊的项目,但你必须追踪它。
尽可能快地偿还完技术债务,否则这将会是轻率的。
翻译如有错误欢迎指正!
《Act with Prudence》读后感的更多相关文章
- 《DevOps软件架构师行动指南》读后感
从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...
- nodejs开发指南读后感
nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...
- DevOps:软件架构师行动指南(文摘)
第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来
- 2020年DevOps工程师入门指南
DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...
- 5月29日 Java性能调优指南 读后感
并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习
- 敏捷开发、DevOps相关书籍——书单
自己瞎整理的一些书单,都是豆瓣评分比较高的书,可以作为选择的一个参考. 书名 豆瓣链接 持续交付:发布可靠软件的系统方法 https://book.douban.com/subject/6862062 ...
- 有奖试读—Windows PowerShell实战指南(第2版)
为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...
- [转载]你所不了解的DevOps
DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...
- 给 DevOps 初学者的入门指南
当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...
- CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
随机推荐
- Spring注解开发-全面解析常用注解使用方法之生命周期
本文github位置:https://github.com/WillVi/Spring-Annotation/ 往期文章:Spring注解开发-全面解析常用注解使用方法之组件注册 bean生命周期 ...
- MySQL 数据库--SQL语句优化
explain查询和分析sql 开发中,为满足一业务功能,使用mysql书写sql时,一条sql往往有多种写法,那么我们就需要选择执行效率比较高的sql. 因此要比较分析sql的执行过程,且同一条sq ...
- 第九次,mp3
- Union Find
并查集 前言 来自知乎,Coursera 上普林斯顿大学的算法公开课,稍微来博客上写写记记. 课程资源:1. Algorithms, Part I 2. Algorithms, Part II 3. ...
- Spring MVC面试整理
Spring MVC执行过程 客户端的请求提交到dispatcherServlet DispatcherServlet查询一个或者多个handlermapping ,找请求的Controller Di ...
- 【1】【MOOC】Python游戏开发入门-北京理工大学【第二部分-游戏开发之框架】
学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ...
- LCTF wp简单复现
1.T4lk 1s ch34p,sh0w m3 the sh31l 代码如下: <?php $SECRET = `../read_secret`; $SANDBOX = "../dat ...
- 关于SpringMVC整合freemarker报错问题
错误信息: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'FreeMa ...
- Webdriver API中文版
Webdriver API中文版 1.1 下载selenium2.0的lib包 http://code.google.com/p/selenium/downloads/list 官方UserGui ...
- Android攻城狮学习笔记—入门篇一
第一章 搭建Android开发环境 1.1 环境组成 JDK(Java Development Kit) Eclipse Android SDK(Software Development Kit) A ...