当前位置:网站首页>第一次读 “Clean” 系列,并没有觉得这是一本多好的书
第一次读 “Clean” 系列,并没有觉得这是一本多好的书
2022-06-25 13:42:00 【程序猿DD_】
第一次读并没有觉得这是一本多好的书
记得第一次接触 Clean 系列,是在我读研期间。说实话,第一次读并没有觉得这是一本多好的书。但在工作一段时间之后,由于具备了一定的实践经验,再回过头来品读一番,才顿悟书中内容之妙,这大概就是成长的必经之路吧。当我们没有经历过挫折的时候,对于前辈的指点,总是很难感同身受,甚至觉得根本不对。但当我们真正遇到相同问题的时候,才发现前人的经验确实妙不可言。

作为过来人,现在我强烈推荐大家拥有一套 Clean 系列,因为这个系列不仅介绍了关于软件开发过程中的各种优秀实践案例,让我们知道整洁代码、整洁架构给我们带来的好处,以及如何保持整洁的秘诀;而且对于优秀程序员应该具备何种职业素养,并指导我们做出最佳软件的底层思维模式,更有着极佳的指导意义。也许随着社会与技术的发展,有些案例慢慢不再适用,但职业素养和思维模式会伴随我们一生,这些底层逻辑将一直指导我们未来的每一处设计与实践。

介绍了那么多过去的内容,再来谈谈Bob大叔最近的这本新书《匠艺整洁之道》。在刚看到书名的时候,一时半会儿还真猜不出这本书会讲什么,所以在拿到样章那一刻,我就直奔书中主题,一探究竟!这本书的第一章名为“匠艺”,作者认为要做好某件事的本质是需要良好的指导与大量的经验。但是,在如今的软件行业中,有很多程序员并不会做太久,所以他们缺少足够的实践体验和经验沉淀。同时,每隔 5 年程序员的数量就会翻一番,所以优秀程序员的比例会持续走低。当优秀程序员越来越少,保障软件产品的质量就会越来越难。所以,作者在接下来的章节中分别阐述了决定技艺水平的三个要素:纪律、标准和职业操守,以帮助开发者与管理者改变与提高团队的工作方式,最大限度地生产出高质量的软件产品。从这三部分的内容划分来看,这本书不仅仅适用于一线的开发者,对于管理者也是非常有帮助的。如果你对于目前的开发任务或团队的工作方式不太满意,或许可以通过这本书获取一些新的启发。

听说这本书将是鲍勃大叔的封山之作,所以这本书的上市,我一定会将其收入囊中,集齐 Clean 系列。虽然无法召唤神龙,但如之前的 Clean 系列图书一样,当我遇到困惑的时候,也会再翻出来寻找一些前人的启发。如果你跟我一样,打算在软件行业奋斗一生,那么这样的书,推荐你也拥有一本。
从“关注技术”到“关注人
鲍勃大叔提出,既然现代世界运行于软件之上,软件开发者就要承担起维护世界正常运行的重大责任。这意味着软件开发者必须掌握足够多的技能,遵守足够严格的纪律,追求足够高的职业操守标准,方能达到社会对他们的期望。他提炼了前面多本著作的精髓,加以深究、凝练和升华,推出这本集大成的 Clean 系列封山之作。
回顾 Clean 系列图书的主题,可以很清楚地看到从“关注技术”到“关注人”的发展脉络。
就像是老拳师写拳谱,第一本都是讲招式。过了一阵子,老拳师发现徒弟们招式练得挺熟,但内功没跟上,“练拳不练功,到老一场空”,于是赶紧再写一本讲内功的。又过了一阵子,老拳师发现徒弟们一上擂台就不懂如何审时度势选择攻击方案,又赶紧写一本讲架构的。如此这般勿勿十年,老拳师突然发现,拳谱传来传去,很多人练得似是而非,拳打歪了,心术也不见得很正。如果你是这位老拳师,面对如此现状,会是什么心情?我想,大概也会像鲍勃大叔一般,既悲观又不甘吧。
敏捷软件开发成为主流之后,同时也成了有些人借以牟利和乱来的最佳“幌 子”。当所有人都在谈敏捷,而吹捧与批评都没谈到点子上时,正本清源就成了当务之急。所以,最近两年面世的敏捷书,不约而同集中在一个主题:正本清源。敏捷既是手段,也是目的。正如鲍勃大叔在本书中一再强调的:软件最根本的特点就是“柔软”。好软件不但具备能够与时俱进修改和扩展的灵活性,而且更具备以较低成本修改和扩展的可能性。软件本身如果敏捷,那么实现和修改软件的方式必须也必然够敏捷。
本书第Ⅰ部分和第Ⅱ部分结合多个代码示例,展示了如何利用 TDD 敏捷地写出敏捷的软件,同时阐述了验收测试、协同编程等其他敏捷手段的重要性与一般实施手段。不可避免地,作者还花费相当多篇幅讨论软件设计方案问题。我很愿意重点阅读这部分。此外,一些具体的测试策略也颇具可读性。
第Ⅲ部分看似对程序员的日常工作没什么太大帮助,但这部分值得好好阅读和思考。作者提出的程序员十条承诺(或谓“誓言”)浅白易懂,却不易遵守。能谨守这些承诺的程序员,一定是我特别愿意共事的好伙伴。

程序员誓言
为捍卫和维护计算机程序员职业的荣誉,我承诺,尽我的能力和判断力:
我不写有害的代码。
我生产的代码将永远是我最好的作品。我不会故意让那些在行为或结构上有缺陷的代码累积起来。
我将在每次发布时提供快速、确定和可重复的证据,证明代码的每个元素都能正常工作。
我将经常进行小规模的发布,不妨碍其他人的进展。
我将无畏地、毫不留情地利用一切机会改进我的创作。我绝不让它变更差。
我将尽我所能尽可能地提高自己和他人的生产力。我不会做任何降低生产力的事。
我将一直确保其他人能够补上我的位置,我也能够为其他人补位。
我将给出在数量级和精准度上都靠谱的预估。我不会做出没有把握的承诺。
如果我的程序员同事拥有足够的操守、标准、纪律和技能,就能赢得我的尊重。任何其他的属性或特征都不会成为我尊重程序员同事的因素。
我永远不会停止学习和改进我的技艺。
扫描下方二维码
参与赠书抽奖
急需本书,直接购买
边栏推荐
- Explanation of a textbook question
- Test your earning power? What will you do in the future?
- Settings the PC must be turned on
- 如何在 2022 年为 Web 应用程序选择技术堆栈
- Classifier and cross entropy loss function
- Syntax 'trap'
- Nr-arfcn and channel grid, synchronous grid and GSCN
- Leetcode: Sword finger offer II 091 Painting house [2D DP]
- Explain the possible memory leaks caused by the handler at one time and the solutions | the developer said · dtalk
- Openstack learning notes (I)
猜你喜欢

Shell array

Rust, the best choice for programmers to start a business?

Rust, le meilleur choix pour un programmeur de démarrer une entreprise?

网络远程访问的方式使用树莓派

What are the red lines of open source that should not be trodden on?

What if the CPU temperature of Dell computer is too high

Rust,程序員創業的最佳選擇?

Win7显示屏幕亮度在哪里可以调节

Simple realization of mine sweeping

Problems encountered in debugging botu TCP connection with debugging tool
随机推荐
Some knowledge of the initial C language
Gorm-- search you don't know
Use of bind() in JS and handwritten bind()
Rust,程序员创业的最佳选择?
untiy强制刷新UI
QT memory mapping
Vscode--- format setting configuration
Rust, the best choice for programmers to start a business?
Getting started with numpy Library
Mise en place d'un Cluster kubernets avec plusieurs serveurs Cloud
Asp. Net webform exporting excel using npoi
Realization of neural networks with numpy
权益NFT开创者Hash Eagle如何重新定义NFT,用权益赋能长续价值?
Syntax 'trap'
数据库中显示error1822,error1824
多台云服务器的 Kubernetes 集群搭建
Cesium learning notes
Rust, le meilleur choix pour un programmeur de démarrer une entreprise?
Insight into heap and stack stored in new string() /string() in JS
哈希錶、哈希沖突