《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. [BZOJ 2730][HNOI 2012] 矿场搭建

    2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2113  Solved: 979[Submit][Statu ...

  2. Linux命令--获取帮助

    man命令 是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助.配置文件帮助和编程帮助等信息. 语法 man(选项)(参数) 选项 -a:在所有的man帮助手册中搜索: -f:等价 ...

  3. ubuntu 14.04 配置 java 环境

    下载java包 (这里以java8为例) java包的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloa ...

  4. [原]外网访问用azure虚拟机搭建的网站

    1.Ubuntu+Apache+PHP的环境搭建(此处省去了mysql的步骤) 在azure上搭建上述的开发环境和在本地PC搭建是一样的步骤,具体介绍请参看这里. 2.从外网访问 注意,这一步的前提是 ...

  5. 一个“日期”字符串进行比较的case

    项目中有个功能是比较会员是否过期,review同事的代码,发现其写法比较奇葩,但线上竟也未出现bug. 实现大致如下: $expireTime = "2014-05-01 00:00:00& ...

  6. python接口测试-项目实践(八) 完成的接口类和执行脚本

    脱敏后脚本 projectapi.py: 项目接口类 # -*- coding:utf-8 -*- """ xx项目接口类 2018-11 dinghanhua &quo ...

  7. MySQL面试宝典

    ==============================================# 参数==============================================auto ...

  8. BZOJ 1588 营业额统计 set

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1588 题目大意: 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交 ...

  9. window用ssh连接本机虚拟机中的ubuntu

    @window用ssh连接本机虚拟机中的ubuntu 主机和虚拟机间通信,需将2台机器的IP地址设为同一网段. 1.设置虚拟机: 虚拟机–> 设置–> Hardware –> Net ...

  10. 苹果浏览器样式重置submit

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/XTQueen_up/article/details/34446541 大家刚接触写手机页面 也许都会 ...