《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. except but

    He didn't speak anything but Greek... 他只会说希腊语.The crew of the ship gave them nothing but bread to ea ...

  2. nmap速查表v1.0(中文版)

    基本语法: #nmap [扫描方式] [命令选项] {目标} 扫描目标格式: IPv4 地址: 192.168.1.1IPv6 地址:AABB:CCDD::FF%eth0主机名:www.target. ...

  3. Alpha Scrum2

    Alpha Scrum2 牛肉面不要牛肉不要面 Alpha项目冲刺(团队作业5) 各个成员在 Alpha 阶段认领的任务 林志松:督促和监督团队进度.协调组内合作,前端页面编写,博客发布 林书浩.陈远 ...

  4. css3 网格背景

    background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.25, rgba(255, 255, 255, .2)), ...

  5. git回滚线上代码

        由于之前自己推代码的时候操作失误,push代码的时候没有push到线上的dev分支,而是push到了线上master分支(主要是因为没有在命令后写分支名,直接推到默认master分支上了),覆 ...

  6. 3669. [NOI2014]魔法森林【LCT 或 SPFA动态加边】

    Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...

  7. springboot+maven——打war包方式

    转载 Springboot打包war包部署到自己的tomcat中 一.springboot+maven工程——打war包步骤如下: 1.修改父pom.xml文件: <packaging>p ...

  8. Eclipse中修改git地址、用户、密码

    1. 修改Url Window > Preferences > Team > Git > Configuration > Repository Settings 2. 修 ...

  9. JNI由浅入深_3_Hello World

    1.需要准备的工具,eclipse,cdt(c++)插件,cygwin(unix)和 android ndk. 在cygwin的etc目录下将ndk的路径引入到profile文件中,可以在cygwin ...

  10. WebRTC博客推荐

    1. http://www.cnblogs.com/lingyunhu/ 2. http://www.jianshu.com/u/eadc7531ecb8