他教全世界程序员怎么写好代码,而且将所有答案写在这本书里

如果你已经写了好几年代码,你写的软件也已经稳定运行了很久,你甚至知道有多少用户在使用你的系统,包括你的女友、家人和同学。让系统成功部署和运转能给我们这些程序员带来满足感、成就感,但很难持续太久。

艰难编程一整天以后,当你回到家里时,你是会:

对着镜子里的自己说:“今天干得真棒!”

还是会觉得自己只是流水线中的“码农”,深陷低水准工作的泥潭/p>

你是否开始信奉,只有降低质量才能赶上进度,而且这已经成为团队的潜规则;你们只差喊出这句话:生产力与质量就是成反比的!!!

这还不是最糟糕的。焦虑、困惑、内卷将会接踵而至——35岁职业分水岭迫在眉睫,会很多时髦语言、框架的新同事不断涌现,最近你总在考虑:到底是该要求老板提升你做leader,还是出去创业试试/p>

其实,你还有一个选择,从码农走向匠师!

因为,匠师有自己的骄傲,可以用骄傲打败焦虑、赶走内卷、跨越年龄!而让一个编码匠师骄傲的,永远只有一件事,绝不是写出什么系统,而是自己写系统的方式。

▊ 你最终为谁编程——老板户,是 会!

21世纪,为了生存,我们的 会开始由技术主导,这是人类历史上首次出现的状况。

软件入侵了现代生活的方方面面,从早晨用手机刷开地铁闸机到中午扫码付午餐钱,从在淘宝买衣服到用滴滴打车。随着软件不断深入铁路和飞机等基础设施、银行等商业机构,甚至深入政府,发生“灾难”的风险在不断增加。

这意味着我们这些程序员的失误有可能导致:

一次登录失败

一笔资金丢失

一次刹车失效

……

这不是危言耸听,波音737 MAX 8的一个Bug让我们这个 会损失了两架1.2亿美元的飞机,夺去了338条鲜活的生命!

在此背景下,与其期待漫威英雄拯救世界,不如祈祷这些系统背后的程序员都能真正承担责任。

从最开始的Clean Code关注“好代码”,到现在《匠艺整洁之道》关注“好匠艺”, 鲍勃大叔十年磨一剑,给我们带来了软件开发领域几十年的匠艺追求。

随着对软件职业做出严格定义的难度正在增加。我们也许可以根据所创建的软件的关注重点,采用几种不同的路径。但是,要把关键软件和非关键软件区分开来可能并不那么容易。

依靠领袖的日子已一去不返。每名程序员都各自做自己眼中正确的事已经不够。纪律、标准和对职业操守的要求将会出现。今天摆在我们面前的问题是,让程序员自己来定义这些纪律、标准和职业操守,还是让那些不了解我们的人强加给我们。

唯有改变我们这些程序员的工作方式,提高纪律性、职业操守和标准,才能支撑起纸牌屋,防止它倒塌。

……

鲍勃大叔用净心实事求是,正本清源,全面剖析了尚处于青春期的技术行业,每一位从业者都能从中得到表象背后的“行业机密”。

鲍勃大叔用真心小处见大、以微知著,全面展现自己几十年上下求索得出的从个体到集体的匠艺思考,打破技术人头上的“紧箍咒”,让技术人为自己的工作感到骄傲和自豪。

鲍勃大叔用热心身体力行、谆谆教诲,把自己几十年来在代码编写、敏捷开发方面经验,“抽象”为程序员要学会的纪律、标准和职业操守,并毫无保留地倾囊相授,指导程序员写出优秀的代码、创建出色的系统,成为真正的“匠师”!!!

鲍勃大叔用好奇心“码”耕不辍,不断战斗,阅读本书,你将从最优秀、最有经验、最有战斗力的人身上找到改进自己的方法,找回编码的激情,激起提升手艺的欲望,获得无尽的精力,无所畏惧地追求完美。

唯有不停磨炼匠艺,纠正“35岁转管理”这样的行业浮躁心态,才能走向真正的工匠精神之路。

本书结构

本书分为三个部分:纪律、标准、职业操守。
纪律是最基础的一层。这个部分关注实用性、技术性和规范性。阅读和理解这个部分,各类程序员都能从中受益。这部分内容配了一些视频,以展示测试驱动开发节奏和重构纪律。文本部分即旨在展示这种节奏,但还是视频比较有效。

职业操守在最高层。这部分阐述了编程职业的道德背景。它以誓言或一套承诺的形式体现,其中包括大量关于历史与哲学的话题。程序员和管理者都应该阅读这部分内容。

本书是为程序员和管程序员的人写的。但在另一种意义上,本书是为整个人类 会写的。因为正是我们这些程序员恰好处于这个 会的支点上。

译者简介

中外匠师如此评价

感谢鲍勃大叔,也感谢本书的译者韩磊,感谢你们给中国的软件工程师带来这么好的一本书!

向每一个工程师、每一个技术管理者郑重推荐《匠艺整洁之道》,希望你能有收获,也和每一个致力于提升研发效率与质量的技术人,一起共勉!

鲍勃大叔给我们带来了软件开发领域几十年的匠艺追求,这份净心,对于尚处于青春期的技术行业,是每一位从业者必要的修炼。只有不停磨炼匠艺,纠正“35岁转管理”这样的行业浮躁心态,从而走向真正的工匠精神之路。

——肖然 Thoughtworks全球数字化转型专家、中国敏捷教练企业联盟秘书长

这本新书一如既往地精彩,它通俗易懂又发人深省,如果你是一位对于写出好的程序有更高要求的程序员:不仅仅当成一个朝九晚五的工作,而是一门手艺,甚至一门艺术,你会喜欢这本书的。

——黄东旭 PingCAP联合创始人兼CTO

我们这一代工程师是幸福的,因为有鲍勃大叔这样的大师一直引领着我们,如果你现在正在匠师之路上,那就赶紧打开《匠艺整洁之道》吧!

——孙玄 奈学科技创始人兼CEO、58集团前技术委员会主席

如之前的Clean系列图书一样,当我遇到困惑的时候,也会再翻出来寻找一些前人的启发。如果你跟我一样,打算在软件行业奋斗一生,那么这样的书,推荐你也拥有一本。

它是一本类似于24条军规的书,重申现代世界实际构建者—也就是我们,我们这些工程师应该遵守的职业纪律,它帮助我们面对这份职业的责任,同时帮助我们提高作为工程师或者管理者的上限。

读读此书吧,软件工程已经不仅仅是编码就足够了,而它将会帮到你。

——彭哲夫(CMGS) Garena高级软件工程师

开发者与其追逐技术热点,不如修炼内功、提升技艺水平。而决定技艺水平下限的正是纪律、标准、原则和职业操守这些软实力。鲍勃大叔的新书《匠艺整洁之道》是这样一本好书,帮助开发者提高能力基线和专业精神,产出健壮、高容错和高效率的软件,更好地服务 会,为 会创造更多价值。

——丁宇 阿里云云原生应用平台总经理

我们日常对着需求文档来完成项目,也许并不困难,但真正难的是软件设计、代码细节,以及写出充满工程理念、可靠、健壮的应用。工作10余年的我,现在仍然会对软件工程感兴趣,我坚信它是提升整体工业水平的基础。让我们再次畅快感受这本书吧!

——毛剑 Bilibili基础架构负责人

写代码是件容易的事情,但是写出好代码却是件非常难的事情,它需要编写者具备大量的实践经验,以及得到良好的指导。鲍勃大叔把自己几十年的经验“抽象”为程序员要学会的编程纪律、标准和职业操守,指导程序员成为真正的“匠人”—写出优秀的代码、创建出色的系统,更重要的是,为自己的工作感到骄傲和自豪!

这本书深入浅出剖析测试驱动开发(TDD)、敏捷技术应用实践、协同编程、架构至简设计等技术整洁方法论,让读者能真正掌握架构整洁设计的哲学本质,从而在面向不同业务场景时,都能够给出优雅的架构整洁解决方案,使得企业真正降本增效。本书是架构整洁设计实践类好书,特推荐之。

——孙玄 奈学科技创始人兼CEO、58集团前技术委员会主席

从《代码整洁之道》到《匠艺整洁之道》,从Coding到TDD,鲍勃大叔一直身体力行地用最简洁的文字、最通俗的例子,把他在代码编写、敏捷开发方面的经验倾囊相授。

如果你有为自己团队建立舒适而高效工作流的愿景,那么本书不容错过。

——王译锋 稿定科技前端工程师、《JavaScript二十年》译者

《匠艺整洁之道》教会写代码的程序员们如何整体思考技术,鲍勃大叔像一位谆谆教诲的老师,告诉我们如何思考代码之外的东西,相信你一定能从本书中受益匪浅。

鲍勃文风上佳。书稿易于阅读,概念解释得非常详尽,即便是新入行的程序员也能读懂。鲍勃也会时不时幽上一默,让你稍做放松。本书的真正价值在于呼唤变革,呼唤更好的东西……呼唤程序员的专业素养……以及对软件无处不在的认识。

——海瑟·坎瑟(Heather Kanser)

作为软件开发者,我们必须不断为雇主、客户、同事和未来解决重要问题。让软件可用尽管困难,但远未足够,并不能令你成为成功匠人。软件能运行,只代表你通过了能力测试。你也许具备成为匠人的能力,但还要掌握更多东西。在本书中,鲍勃阐明了能力测试之外的技能和责任,展示了严肃软件匠人该有的样子。

回顾我入行之时,匠艺和职业操守的概念还没在软件领域出现,人家只是告诉你要做个有诚信的好人。如今,这些概念已然成为专业开发者能习得的最重要能力,甚至比编码本身更为重要。我很高兴地看到鲍勃再领风气之先,迫不及待想听他阐述观点,并将他的观点应用于实践。

——丹尼尔·马克汉姆(Daniel Markham) Bedford Technology公司负责人

译者序

2021年2月,老朋友张春雨(侠少)在微博上给我发私信,问我有没有兴趣翻译Robert C. Martin(鲍勃大叔)的新书。我和侠少平时联系不多,但常常收到他安排寄来的赠书。赠书收得多了,总觉得欠着人情,想着该用什么方式还一还才好。

这个“什么方式”,也许是几顿酒饭、几杯咖啡,但绝对不是翻译一本书。算起来,截至2020年,我已经有十年没做图书翻译工作了。去年翻译了一本小书,眼睛和腰椎、颈椎都有点儿不舒服。一定赔本但不一定赚吆喝的事,还是不干为好。

侠少对我了解甚深,他只说了一句话,就成功说服我接下任务。他说:“这是(鲍勃)大叔的封山作。第一本和最后一本,有始有终,一段佳话!”这一下子就勾起我翻译《代码整洁之道》(Clean Code)的回忆。当时我在北京工作,个人能力提升和职业发展都遇到瓶颈,同时还需要考虑家庭常驻地问题。《代码整洁之道》不但带给我关于整洁代码的知识,还令我悟到许多做人做事的道理。对我来说,那是一本优秀的技术书,更是一本关于价值观的好书。

《代码整洁之道》中文版面世十一年以来,数次修订和重印,成为很多程序员朋友接受并推崇的读本。其间,鲍勃大叔的其他数本著作也陆续出了中文版。这些著作从程序员素养、架构设计、敏捷方法等方面入手,全面阐述“整洁”概念在软件开发过程中的重要意义与实践手段,建立了一套相对自足的理论和方法体系,大概能算是Clean系列的“武功秘籍”了吧。

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

回顾Clean系列图书的主题,可以很清楚地看到从“关注技术”到“关注人”的发展脉络。就像是老拳师写拳谱,第一本都是讲招式。过了一阵子,老拳师发现徒弟们招式练得挺熟,但内功没跟上,“练拳不练功,到老一场空”,于是赶紧再写一本讲内功的。又过了一阵子,老拳师发现徒弟们一上擂台就不懂如何审时度势选择攻击方案,又赶紧写一本讲架构的。如此这般勿勿十年,老拳师突然发现,拳谱传来传去,很多人练得似是而非,拳打歪了,心术也不见得很正。

如果你是这位老拳师,面对如此现状,会是什么心情想,大概也会像鲍勃大叔一般,既悲观又不甘吧。就我这两年参与审校或审阅的几本敏捷图书来看,恐怕既悲观又不甘的不只是鲍勃大叔一个人。敏捷软件开发成为主流之后,同时也成了有些人借以牟利和乱来的最佳“幌子”。当所有人都在谈敏捷,而吹捧与批评都没谈到点子上时,正本清源就成了当务之急。所以,最近两年面世的敏捷书,不约而同集中在一个主题:正本清源。

敏捷既是手段,也是目的。正如鲍勃大叔在本书中一再强调的:软件最根本的特点就是“柔软”。好软件不但具备能够与时俱进修改和扩展的灵活性,而且更具备以较低成本修改和扩展的可能性。软件本身如果敏捷,那么实现和修改软件的方式必须也必然够敏捷。

可惜,就像软件有交付截止日一样,译稿也不能一直拖下去。我清楚地知道,译稿还有很多问题。稿子交出去了,这些问题留待读者们发现和批评。如果有机会出修订版,你们的批评和建议必会被纳入,这也算是一种协同写作了吧。

韩磊

2021年10月28日

推荐序

2003年春,在我公司各个技术团队引入Scrum后不久,我见到了鲍勃大叔。那时我还是个新鲜出炉、心怀疑虑的ScrumMaster。

鲍勃教我们使用TDD和一个叫作FitNesse的小工具。我问自己:“为什么总要写注定先面临失败的测试试不该排在编码之后吗就像团队中许多其他成员一样,我常常只能挠着头离开。

但是,直至现在,鲍勃大叔对编程匠艺的热情于我仍然记忆犹新。他是个直言不讳的人。记得有一天,他看了我们的缺陷列表后,问我们到底为什么会对并不属于个人的软件系统做出如此糟糕的决定——“这些系统是公司资产,不是你们的个人资产。”他的激情鼓舞了我们。

一年半之后,我们实现了百分之八十的自动测试覆盖率,得到了整洁又直观的代码库,客户和团队成员也都满意。之后,我们迅速修正了对“完成”的定义,以之为盾,挡住了潜伏在代码中的小魔怪。

本质上,我们学会了如何避免自残。相处日长,我们对鲍勃心生暖意。对我们而言,他如同亲叔父——温暖、坚定、勇敢,一直帮助我们学会站直并做正确的事。有些孩子的“鲍勃大叔”教他们骑单车或钓鱼,而我们这位鲍勃大叔则教我们坚守正直—直至今日,在我的职业生涯中,有能力和愿望,满怀勇气与好奇心地去面对任何环境,仍是鲍勃大叔教会我的最佳课程。

最好的团队并不真需要关心指标。他们自有目标、纪律、尊严与责任感。指标自然而然得到满足。《匠艺整洁之道》将这些课程与原则放到具体代码范例与经验讲述中,展示了“为满足期限而写代码”与“真正搭建未来能用上的系统”之间的区别。

《匠艺整洁之道》提醒我们永不能满足于现状,要无畏地活着。这本书就像一位老友,会提醒你什么重要、什么有效、什么无效、什么导致风险、什么降低风险。这些经验历久弥新。你可能会发现自己已经在实践其中的一些技巧,我敢说你会发现另外一些新东西,或者至少是你曾因期限压力或其他职业生涯中的压力而放弃了的东西。

如果你是开发领域的新手——无论是商业方面还是技术方面的—你将从最优秀的人那里学到东西。即使是最有经验和战斗力的人也会找到改进自己的方法。也许这本书会帮助你找回激情,重新激起你提升手艺的欲望,或者让你重新投入精力,无惧障碍追求完美。

软件开发者统治着世界。鲍勃大叔在这里重申了这些“掌握权柄”之人该遵守的职业纪律。他延续了《代码整洁之道》未完的话题。软件开发人员实际上是在编写人类的规则,所以鲍勃大叔提醒我们,必须严守道德准则,有责任知道代码的作用,人们如何使用它,以及它会在什么地方出错。软件出错的代价是人的生计——甚至生命。软件影响着我们的思维方式,影响着我们的决定。作为人工智能和预测分析的结果,软件同样影响着 会和人群的行为。因此,我们必须负起责任,以极大的谨慎和同情心行事—人们的健康和福祉取决于此。鲍勃大叔帮助我们面对这种责任,并成为 会所期望和需要的专业人士。

在写这篇序的时候,《敏捷宣言》即将迎来它的20岁生日。这本书是回归根本的完美机会:它及时而谦逊地提醒我们:程序化世界越来越复杂。为了人类的遗产,也为了我们自己,应该建立和维护职业操守。读读《匠艺整洁之道》吧,让这些原则渗入你的内心,实践和改进它们,辅导他人。把这本书放在手边书架上。当你带着好奇心和勇气行走于世间,让这本书成为你的老朋友、你的鲍勃大叔和你的导师吧。

斯塔西·海格纳·韦斯卡迪(Stacia Heimgartner Viscardi)

CST和敏捷教练

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月8日
下一篇 2022年4月8日

相关推荐