解决方法

技能建立在牢固的关系之上。相对于增加个人利益,要更重视向客户交付价值。

作为技师,你的首要工作是构建能满足他人需要的东西,而不是沉迷于艺术展现。毕竟,世上不该有挨饿的技师。正如我们的朋友Laurent Bossavit所说:“作为技师,挨饿是一种失败;技师应该有能力用自己的技艺谋生。”[1]工作中你需要全力以赴,将客户的利益置于展现自身技能或充实履历的愿望之上,同时维持软件社区中形成的最低能力标准。“行走漫漫长路”意味着你必须平衡这些相互矛盾的需要。如果你挨饿了,因为你太像一个艺术家,你创造的东西太美以致在现实中无法交付,那你就是离开了技艺。如果你完成漂亮工作的愿望迫使你离开专业的软件开发,离开为真实的人们制造有用工具的活动,那你就是离开了技艺。

我们为客户构建的东西“可以”是美的,但“必须”是有用的。由这一模式所构筑的成熟过程,其中的一部分就是培养在必要时牺牲美丽来换取效用的能力。

沉溺于制造漂亮但无用的物件不是技术。相比一个基于100万行代码、推动了计算机科学前沿,但却不能玩的游戏程序,技师们更看重只有50行代码,但能博人一笑的游戏。

技重于艺的另一方面是:客户需要你产出令人满意的质量,即使你不喜欢这点。技师不会等到灵感扣动心弦时才交付让客户满意的产品。这既有积极的一面,也有消极的一面。一方面,软件技师被隔离在田园般的艺术领地之外;在领地里面,会有人付她工钱让她制造自己喜欢的东西。另一方面,因为制造并使用直接提供价值的软件,她和客户都感到满足。

Ken谈工艺技术

工艺的磨炼在于为真人解决实际问题,而不是只为自己踌躇满志。

——Ken Auer,电子邮件

这一模式并非告诉大家只做一时便利的事情。它也包含了这样的思想:一件有用的工艺品至少能表现出最低程度的质量。使用这一模式时,你必须在两件事上取得平衡,一是客户期望提供针对问题的直接解决方案,二是你成为技师总要有个内在标准。要做到即便处于压力之下也能坚持这些标准,你需要培养一种观念:功用和美好并不对立,而是相辅相成。一款软件越有用,软件拥有高质量就越重要。但质量需要时间来保证。你必须不断地在美好和功用之间折中,从而向着适当的质量级别前进。有时你会做出错误的折中,而将系统推翻重写来修正问题的方式不见得符合客户的最大利益。在这种情况下,你必须培养重构和修补的能力。正如Sennet所写:“正是在修正问题的过程中,我们得以理解事物的内部机制。”[2]在这里,当你的航程太偏,离艺术和便利都已经太远的时候,花点时间修正航向能让你学会一些其他方式都无法教你的软件开发经验。

[1]Laurent Bossavit,私人交流。

[2]《The Craftsman》(工匠),第199页。