读程序员的README笔记02_软件的熵与技术债

这篇具有很好参考价值的文章主要介绍了读程序员的README笔记02_软件的熵与技术债。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读程序员的README笔记02_软件的熵与技术债

1. 提出问题

1.1. 所有的工程师都应该提出问题,这是学习的一个重要部分

1.2. 新手工程师会担心打扰队友而试图自己解决所有问题,这样做既慢又没有效

1.3. 尝试自己寻找答案

1.3.1. 即使你的同事知道答案,你也要付出努力,这样你会学到更多

1.3.2. 如果你没有找到答案,当你寻求帮助时,你的调查仍然会成为你的起点

1.3.3. 不要只是在互联网上搜索

1.3.3.1. 信息还存在于文档、内部论坛、自述文件(README)、源代码和错误跟踪器中

1.3.3.2. 如果你的问题是关于代码的,试着把它变成一个可以演示的单元测试

1.4. 设置一个时间限制

1.4.1. 限制你研究一个问题时预期花费的时间

1.4.2. 在你开始研究之前就应该设定好时间限制,这样可以鼓励你遵守这个限制,防止收益递减(研究最终会拖累生产性)

1.5. 写下全过程

1.6. 别打扰别人

1.6.1. 其他人也在努力完成工作,他们需要专注

1.6.2. 公司有不同的惯例来标识“请勿打扰”

1.6.2.1. 耳机、耳塞或耳罩是通用的标识

1.7. 多用“非打扰式”交流

1.7.1. 组播(multicast)是指将消息发送到一个组而不是个人目标

1.7.2. 异步(asynchronous)是指可以稍后处理的消息,而不需要立即响应

1.7.3. 即使你需要一个特定的人来回答问题,也要使用共享论坛

1.7.3.1. 你可以在帖子中提到他们的名字

1.8. 批量处理你的同步请求

1.8.1. 聊天和电子邮件对简单的问题很实用,但复杂的讨论很难异步进行

1.8.2. 面对面的交流是“高带宽”和“低延迟”的

1.8.2.1. 可以快速地解决很多问题

1.8.3. 安排一次会议,或者使用“办公室答疑时间”

1.8.3.1. 写下你的问题并保留到会议上

1.8.3.2. 如果你已经没有问题了,就请取消会议

1.8.3.3. 如果你发现自己反复地取消会议,就自省一下这种会议是否还有用

1.8.3.3.1. 如果已经没用了,就不要再安排

2. 行为准则

读程序员的README笔记02_软件的熵与技术债文章来源地址https://www.toymoban.com/news/detail-748788.html

3. 冒充者综合征

3.1. 大多数新手工程师在开始工作时处于“有意识的无能力”阶段

3.1.1. 有很多东西需要学习,而其他人似乎早已遥遥领先

3.2. 他们说他们只是很幸运,他们不值得别人认可,或者是升职标准太宽松了。这就是冒充者综合征

3.3. 冒充者综合征,以及可能随之并发的焦虑和抑郁,是一个复杂的话题

3.4. 冒充者综合征会自我强化

3.4.1. 每一个错误都会被看作能力匮乏的证明

3.4.2. 每一项成功都是优秀“冒充者”冒充的证

3.4.3. 自我怀疑很常见

3.5. 不要忽视赞美和成就

3.5.1. 即使是小事情,也要把它们写下来

3.6. 获得反馈也有助于缓解冒充者综合征

3.7. 治疗可能也会有帮助

3.7.1. 可以利用治疗来获得你的优势,并克服短期的挑战

4. 邓宁-克鲁格效应

4.1. 邓宁-克鲁格效应在新手工程师中并不常见

4.2. 一种认知偏见,人们认为自己比实际情况更有能力

4.2.1. 与冒充者综合征相反

4.3. 他们太自信了

4.4. 他们总是到处批判公司的技术栈,抱怨代码的质量,贬低设计

4.5. 他们确信自己的想法是正确的

4.6. 他们的默认模式是直接回绝或无视反馈

4.7. 完全自信标志着盲点

4.8. 应对

4.8.1. 有意识地培养好奇心

4.8.2. 对犯错持开放态度

4.8.3. 找到一位受人尊敬的工程师,询问他你做得怎么样,并真正地倾听

4.8.4. 讨论设计决策,尤其是那些你不同意的决策,问问为什么会做出这样的决策

4.8.5. 培养一种权衡利弊的心态,而不是非黑即白的心态

5. 代码库

5.1. 代码库就像阿尔勒的那个圆形剧场一样

5.2. 一代人写了几层,然后又改了改

5.3. 很多人都接触过这些代码

5.4. 测试缺失或强制执行已经过时的设定,不断变化的需求扭曲了代码的使用

6. 软件的熵

6.1. 走向无序的趋势被称为软件的熵(software entropy)

6.2. 当你浏览代码时,你就会注意到它的缺点

6.3. 混乱的代码是变化的自然副作用

6.3.1. 不要把代码的不整洁归咎于开发者

6.4. 很多事情都会导致软件的熵

6.4.1. 开发者误解了其他人的代码或风格上的差异

6.4.2. 不断进步的技术栈

6.4.3. 不断发展的产品需求

6.4.4. bug修复和性能优化带来的复杂性

6.5. 软件的熵可以被管理

6.5.1. 代码风格和bug检测工具有助于保持代码的整洁

6.5.2. 代码评审有助于传播知识和减少不一致

6.5.3. 持续的重构可以减少熵

7. 技术债

7.1. technical debt

7.2. 技术债(technical debt)是造成软件的熵的一个主要原因

7.3. 技术债是为了修复现有的代码不足而欠下的未来工作

7.4. 技术债总是不可避免的

7.4.1. 因为你无法防止无意中的错误

7.5. 技术债甚至可能是成功的标志

7.5.1. 项目只有存活了足够长的时间,才会变得无序

7.6. 技术债也有“本金”和“利息”

7.6.1. 本金是那些需要修复的原始不足

7.6.2. 利息是随着代码的发展没有解决的潜在不足,因为实施了越来越复杂的变通方法

7.6.3. 随着变通办法的复制和巩固,利息就会增加

7.7. 复杂性蔓延开来,就会造成bug

7.7.1. 未支付的技术债很常见,遗留代码里有很多这样的债务

7.8. 你不同意的技术决策并不是技术债,你不喜欢的代码也不是

7.9. 谨慎的、有意的技术债是技术债的典型形式

7.9.1. 在代码的已知不足和交付速度之间进行务实的取舍

7.9.2. 只要团队有规划地解决这个问题,这就是好的债务

7.10. 鲁莽的、有意的技术债是在团队面临交付压力的情况下产生的

7.10.1. 出现“……就……”或“只是”这种词就是在暗示讨论中的内容是鲁莽的债务

7.11. 鲁莽的、无意的技术债来自“不知道自己不知道”

7.11.1. 可以通过事前写下实施计划并获得反馈的方式,以及进行代码评审的方式来减轻这种债务的危险

7.11.2. 持续学习也可以最大限度地减少这种无意的鲁莽行为

7.12. 谨慎的、无意的技术债(是成长经验积累的自然结果

7.12.1. 有些教训只有在事后才会被吸取

7.12.2. 与谨慎的、有意的技术债不同,团队不会知道自己正在承担债务

7.12.3. 与鲁莽的、无意的技术债不同,这种类型的债务更像是在出问题的领域反思学习或作为软件架构师成长的必经之路

7.12.3.1. 不是未做功课这么简单

7.12.4. 健康的团队使用诸如项目回顾等做法来发现无心之债,并讨论何时以及是否偿还

7.13. 在短期内,偿还技术债会拖慢交付特性的速度,而承担更多的技术债会加速交付

7.14. 长期来看,情况正好相反:偿还技术债会加快交付的速度,而承担更多的债务则会减缓交付

到了这里,关于读程序员的README笔记02_软件的熵与技术债的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 读程序员的README笔记09_代码评审

    4.4.1.1. walk-through 4.4.1.2. 一种面对面的会议,开发人员在会上共享他们的屏幕,并引导队友了解正在进行的修改内容 4.4.1.3. 是启发想法和让你的团队适应代码修改的好方法 5.1.2.1. 如果紧急度不明确,请询问提交者 5.4.4.1. SQL注入攻击、敏感数据泄露和跨站脚本攻击的漏洞

    2024年02月05日
    浏览(50)
  • 读程序员的README笔记07_测试(下)

    2.5.2.1. 首先应该关注代码中的高风险的区域 2.5.2.2. 那些低风险或被废弃的代码并不值得测试 3.2.1.1. 如果网络出现问题,那么测试也会失败 3.5.2.1. 使用常数种子的随机数生成器的测试将总是通过或总是失败 3.7.3.1. 注入式时间戳将让你使用模拟来精确控制测试中的时间流逝

    2024年02月05日
    浏览(47)
  • 读程序员的README笔记08_依赖管理

    2.6.1.1. 版本不应该被重复使用 2.6.1.2. 永远不要在现有版本下重新发布更改的代码 2.6.2.1. 版本应该帮助人们和工具对版本的优先顺序进行推断 2.6.3.1. 版本信息区分了预先发布的代码和已发布的代码,将构建流水号与构件相关联,并设置了稳定性和兼容性的合理预期 6.2.5.1

    2024年02月05日
    浏览(48)
  • 读程序员的README笔记04_防御式编程

    1.2.1.1. 切记让你的代码安全而有弹性 1.2.1.2. 编写拥有良好防御性的代码是一种对那些运行你的代码的人(包括你自己!)富有同情心的表现 1.2.1.3. 防御性的代码较少发生故障,就算它发生故障,也更有可能恢复 1.2.1.4. 安全的代码利用编译时的校验来避免运行时的故障,使

    2024年02月05日
    浏览(56)
  • 读程序员的README笔记01_学习如何学习

    6.3.2.1. 错误是不可避免的。成为一名软件工程师的路途艰辛,我们有时会失败 6.5.4.1. 代码从不说谎。注释有时却会。 6.5.4.1.1. Code never lies. Comments sometimes do 6.5.4.1.2. 去读源代码,因为它并不总是与设计文档相吻合 6.5.4.1.3. 不要只读你自己的代码库,还要去阅读高质量的开

    2024年02月05日
    浏览(51)
  • 读程序员的README笔记14_技术设计流程(下)

    1.4.2.1. 该项目将需要至少一个月的工程时间 1.4.2.2. 变更将对软件的扩展和维护产生长期的影响 1.4.2.3. 变更将显著影响其他团队 1.5.2.1. 设计文档是一种工具,可以帮助你思考、获得反馈、让你的团队了解情况、培养新的工程师,并推动项目规划 1.5.5.1. 阅读大量的设计文档

    2024年02月04日
    浏览(40)
  • 读程序员的README笔记18_职业生涯规划

    3.1.5.1. 他们的工作职责之一是管理他们的团队,而管理的一部分就是对你投入时间 3.1.5.2. 对管理者而言,反复取消一对一面谈可以是一个有价值的信号 3.3.2.1. 每个目标都附有3到5个关键结果,它们是标志着目标达成的具体指标 3.3.2.2. 不要把关键结果变成待办事项清单 3.

    2024年02月04日
    浏览(50)
  • 读程序员的README笔记05_日志、监控与配置

    6.1.1.1. 测量的是某个事件发生的次数 6.1.1.2. 通过使用计数器获得缓存命中数和请求总数,你就可以计算出缓存命中率 6.1.2.1. 一个基于时间点的测量值 6.1.2.2. 既可以上升又可以下降 6.1.3.1. 根据事件的大小幅度分成不同的范围 6.1.3.2. 每一个范围都会有一个计数器,每当某

    2024年02月05日
    浏览(51)
  • 读程序员的README笔记13_技术设计流程(上)

    3.4.1.1. 外界干扰是深度工作的“杀手” 3.4.1.2. 避免所有的交流方式 3.4.1.2.1. 关闭聊天 3.4.1.2.2. 关闭电子邮件 3.4.1.2.3. 禁用电话通知 3.4.1.2.4. 换个地方坐 3.4.2.1. 有形产出是一份设计文档 4.2.3.1. 如果有一个以上的问题,询问哪些问题是最优先的 4.3.7.1. 注意与外人交流时不

    2024年02月04日
    浏览(67)
  • 读程序员的README笔记17_构建可演进的架构(下)

    1.3.3.1. 开发人员可以只专注于和自己相关的字段,因为它们会继承其他字段的默认值 1.3.3.2. 默认值可使大型API在感觉上很小巧 1.4.1.1. OpenAPI通常用于RESTful服务 1.4.1.2. non-REST服务则使用Protocol Buffers、Thrift或类似的接口定义语言(interface definition language,IDL) 1.4.1.3. 接口定义工

    2024年02月04日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包