Clean Craftsmanship译者序


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

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

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

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

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

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

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

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

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

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

中文版初稿翻译工作结束之后,我以为终于可以放松下颈椎和腰椎了。没想到,过了一段时间,侠少又发来一份英文修改稿,对初稿改动之处不在少数。还好有电子社的编辑帮我做了对照工作,将差异处一一列出。看着屏幕上的英文初稿、修改稿和修改了几遍的中文稿,我突然体会到鲍勃大叔讲解“质因数”示例时谈到的心情:对一桩事物的改进过程,就那么活生生地呈现在眼前。这个过程既痛苦又快乐。而且,如果没有其他限制,可以一遍又一遍继续做下去,永无止境。

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

韩磊 2021年10月28日

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注