《高效能程序员的修炼》一你的团队能通过电梯测试吗

你的团队能通过电梯测试吗

高效能程序员的修炼
软件开发者们是真心喜爱编写代码的。但根据我的经验,他们当中很少有人可以解释清楚他们为什么在编写代码。如果你不信,你可以从你的团队里找个人来测试一下:问他在做什么;接着问他为什么要做那个;继续问下去,直到你得到一个可以让你的客户理解的原因。

你在做什么?

我在修复这个数据网格的排序问题。

你为什么要解决这个问题?

因为它在bug清单上。

它为什么在bug清单上?

因为有个测试人员把它作为一个bug报出来了。

为什么它被作为一个bug报出来了?

测试人员认为这个字段应该按照数字顺序而不是字母顺序来排序。

为什么测试人员这么认为?

很显然,如果把“条目2”排在“条目19”的后面,用户在查找的时候就会有麻烦。

如果这段对话在你看来很奇怪,或许你还没有跟足够多的软件开发者一起工作过。你知道你到底要问多少次“为什么”才会得到你的客户真正在意的答案吗——哪怕只挨上一点边?正如“你要舔多少次才能吃完一根tootsie pop棒棒糖”这个问题,答案一定会让你很吃惊!

这是一个巨大的鸿沟!

软件开发者认为他们的工作就是编写代码。其实不然。(这句话是我从Billy Hollis那里“偷”来的。他曾以软件痴迷者为主题做过15分钟的精彩演讲。)他们的工作应该是解决客户的问题。当然,我们偏爱通过软件来解决问题,那的确包含了编写代码。但是,我们要有全局的观点:在交付完整的解决方案的过程中,编写代码只是其中一环。它自身并不是目的。

作为软件开发者,我们花了那么多时间沉浸在没完没了的、支离破碎的细节中,以至于我们太容易掉入为了编码而编码的陷阱中。如果没有明确的焦点或者某种让我们团结在一起的东西,我们就会只见代码这棵树木而不见整个森林。由此可见,拥有一个清晰的项目远景声明(Vision Statement)是极其重要的,每个人都可以把它当做这个项目的试金石。如果你把远景声明搞清楚了,你团队里的每个人都应该能通过由陌生人主持的“电梯测试”——在60秒之内,清晰地解释他们在做什么,以及为什么人们会在意他们正在做的事情。

如果你的团队不能用一种合理的方式向一个外行解释他们的工作,不管你有没有意识到,你都已经处在麻烦之中了。所幸的是,你有个好伙伴——Jim Highsmith可以帮助你。他推荐了一个可以构建项目远景模型的速效公式:

一个项目远景模型可以帮助团队成员通过“电梯测试”——它能赋予团队成员在2分钟之内向别人解释清楚项目的能力。这个模型出自Geoffrey Moore1的一本书:《跨越鸿沟》(《Crossing the Chasm》)。它遵循如下的形式:

为了(目标客户)

他们(关于需求或者机会的说明)

这个(产品名称)是(产品类别)

它的(关键优势、吸引人的购买理由)

不像(主要竞争对手的替代产品)

我们的产品(主要的差异化的特性说明)

创建一个项目远景声明可以帮助团队持续专注于产品的关键方面,哪怕细节一直在快速变化也不怕;否则,团队很容易就会被短期(2~4周)开发迭代中的问题缠住,从而失去对整个项目远景的控制。

我对这个速效公式并不感冒,因为它太过死板。但它是一个不错的开始。玩玩“Mad Libs”2吧,看你能想到些什么——绝对不能没有远景声明,但也不要一个毫无感觉、用杂乱无章的拼盘伪装成的远景声明。然而,我认为Jim关于开发远景声明的第二个建议更能给我们带来希望。

我认为,即使在一个提供信息技术服务的组织里,每个项目都应该被当作是一个创造“产品”的过程。无论这个项目的目标是提升内部的会计系统,还是建立一个全新的电子商务网站,面向产品的思维方式必能带来丰厚的回报。

我发现有一种做法在让整个团队思考产品远景方面很有效果,那就是“设计产品包装盒”。这个练习可以在项目启动阶段很好地激发大家的思维和讨论。整个团队假设产品最终会被装在一个可拆封的盒子里,而他们的任务就是设计这个包装盒的正面和背面。这包括给产品起个名字、一幅图片、正面列出3~4个关键点来“叫卖”这个产品、背面的详细特性说明以及运行要求。

实践证明,想出15~20个产品特性是容易的。难就难在,要选出其中3~4个能促使人们购买这个产品的特性。这个过程中还经常会发生关于“谁是真正的客户”的激烈争论。

“设计产品包装盒”是构建远景声明的一种极好的方法。它基于一个具体的、真实世界里的概念,因此大多数人都可以轻松地开动他们的脑筋。忘掉那些空中馅饼式的远景追求吧,让我们务实一点:我们(假想)的产品包装盒看起来会是什么样的呢?

我们都是消费者。我们对产品包装盒的设计目标都很清楚。如果不拿产品包装盒跟极端的“电梯推介3”相提并论,那它也应该:

  • 用最简单可行的方法来解释我们的产品是什么;
  • 把潜在客户愿意购买这个产品的原因解释得一清二楚;
  • 与货架上所有其他的产品包装盒相比具有独一无二的辨识度。

这里有个例子,让我们来看看命运多舛的Microsoft Bob4的包装盒。你该如何解释为什么客户应该购买Microsoft Bob?甚至你该如何说明这个见鬼的Microsoft Bob到底是个什么东西?

看看那些现有的、你觉得引人注目的产品包装盒是有指导意义的。当然,看看那些你觉得不好的包装盒也可以引以为戒。我们很清楚我们的产品包装盒不应该是什么样子。

从项目开始的第一天就确立一个坚定的远景声明吧!如果你还没有,那就从Jim众多美妙的建议里随便挑选一个,然后照着去做,立即构建出一个远景声明。在缺乏清晰的远景声明时,无法通过“电梯测试”的团队数目将是令人震惊的——他们不能解释他们正在做什么,或者为什么他们的工作是有意义的。不要犯那样的错误。构建一个了不起的远景声明,让你的队友们可以使他们的工作与这个远景相关联。确保你的团队可以通过“电梯测试”。

作者在Twitter上发的一条短讯:

  • “当一个编码瘾君子需要修好一样东西的时候,他只会多写上几行代码。” *
时间: 2024-10-25 09:58:44

《高效能程序员的修炼》一你的团队能通过电梯测试吗的相关文章

读书笔记--《高效能程序员的修炼》

        初次邂逅......        最近小编抽空看了一本书,书的名字叫做<高效能程序员的修炼>,从这本书的名字就能看出来,软件开发远不只是写代码那么简单,你要学会的是高效能的工作,这让小编想到了去年读过的一本书<高效能人士的七个习惯>,有兴趣的小伙伴可以看看哦,受益匪浅,<高效能程序员的修炼>这本书从人文角度而非技术角度去阐释了作为一个程序员,应该具备的基本素质,所以小编在看这本书的过程中,感到非常的有共鸣,通俗易懂,又很贴近小逼啊工作和生活中的实际,

《高效能程序员的修炼》一向橡皮鸭求助

向橡皮鸭求助 高效能程序员的修炼 在Stack Exchange上,我们坚持要求提出问题的人需要在自己的问题上多下些功夫,而且我们在这方面有些偏执.那就是说,当你开始要提问题的时候,你应该: 用足够多的细节来描述发生的状况,这样我们可以顺着你的描述继续研究下去.即使在你所在的特定领域里我们并不是专家,你也要向我们提供必要的背景情况,这样我们可以了解到底发生了什么事情. 告诉我们你为什么需要知道答案.你怎么会出现在这里?是闲来无事的好奇,还是在某个项目里遇到了障碍?我们不是要求你长篇大论地讲生活故

《高效能程序员的修炼》一如何培养写作习惯

如何培养写作习惯 高效能程序员的修炼 我得忏悔一下:程序员同胞们,从某种程度上来说,我创办的Stack Overflow网站"耍"了大家. 在你找来棍棒准备揍我之前,请允许我先解释一下. 在过去的6年时间里,我越来越坚定地有了这样一个想法,那就是:成为一名杰出的程序员其实跟写代码没有太大的关系.做程序员确实需要一些技能,当然,还要有坚韧不拔的精神.但除此之外,更重要的还是要有良好的沟通技巧. 杰出的程序员跟勉强过得去的程序员之间的差别,不在于他们掌握了多少种编程语言,也不在于他们谁更擅

《高效能程序员的修炼》一大道至简

大道至简 高效能程序员的修炼 作者在Twitter上发的一条短讯: "你永远都有简化的空间." 11:29 AM – 2012-5-21 Rich Skrenta在"Code is our enemy"(代码是我们的敌人)一文中是这么说的: 代码不是什么好东西.代码会随着时间的推移慢慢腐烂.代码需要周期性的维护.代码里还藏有bug.新增功能意味着旧的代码需要被修改.你的代码越多,bug能藏身的地方就越多,迁出(checkout)或者编译的时间也就越长,新员工理解你的

《高效能程序员的修炼》一一路向前冲

一路向前冲 高效能程序员的修炼就运营Stack Overflow这个公司而言,我采用的商业策略全来自一个人,而且只有这一个人:Curtis Armstrong. 更准确地说,是Curtis Armstrong在1985年的经典荒诞青春喜剧<再见人生>(<Better Off Dead>)中所扮演的Charles De Mar.当他被问到如何从一个特别险峻的高山上滑雪下去的时候,他回答道: 沿着那条路下去,一定要快.如果有什么东西挡住了你的去路--绕开它! 在我们宣布Stack Ov

《高效能程序员的修炼》一磨刀不误砍柴工

磨刀不误砍柴工 高效能程序员的修炼作为一名软件开发人员,你该如何磨快你的锯子? "磨锯子"实际上是一个代名词,泛指一切编程以外的活动(不必编写代码),而这些活动(从理论上来说)能使你成为一名更出色的程序员.这个词源自于Covey的一本书:<高效能人士的7个习惯>(<The 7 Habits of Highly Effective People>).1 有个人在山间漫步,偶遇一位伐木工.他便停下来观察这位伐木工,看他热火朝天地锯一棵很大的树.他发现这位伐木工干得大

《高效能程序员的修炼》一性能致胜

性能致胜 高效能程序员的修炼在Stack Overflow和Stack Exchange上,我们总是非常强调性能.不仅仅因为我们是性能的发烧友(我很内疚),也因为我们认为速度是一个竞争优势.已经有大量的实验数据表明,网站载入和显示的速度越慢,使用它的人就会越少. Google发现,显示10个结果的网页需要0.4秒来生成,显示30个结果的网页需要0.9秒来生成.半秒钟的延迟会造成20%的流量下降.半秒钟的延迟就扼杀了用户的满意度. 在A/B1测试中,亚马逊试着以100毫秒为单位逐步增加页面的延迟,

《高效能程序员的修炼》一学会读源代码

学会读源代码 高效能程序员的修炼在"沟通"这个复杂的领域里,写出能让人类领会并理解的连贯段落比敲出几行不至于让解释器或编译器"呕吐"的软件代码要难得多. 这就是为什么--就软件开发而言--所有的文档大概都是很差劲的.而且,由于为人写作比为机器写作要困难得多,恐怕在可预见的将来,文档还会继续差劲下去.对此,你基本上是无能为力的. 除了做一件事-- "卢克1,学着去读源代码." JavaScript"始终带有源代码"是一股革命性的

《高效能程序员的修炼》一导读

译者序 高效能程序员的修炼出版社的冀康一开始来找我谈翻译这本书的时候,我的第一反应是:这兄弟真是不知道我现在有多忙!我每天要处理200多封邮件:在资源有限的情况下经常要同时带6-7个项目,而且每个项目的交付计划都很紧,压力很大:每天起码工作12个小时,有时候还要熬夜跟美国同事开会:周六基本上也是工作状态--我哪里还有空来翻译书?! 后来,当我了解到这本书的作者是Stack Overflow网站的创始人Jeff Atwood,还有书的内容实际上就是从作者的博客网站Coding Horror精选而来

《高效能程序员的修炼》一关于多任务的神话

关于多任务的神话 高效能程序员的修炼在<质量·软件·管理:系统思维(第1卷)>一书中,Gerald Weinberg1提出了一个经验法则,用以计算由于切换项目而引起的浪费. 根据Weinberg的计算,哪怕在你的工作负荷中只是增加一个项目,也会严重地影响你的效率.你会损失20%的时间.当你增加第三个项目的时候,你会有将近一半的时间浪费在任务切换上面. 即便你同一时间只做一个项目,这种问题也可能会发生.轻易被电子邮件.电话以及即时消息打断你正在进行的工作,其影响可能是深远的,就像BBC2的这个研