代码的艺术:用工程思维驱动软件开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

推荐序七

我和章老师相识已有二十多年,我们也早过了软件行业“35岁危机”的年龄。人到中年,会不时听到朋友们聊起“年龄危机”这个话题。然而,也有一些朋友不仅没有“年龄危机”的感觉,反而路还越走越宽。为什么他们没有普遍存在的焦虑感呢?我尝试从“技艺人”的角度来说说我的理解。

汉娜·阿伦特在《人的境况》中将人类的活动分为劳动(Labour)、工作(Work)和行动(Action)。姑且不论这种分类是否合理,单就软件开发活动而言,劳动和工作的这种区别就很具有讨论的意义。

阿伦特认为,“劳动”的目的是维持生命,其成果是消耗品,因此“劳动”必须是周而复始的;而“工作”的目的是建立世界,其成果是可存续的,因此“工作”是一劳永逸的。从事“工作”的人,阿伦特称之为“技艺人”。

日复一日的编码、改BUG、开会、反复修改方案……没有明确的开端,也没有明确的结束—这些画面就像卓别林的电影《摩登时代》里描绘的那样,劳动被异化,劳动者成为了实施手段和生产工具。这种不可控的状态,让人失去了自由。这种活动,就是阿伦特所定义的“劳动”。

“技艺人”做事则完全不同:“技艺人”的目标是做成一件完整的作品,他清楚地知道成果是什么样的,知道在使用正确方法的前提下,能在确定的时间得到确定的成果;“技艺人”在工作过程中有着清晰的阶段性目标和明确的反馈,能感受到过程赋予的自信与快乐。换言之,“技艺人”的工作能获得确定性的成功。经过数百万年的进化,人类已经具备了将事情“做成”的本能,因此“技艺人”的工作能带来成功的喜悦,获得心灵的自由。

能将软件“做成”的工程师,就是软件行业的“技艺人”。他们采用系统化和科学化的方法,不断提升研发效率,通过高效、持续的交付高质量软件来向用户提供价值。

“技艺人”不存在软件行业里所谓的“35岁危机”。

在本书中,章老师将软件工程能力作为“技艺人”的核心能力,在代码、文档和项目管理三个方面进行了细致全面的阐述。本书书名中虽含有“艺术”两个字,但章老师将“艺术”变成了可以习得的能力。软件工程师的“意识”比“知识”更重要,但“意识”总有些说不清、道不明的感觉(这也是人们认为编程是一门艺术的原因之一)。我过去认为“意识”很难培养,“道可道,非常道”是理所当然。但当我读完本书初稿,看到“艺术”竟然能被一步步习得,不禁对章老师在软件工程和教学方面的功力心悦诚服。

读完本书,我作为从业“老手”,很是汗颜。按照本书描述的工程能力,对于我过去的工作,绝大多数都要算是“失败”的项目或产品。像我这种吃过苦、踩过“坑”的人,很容易和章老师产生共鸣,看到本书会如获至宝。对于技术团队管理者来说,我认为本书可以用于团队能力评估、培训,也能用于总结SOP、最佳实践。对于“老手”“老团队”而言,他们最好将本书放在手边,随时翻阅,以做“吾日三省吾身”之用。

对于踩“坑”不多的“新手”而言,在读本书的过程中,他们也许很难有“老手”那种“悔不当初”的深刻感受,但恰恰由于“新手”还没有养成坏习惯,或者坏习惯还不够根深蒂固,所以用心理解、认真实践,相信很快就能通过学习本书提升软件工程能力。一般而言,我们是按照知、行、信的顺序学习知识和技能的。但在阅读本书时,我建议将顺序稍作调整,先“信”,然后“知”和“行”。正如前面所说,从某种程度上说,开发软件是一门“艺术”,以“意识”为先。当你还没有足够的历练时,不妨敞开心扉,先“信”,之后就能够更积极地去知、去行。

读完本书,我对章老师说:“我所在的这家公司团队要是早十年看了这本书,并去实践,至少能多挣一个亿。”虽然像是一句玩笑话,但我认为本书确有这样的价值。

“种一棵树最好的时间是十年前,其次是现在。”阅读本书,也是如此。

戚文敏
北京海华鑫安生物技术有限责任公司产品总监