《代码之道》合理使用度量和一名卓越工程师所具有的特征摘录
<<代码之道>> 第9章 成为管理者,而不是邪恶的化身
那是不是所有的度量都没用呢?不是,只要度量用于跟踪团队和产品的进度,以便达到明确而公认的目标(比如绩效、回归率、发现和修复率
、解决客户问题所用的天数等),那它们就很有价值。度量有助于推动团队前进,并且赋予成就客观的内涵。然而,它们绝对不可以代替出色
的判断。
我后来对建设性的度量有了更多的认识。你应该用它们度量令人想要的结果——在理想情况下,应该是基于团队的结果。结果关注在“什么”
,而不是“如何”,这样就给大家的改进留出了空间。团队度量驱动的是共享的目标,而不是带有竞争性的病态。“代码行数”不大可能是令
人想要的结果,而“从开始到结束,使用更少的时间开发出高质量的功能”才是令人想要的结果,而且这个结果取决于整个团队,而不是个人
。
度量开发者的价值的关键是,多想一想开发团队,而不是个人。不同的人给团队带来不同的力量。在判定各个开发者的贡献时,要考虑到他们
在团队里扮演的角色。最好的开发者往往不是那些代码写得最好或最快的人。
你不希望整个团队都是主管或都是代码工人,也不希望整个团队都是架构师。每个团队都需要有一个才能上的平衡,这样才会有最好的效力和
生产力。
卓越开发者的素质
不过,在“度量开发者”方面还有很多的边缘问题。下面,我将列出我认为的、卓越开发者具备的一些明显特征:
-他们知道他们正在做什么。当你问卓越开发者,为什么那里有特定的某行代码或某个变量,他们都能说出理由。有时候他们给的理由不那么
美妙(“那行代码是我从其他地方抄过来的,它使用了那个结构”),但他们的理由永远不会是,“哈,我不知道,它看起来能够工作。”
-他们不相信魔法。这是上一条的必然结果,既然他们知道自己正在做什么。对于黑盒的应用程序编程接口、组件或算法,卓越开发者会感觉
不舒服。他们想要知道那些代码是怎样工作的,以免被错误的假设或“有漏洞的”抽象伤害到(比如一个字符串类,它在实现简单的字符串连
接时,隐藏了内存分配故障或所需的O(n2)运行时间)。
-他们了解客户和业务。卓越开发者知道事情的实质,他们能够分出轻重缓急并且做出恰当的权衡。
-他们把客户和团队放在优先于自己的位置。卓越开发者不会亵渎任何任务,他们认为没有哪个客户是不重要的。
-他们有不妥协的精神和道德规范。尽管个人喜好可能会改变,卓越开发者会一如既往地关注他们如何完成工作,以及怎样去跟其他人互动。
不管是他们选择的算法还是他们写的e-mail,他们都会对自己高标准、严要求,始终不会动摇他们的核心价值观。
-他们有杰出的人际沟通技能。尽管没有很多的开发者能够主持好游戏或演出,卓越开发者能够很好地跟别人相处,尊重别人,并且跟人进行
清晰、有效、恰当的沟通。他们不选择欺凌或胁迫(尽管他们可以那么做),而选择合作。
-他们有一个宽广的支持网络。卓越开发者能够认识到别人身上的卓越之处,并且他们相互欣赏。他们能快速发展起一个相互支持的联系网络
,使得他们比单一个体要有效力得多。
关于卓越开发者的概括性特征,我还能列出其他更多的方面:关注质量、指导别人、表现出非凡的设计技能等等。
这些形容卓越工程师的特征中,没有哪个是可以被很容易地度量的。
在迫不得已的时候,作为管理者的你必须评判你的团队,你要尽可能地做到公平,并且考虑到他们每一个人所扮演的角色。从其他团队拿些例
子过来参考,会有助于你观察你自己团队的开发者;这也是为什么说标度会议如此有价值、有启发性、并且承受它的痛苦也值得的原因了。
但是请记住,没有哪个标度或等级可以代表一个人。人实在是太复杂了,即使是最客观的度量也会被所用的透视法所扭曲。作为高等动物的人
类,我们要去了解和尊重,这是完全释放人类潜能的关键!