解决方法

建立一些机制,定期收集关于自身绩效的相对客观的外部数据。通过尽早、经常而且高效地寻求反馈,至少你可以提高知道自己不行的概率。

有多种机制可用于获取反馈。在某种层面上,这包括使用像测试驱动开发和带有交互式解释器的动态类型语言这类技术,它们能使你的程序快速失败(fail fast)。另一种层面上,你可以通过代码复审和结对编程来获得反馈。考试和认证也可以成为有用的工具,来测定自己跟别人的相对水平,虽然大多数情况下它们测出的只是你的应试技巧而非实际技能。另外一种获取反馈的方法是向别人询问他们对你工作的看法;比如,接触一下为新工作或职位提升而面试你的人,问问他们对你的看法。即使你没得到那份工作,只要别人准确地讲出他们为什么拒绝你,你也能从中得到很多。有时,这类反馈会揭示你个性中的一些自己原本不知道的(积极或消极的)方面。

如果你没有培养出对原始数据进行处理的能力,那以上所描述的所有机制都不会有任何用处。比如说,如果你的老板做年度审查,你必须能够去芜存菁才能得到有用的反馈。批评本身不太会成为有用的反馈,因为它没有告诉你别人期待的究竟是什么。其他类型的无用反馈诸如:更多关于别人而不是关于你的反馈(比如,“做这个吧,我在你这个年纪时也在做这个。”),完全伪装的建议,或者Dave Winer称之为“停止能量”(stop energy)[1]的反馈。这通常表现为一些善意的建议,告诉你为什么你无法达到目标,建议你立即放弃而别再冒失败的风险。

那有用的反馈应该是怎样的呢?有用的反馈是这样一类数据:你可以基于它采取行动,而且它能针对某种特定行为给出多做或少做的选择。如果基于一种反馈你无法采取任何行动,那它就不是有用的反馈。或者至少它目前没用。如果环境变了,它可能突然变得有意义。记住以下建议:“如果你认为一样东西有趣,你就能学到有趣的东西。”(《Better》[更好],第225页)

了解系统思考者(systems thinker)所指出的加强型反馈(reinforcing feedback)和平衡型反馈(balancing feedback)之间的区别也很重要。加强型反馈鼓励你多做某事,平衡型反馈鼓励你少做某事。结合这两种反馈,一套系统可以通过大量的小规模调整维持在一个相对稳定的状态。成功的学徒都能学会创造条件让自己快速地、经常地收到关于某种活动需要多做或少做的数据反馈。通常,这意味着学会交流思想,学会聆听而不打断别人。

你需要练成不去维护自己当前知识水平而密切关注所有反馈的功力,在这方面该模式与“白色腰带”有所重叠。两种模式都强调了一种思想:学徒应该努力让自己“更可教”,从而潜在的“教师池”可以越来越大。

Patrick研究发现了不去获取反馈的后果

当我最终开始为主项目编写代码的时候,我实际上没有对Oracle框架以及别人设计的各种模块的工作方式有很好的理解。我只好把另一团队中一位资深工程师编写的代码用作我编码的模式基础,因为我们组的资深工程师们只给我很少的反馈。一段时间后,我发现自己实现功能的方法并不是开发那种应用的首选方法,于是我去找那位写之前代码的工程师,问他事情为什么会这样。我很幸运,那时我们还处在开发过程的“研究”阶段,所以我写的代码可以修正。

我遇到的最困难的事情是:当你正在犯错误时,愿意告诉你的人并不多;因此,成功的一半就是努力找到一个能尽快告诉你的人。回头想想,我觉得一个学徒不应该过早地致力于不犯错误,而应该尽早找出如何确定错误的办法。一旦学徒能确定他们的错误,从错误中学习就容易得多了。

——Patrick Kua,电子邮件

[1]"What is Stop Energy?"(停止能量是什么),参见:http://radio.weblogs.com/0107584/stories/2002/05/05/stopEnergyByDaveWiner.html。