首页 > 其他分享 >代码整洁之道--读书笔记(3)

代码整洁之道--读书笔记(3)

时间:2024-09-06 22:46:34浏览次数:7  
标签:承诺 读书笔记 -- 代码 自己 完成 如果 bug 整洁

代码整洁之道

image-20240904225436374

简介:

本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。

本书适合所有程序员阅读,也可供所有想成为具备职业素养的职场人士参考。

第三章:说“是”

img

如果你能够一直信守承诺,大家会以为你“是一名严谨负责的开发人员”。

在我们这行中,这也是最有价值的评价。

3.1 承诺用语

口头上说;心里认真;付诸行动;

这也就是承诺的三个步骤:

(1)口头上说自己将会去做。

(2)心里认真对待做出的承诺。

(3)真正付诸行动。

3.1.1 识别“缺乏承诺”的征兆

我们有竭力逃避承担责任的倾向。

注意以下三种类型的词,当他们出现时候你就要警觉自己不必把此承诺太当真。

  • 需要/应当。“我们要把这活做完。”“我需要减肥。”“有人应当负责去推动这件事。”
  • 希望/但愿。希望明天我能完成这个任务。”“希望改天我们能再见面。”“但愿我有时间做这件事。”“但愿电脑能快点。”
  • 让我们(而不是让我)。让我们回头再见。”“让我们把这事做完。”

3.1.2 真正的承诺听起来是怎样的?

寻找相似的句子:我将........之前............

你对自己将会做某件事做了清晰的事实陈述,而且还明确说明了完成期限。

那不是指别人,而是说的自己。你谈的是自己会去做的一项行动,而且,你不是可能去做,或是可能做到,而是必须做到。

到了所到时间之后,面临两个结果,要么完成,要么没完成。

如果你没做到,他人就能摆出你先前的承诺让你难堪。由于失信于人,你会感觉很糟糕。告诉别人自己没能兑现承诺时,你会感到十分难堪(如果那人曾当面听你做出承诺的话)。

作者在这里还说明没能信守自己的承诺的潜在想法,并且给出对应的应对方法。

  1. 之所以没成功,是因为我寄希望于某某去做这件事。

    原因:你只能承诺自己能完全掌控的事。比如,如果你的目标是完成一个还依赖于另一团队的模块,那么你无法承诺自己既能够完成这个模块,还能实现该模块与其他团队所负责模块间的无缝集成。

    应对方法:如果最终目标依赖于他人,那么你就应该采取些具体行动,接近最终目标。

  2. 之所以没成功,是因为我不太确信是否真能完成得了。

    应对方法:即使目标无法完成,你仍能全力前进,离目标更近些。

    例如:

    • 把这25个bug全部过一遍,努力重现这些bug。

    • 和发现bug的QA一起坐下来,看下bug重现时的现场。

    • 用本周能支配的全部时间,尝试逐一修复bug。

  3. 之所以没成功,是因为有些时候我真的无能为力。

​ 应对方法:如果你无法兑现承诺,那么最重要的就是尽早向你的承诺对象发出预警,越快越好,越早越好。

​ 这里有一点要注意:

如果你不尽早告诉他人可能的问题,就错失了让他们帮助你达成目标、兑现承诺的机会。

3.2 学习如何说“是”

坚持原则

如果不写测试,他或许可以更快点完成任务。如果不做重构,不运行整套回归测试,或许也可以快点完成任务。此时,如果是专业开发人员,就不会放弃底线。

首先,这种假设本身就是错误的。即使不写测试,不做重构,省掉完整的回归测试,Peter也无法更快完成任务。多年经验告诉我们,打破这些纪律和原则,必然会拖慢进度。

其次,身为专业开发人员,Peter有责任根据标准规范自身工作。代码必须经过测试,代码必须要有对应的测试代码。要确保代码清晰整洁,而且必须确保没有影响到系统的其他部分。

如果要“加班”,就需要考虑自己的经理储备,口头上说自己会在周末搞定这些事情很容易的,但要真正花精力高质量地完成工作会困难许多。

专业人士对自己的能力极限了如指掌。他们十分清楚自己还能保持效率加班多长时间,也非常明白要付出的代价。

总结

专业人士不需要对所有请求都回答“是”。不过,他们应该努力寻找创新的方法,尽可能做到有求必应。当专业人士给出肯定回答时,他们会使用正式的承诺,以确保各方能明白无误地理解承诺的内容。

标签:承诺,读书笔记,--,代码,自己,完成,如果,bug,整洁
From: https://www.cnblogs.com/TonyCode/p/18401189

相关文章

  • Speaking-Asking for or giving directions
    1)onthesecondfloor2)taketheelevatorontheelevator 3)whenyougetoffthe elevator,turnleft4)attheendofthecorridorontherightside5)turnrightatthecornerandgostraightahead.It'sonyourright,nexttothebakeryahead......
  • Maven使用指南的笔记
    文档索引Mavenin5Minutes篇幅很短,快速上手,不求甚解。执行如下命令,创建项目的基础配置。mvnarchetype:generate-DgroupId=com.mycompany.app-DartifactId=my-app-DarchetypeArtifactId=maven-archetype-quickstart-DarchetypeVersion=1.5-DinteractiveMode=false......
  • 编码规范
    编码规范华为的编码规范主要包括以下几个方面:命名约定:变量、函数等命名应清晰、明了,有明确含义,避免使用单个字符或容易混淆的缩写。常量命名应全部大写,单词间用下划线分隔。文件命名应遵循特定规则,如C文件以.cpp结尾,头文件以.h结尾。排版格式:使用空格进行缩进,每次缩进4个空格......
  • .Fundamentals.of.Software.Architecture.
    研究背景研究问题:本书旨在解决软件架构师在职业发展过程中面临的挑战,特别是如何从一个技术专家转变为一名能够领导团队并做出战略决策的架构师。研究难点:该问题的研究难点包括:软件架构的定义不明确,角色责任广泛且不断扩展,软件开发生态系统快速变化,以及许多过时的技术和解......
  • 软考冲冲冲
    摘要1.交代自己做了项目,自己是做什么的(一般是架构师)2.我在这个项目里面,用到了哪些与题目相关的技术3.项目很成功,客户很开心,老板很开心正文1.我现在在哪里工作,是个啥职位(100字左右,注意数据脱敏,不要透露完全真实的项目名称和个人、公司信息,比如用某某代替)2.......
  • 子集卷积 学习笔记
    如果没有交集的情况,就可以做或运算卷积考虑交集,没有交集=大小和相同依次考虑集合的大小为0,1,...,n对每种情况,构造长度为(1<<n)的集合幂级数,只对size=i赋值枚举答案中集合的大小为0,1,...,n对每个i,枚举f中的贡献是(j),g中的贡献是(i-j)让(j)和(i-j)做或运算卷积,答案一定合法......
  • 大数相加
    leetcode刷题1、大数相加给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0开头。输入:l1=[2,4,3],l2......
  • .Software.Architecture.The.Hard.Parts.
    研究背景研究问题:本文研究了现代分布式架构中的软件架构设计问题,特别是如何在没有“最佳实践”的情况下进行架构决策。作者探讨了架构量子(architecturequantum)的概念,分析了静态和动态耦合,并提出了如何进行架构分解和组件化。研究难点:该问题的研究难点包括:分布式架构的复......
  • 单点登录SSO
    单点登录(SingleSign-On,简称SSO)是一种会话和用户身份验证技术,它允许用户通过一次登录访问多个应用程序和服务。什么是单点登录?单点登录是指用户只需要在一个地方(如一个网站或一个应用程序)进行一次身份验证(通常是通过用户名和密码),就可以在不需要再次输入凭证的情况下访问多......
  • Java 线程池:参数、配置和常见问题以及案例示范
    Java线程池:参数、配置和常见问题以及案例示范线程池是提高系统性能和资源利用率的关键组件之一。通过合理配置线程池,可以有效地管理线程资源,避免系统过载,提升并发处理能力。本文将以电商交易系统为案例,详细讲解Java线程池的参数、配置、以及常见问题和解决方案以及在spr......