一天我与一个同事吃午餐的时候,他给我讲了一个令人惊讶的发现。他参加了一场关于面向服务构架(SOA)讲座,认识到以前从没有的术语定义,比如,“授权(Enable)”是什么意思,“EnterpriseNetworkBus”又是什么意思等等。 在软件开发中我们经常使用术语,而这些术语对于不同的人具有不同的含义。本文将探究软件开发团队通用词典的必要性,同时指出创建通用词典应注意的事项。 混乱之塔 “上帝说:”如果人们都说相同的语言那么他们想做的就没有达不成的。让我们下去混淆他们的语言吧,那样的话他们之间就不能相互理解了。‘“《圣经》,新国际版,11章起源,5-7页。 人们都说同一种语言时,彼此之间都能相互了解,则能够完成几乎所有事情。如果人们更多的讲述、倾听和了解彼此彼此之间的语言,则不会在愚蠢的错误和误解上浪费很多时间。 大多数人都有这样的经历:我们为别人指出了去某个地方的方向,但是那人最后又折回来了,因为我们所给出的方向不容易被接受。或者我们接受别人的指导后,我们所做的与指导人所期盼的情况完全是两码事。 这让人非常恼火,而且对于软件开发这是要付出代价的。一般预计项目40%的预算被返工所消耗。想象一下这么多返工并不是因为技术而仅仅因为交流障碍,那么可以看出通过更好的交流减少返工从而提高团队的效率的潜力是多么巨大。 开发一种通用语言是减少返工的基础,它可以使交流更清晰更明了。虽然不很完美,但是这样可以大大提高在交流中完全理解别人意思的可能性。 现有词汇再学习 与开发者构建共同经验和在确信已经知道的事情上形成共同理解的基础上,发展自己的词典是满足词汇学习要求的一个大挑战。你可能知道别人的意思但是实际上你对事情的理解与别人稍稍有些不同。 举个例子,当我说“猫”的时候,你可能认为我是在谈论那只名叫“Fluffy”的你将它当作孩子的白色波斯猫。或者你可能认为是你今天买的那只带斑纹的猫。而实际上我讲的是最近看到的那只孟加拉虎。我应该指出我所讲的是一只“大猫”吗?也许应该。但是这还不够详细而准确。有可能我讲的是美洲豹、狮子或者老虎。 需要指出的一点是我们有共同的词汇但是我们对这些词汇的定义每个人都稍微有些不同。诀窍是让团队中所有人对词汇的定义尽可能趋于一致,使用这样的词汇则很容易让团队中的人员了解其精确意义。 一个有效的方法是找例文。例文定义和扩展了这些术语。例如:面向服务构架(SOA)对很多人来说都是个难以定义的词汇。但是,可以通过要求或鼓励人们阅读关于SOA的内容理解它。虽然不是每个人都同意文中SOA详细内容,但它也为团队定义词汇提供了参考。 支柱定义允许定义其他相关的术语。并且可以加强团队对此术语理解。但是即使有很好的理解,支柱术语还远远不够。 创建新词汇 现有词汇是很好的开始。从那些经验丰富的人员那里可以学到很多有特定意义的单词和短语。但是这需要时间。当你尝试着自己描述自己的技术、过程或方法的时候,你会发现现有的词汇不能表达它。 一位叫“DavidFeinberg”的前同事,他有个梦想:在他的词汇里添加新单词。这是个了不起的想法,我希望他能成功。当然,不管有没有完成目标,他都擅长于向词汇中添加新单词。这些单词的美妙之处在于对于团队成员来说它们具有详细准确的含义。并且对团队外的人员来说,他们提不出不同的定义。 虽然不让其他人知道词语的意思不是件好事,但是对于词语的意思不被曲解是有好处的。因为没有其他的线索联系到这个单词上来,它只具有团队故意限定的唯一定义。 最困难的工作是诊断和确定那些意思不清晰和可重复的新单词。交流中也同样存在这样的问题。如果看不到这个问题或它不成为一个问题,都将很难让大家都关注这个问题。一个新术语有利于理解或不理解某件事,但是被错误理解的可能性是非常低的。 精确的文化 从看我文章的不同专业编辑那里获得的最大利益之一是他们鼓励我的文章应更详细而精确。我不能只说事情发生了,还应该详细记述发生了什么、在什么时间、持续了多长时间等。我们讲话的时候都说一些一般的术语。这是很不正式的,这样的讲话将导致很多地方含糊不清并且不严密。大多数表达不严密的情况发生在通过Email询问问题的时候。我们指出问题但是很少指定问题回应的最后期限,在多长时间回应质询的地方留下了含糊之处。 读和写中精确文化的影响是微妙的。因为可以抛开它为开发人员编写自己的词典;但是它就像催化剂,能加速过程。通过标记团队交流的精确度,队员都会努力找出那些精确的单词表达他们的意思。他们将使用“我们需要一个编辑屏幕为用户添加、阅读、编辑和关闭客户,但是不能删除客户,因为这是不需要的”这样的表达来代替“我们需要开发一组需要的标准操作”。 这样有可能会增加交流的词汇量,有可能由于精确的表达浪费了一些时间,但是这肯定比向屏幕中编写根本用不着的“删除”代码所花费的时间少,因为根本不允许客户被删除。 精细的文化 精确的文化不仅仅只关乎读和写,它和听也有关系。换句话说,用精确的语言交流也需要听者校验说者所表达的意思。精细的文化是鼓励听者通过反馈挑战对说者所表达意思的理解。这会自动提炼说者所表达的意思,并且使其更精确。 人道主义方法到心理学基于告诉人们所听到的事情这一观念。这一方法可以确定病人也可以对顾问进行启蒙。病人喜欢有人倾听他们的讲话并且可以扩展他们感觉或描述一些情形的细节。而顾问可以以此验证对病人的了解,反过来也可以更好的了解病人。 这一基本形式是:说者讲,“我认为我们需要基于SOA方法解决这个问题。”,听者(或团队中的一个听者)会这么说:“我知道你认为与项目相配的网络服务是正确的”,这个回应没有使用说者所使用的词语,说者所回答的话可能是:“对,但我认为还需要地址队列和正在处理的事务表,同时我们必须关注维护松弛耦合。”。这些话阐明了说者认为队列、事务处理和松弛耦合是解决方案的重要组件。如果没有信息反馈,说者是不会讲出这些信息的。 这是精细的文化,在这里听者需要对他们所听到的进行提炼然后反馈给说者进行交流,这有利于减少返工的潜在可能性。 世界之大 当你为团队交流创造词典的时候,存在的一个挑战是必须应付身边的世界。你会收到很多与团队定义不同的术语信息。这就是找到自己词汇的重要性的原因所在。不必与外部世界纠缠不清。在术语前使用前缀“OurCo”,例如“OurCo-SOA”将有助于我们分清楚这些词语与外面意思的差别。 最后对你的词典有个警告——不要与外部世界词语的意思发生冲突。例如:不要将Web服务定义成Web站点。这一定义与其他地方的定义相矛盾。对于新手来说很可能产生误会。甚至跟同事或与新来的顾问进行交流都会产生误会。 最好的显示词典的方法是使用方言。这有点像外部世界进行交流,但是对于团队有特别且唯一的含义,并且便于高效的交流。 建议 不需要创建完整的新语言或学习那些难懂的语言,例如Klingon,但是应该考虑如何与团队之间进行交流和如何为交流创建词典。 学习关键术语并且应用自定义的单词形成新单词和强结合体。让说者和听者在交流过程中都能理解其言外之意。
信息发布:广州名易软件有限公司 http://www.myidp.net
|