第一次读并没有觉得这是一本多好的书

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

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

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

听说这本书将是鲍勃大叔的封山之作,所以这本书的上市,我一定会将其收入囊中,集齐 Clean 系列。虽然无法召唤神龙,但如之前的 Clean 系列图书一样,当我遇到困惑的时候,也会再翻出来寻找一些前人的启发。如果你跟我一样,打算在软件行业奋斗一生,那么这样的书,推荐你也拥有一本。

从“关注技术”到“关注人

鲍勃大叔提出,既然现代世界运行于软件之上,软件开发者就要承担起维护世界正常运行的重大责任。这意味着软件开发者必须掌握足够多的技能,遵守足够严格的纪律,追求足够高的职业操守标准,方能达到社会对他们的期望。他提炼了前面多本著作的精髓,加以深究、凝练和升华,推出这本集大成的 Clean 系列封山之作。

回顾 Clean 系列图书的主题,可以很清楚地看到从“关注技术”到“关注人”的发展脉络。

就像是老拳师写拳谱,第一本都是讲招式。过了一阵子,老拳师发现徒弟们招式练得挺熟,但内功没跟上,“练拳不练功,到老一场空”,于是赶紧再写一本讲内功的。又过了一阵子,老拳师发现徒弟们一上擂台就不懂如何审时度势选择攻击方案,又赶紧写一本讲架构的。如此这般勿勿十年,老拳师突然发现,拳谱传来传去,很多人练得似是而非,拳打歪了,心术也不见得很正。如果你是这位老拳师,面对如此现状,会是什么心情?我想,大概也会像鲍勃大叔一般,既悲观又不甘吧。

敏捷软件开发成为主流之后,同时也成了有些人借以牟利和乱来的最佳“幌 子”。当所有人都在谈敏捷,而吹捧与批评都没谈到点子上时,正本清源就成了当务之急。所以,最近两年面世的敏捷书,不约而同集中在一个主题:正本清源。敏捷既是手段,也是目的。正如鲍勃大叔在本书中一再强调的:软件最根本的特点就是“柔软”。好软件不但具备能够与时俱进修改和扩展的灵活性,而且更具备以较低成本修改和扩展的可能性。软件本身如果敏捷,那么实现和修改软件的方式必须也必然够敏捷。

本书第Ⅰ部分和第Ⅱ部分结合多个代码示例,展示了如何利用 TDD 敏捷地写出敏捷的软件,同时阐述了验收测试、协同编程等其他敏捷手段的重要性与一般实施手段。不可避免地,作者还花费相当多篇幅讨论软件设计方案问题。我很愿意重点阅读这部分。此外,一些具体的测试策略也颇具可读性。

第Ⅲ部分看似对程序员的日常工作没什么太大帮助,但这部分值得好好阅读和思考。作者提出的程序员十条承诺(或谓“誓言”)浅白易懂,却不易遵守。能谨守这些承诺的程序员,一定是我特别愿意共事的好伙伴。

程序员誓言

为捍卫和维护计算机程序员职业的荣誉,我承诺,尽我的能力和判断力:

我不写有害的代码。

我生产的代码将永远是我最好的作品。我不会故意让那些在行为或结构上有缺陷的代码累积起来。

我将在每次发布时提供快速、确定和可重复的证据,证明代码的每个元素都能正常工作。

我将经常进行小规模的发布,不妨碍其他人的进展。

我将无畏地、毫不留情地利用一切机会改进我的创作。我绝不让它变更差。

我将尽我所能尽可能地提高自己和他人的生产力。我不会做任何降低生产力的事。

我将一直确保其他人能够补上我的位置,我也能够为其他人补位。

我将给出在数量级和精准度上都靠谱的预估。我不会做出没有把握的承诺。

如果我的程序员同事拥有足够的操守、标准、纪律和技能,就能赢得我的尊重。任何其他的属性或特征都不会成为我尊重程序员同事的因素。

我永远不会停止学习和改进我的技艺。

第一次读 “Clean” 系列,并没有觉得这是一本多好的书相关推荐

  1. [论文速读] 图像增强系列:2020 TIP 最新去雾算法(摘要、网络结构图及论文链接)

    [论文速读] 图像增强系列:2020 TIP 最新去雾算法(摘要.网络结构图及论文链接) 本博客先介绍 2020 TIP 最新去雾算法的摘要.网络结构图及论文链接,后续将陆续补充较为详细的内容. 目录 ...

  2. 带你读论文系列之计算机视觉--SENet

    带你读论文系列之计算机视觉–SENet 闲谈 总有那么瞬间思念远方的故人.八月十五中秋节,让我们放下繁忙工作,回家与老人团圆举杯共餐.这是我第一次没有在家过中秋,感觉也还行.现在节日没有什么节日气氛, ...

  3. 福利 | 一文读懂系列文章精选集发布啦!

    大数据时代已经悄然到来,越来越多的人希望学习一定的数据思维和技能来武装自己,虽然各种介绍大数据技术的文章每天都扑面而来,但纷繁又零散的知识常常让我们不知该从何入手:同时,为了感谢和回馈读者朋友对数据派 ...

  4. ye读春秋左传系列视频讲解

    ye读春秋左传系列第一部之鲁隐公篇,左传名篇解读,左传故事 1.左传这本书,春秋这个时代 2.郑伯克段于鄢 3.黄泉相见 4.周郑交恶 5.宋宣公知人 6.石碏谏宠州吁 7.东门之役 8.玩火自焚原来 ...

  5. rock带你读CornerNet-lite系列源码(二)

    文章目录 前言 CorNerNet 结构 CornerNet_saccade结构 attention机制 CornerNet_Squeeze结构 构建Groundtruth 热图 focal loss ...

  6. 带你读论文系列之计算机视觉--GoogLeNet

    带你读论文系列之计算机视觉–GoogLeNet 0 闲谈 玩起手机,看着电视,所有的计划都被抛之脑后,此时的快乐是深夜不舍睡下的愧疚.我总是想着明天怎么,而有时不知珍惜当下:总想着那些离开的朋友,而对 ...

  7. 【医学图像分割】读论文系列 1

    [医学图像分割]读论文系列 1 文章目录 [医学图像分割]读论文系列 1 Title Introduction Abstract Keyword Method Experiment Conclusio ...

  8. 我读经典系列(一)《我读先秦诸子》易中天教授讲稿的简要摘录

    我读经典系列(一)<我读先秦诸子>易中天教授讲稿链接 以下是我的一些摘录: 公元前770年到公元前221年,是中国历史的春秋战国时期,这个时期社会矛盾激化,兼并战争连年不断,整个社会礼崩乐 ...

  9. 读论文系列(二)Convolutional Neural Networks over Tree Structures for Programming Language Processing

    系列文章目录 读论文系列(一)Automated software vulnerability detection with machine learning 文章目录 系列文章目录 Keywards ...

  10. 【一起读论文系列1】基于压缩感知的语音编解码方向研究

    [一起读论文系列1]基于压缩感知的语音编解码方向研究 2109,李俊鑫,基于压缩感知的快速语音编解码方法研究 1207,李尚靖,基于压缩感知的语音数字编码技术研究 引申资料 搜索关键词:compres ...

最新文章

  1. 设计模式 之美 -- 代理模式
  2. spring data jpa从入门到精通_Spring Data JPA的简单入门
  3. Android 本地搭建Tomcat服务器供真机测试
  4. kafka配置公网IP访问
  5. C++(STL):28 ---关联式容器map用法
  6. js的client、scroll、offset详解与兼容性
  7. Android BLE(3) ---FastBle解析
  8. LeetCode刷题(45)--Remove Duplicates from Sorted List
  9. 聚焦IT系统稳定性保障服务 PerfMa笨马网络完成亿元级B轮融资
  10. ONVIFclient搜索设备获取rtsp地址开发笔记(精华篇)
  11. java common-lang_common-lang3工具类-使用手册
  12. 数据结构与算法之递归和分治思想
  13. 通信感知一体化(ISAC)概述
  14. Niushop 商品分类、规格和类型之间的关系
  15. 归纳法证明汉诺塔解析式思路
  16. mysql指定取值范围_MySQL中各种字段的取值范围(转)
  17. 李开复写给中国大学生的七封信(2/7)
  18. 网易5天python编程课_网易云课堂上自学编程?
  19. 【安卓R 源码】获取音频焦点和释放音频焦点
  20. 《Excel效率手册:早做完,不加班》

热门文章

  1. 产品沉思录精选:如何像管理金融投资组合一样来管理知识?
  2. 网络冗余备份之VRRP技术备份网关(上)
  3. java pdf证书代码_通过itext对PDF嵌入数字证书
  4. win10设置vmware 虚拟机开机自启动
  5. 三种修改windows系统MAC地址方法
  6. pgMP认证,还是再看看吧!
  7. @inherited 注解详解
  8. matlab dsolve函数构造微分方程
  9. WinRAR密码破解
  10. Oracle获取两时间的相差天数