文档库 最新最全的文档下载
当前位置:文档库 › 《非程序员》 (5)

《非程序员》 (5)

P rogrammer 9X

【访谈】 Kent Beck :只是一种正确做事的方法...............................1Alan Cooper :垃圾!都是垃圾............ . (12)

【方法】 极端编程中“坏气味”的发现与响应..............................24 用创建方法取代多个构造子................ ...... (34)

【过程】

通过CMM 评估的战略 (43)

《最后期限》(草稿)节选....... ............. .......... (48)

本期相关的参考资料

本期审稿:Think 、jason chan 版面设计:徐远正

征 稿

关于需求,设计,构造,测试,维护,配置管理,管理,

过程,工具,质量…翻译或原创均可。 (详细)

? XP On A Large Project

? Specification of Workflow Management Systems with UML

投稿:editor@https://www.wendangku.net/doc/702515397.html,

广告:adv@https://www.wendangku.net/doc/702515397.html,

反馈:think@https://www.wendangku.net/doc/702515397.html,

播种机

Kent Beck

:只是一种正确做事的方法

tensile: 能否谈谈XP 和UML 的关系

Kent Beck: XP 是一个软件开发的社会(social)系统,UML 是一个描述软件的标记法(notation)。你可以在XP 中使用UML ,但团队良好的进展并不需要许多文档,除了代码及测试外。

yhufo: XP 中的文档重要吗?需要写什么样的文档?

Kent Beck: 你要写的文档就是代码及测试。

superlong: XP 如何用在一个可视化项目中?

Kent Beck: XP 程序员并不是不做视觉上的思考(think visually),他们只是一般不储存图片(picture)。 notyy: XP 可以解决什么问题?

Kent Beck: 当你有许多关于需求的不确定性,XP 让你快速得到一个具体、运行中的系统,同时让你以一个相当稳定的速度(pace)修改。以这种方式你无须在开始之前知道所有的事。

yhufo: 但CRC卡及故事--这些都不是文档。

Kent Beck: 你无须永远保存。你从CRC卡及故事获得内容,然后把他们丢掉。

yhufo: 请问你认为最好的XP站点是哪一个?

Kent Beck: 目前https://www.wendangku.net/doc/702515397.html,和https://www.wendangku.net/doc/702515397.html,这两个地方都是学习XP一个不错的起点。

joe_lee: XP是一种递归过程(recursive process)吗?

Kent Beck: 是的,或者我可能说『不规则碎片形(fractal)』。以一年为期,描述你所想要的(故事)然后去做。以一分钟为期,描述你想要的(单元测试)然后去做(编写代码)。分解的不规则碎片形是经过相当的深思熟虑的(deliberate)。

taoxie: 你提到了单元测试。我同意rerun所有的单元测试是合理的,那么rerun所有的集成测试也是合理的吗?

Kent Beck: 如果你有适当的准备而且够快的话,你可以随时执行测试。

yhufo: 如果我们没有文档,我怎么知道怎样能控制软件中的变更呢?我想我们必须建立文档!

Kent Beck: 当你们说『控制变更』,我则说『鼓励变更(encourage change)』。控制来自测试、双人编程、大家坐在一起讨论及持续集成。XP对于受过良好训练的程序员运作得很好,但是如果目前不觉得有良好的训练,别担心。你的搭挡可以帮你,不然你的集成工作无法达成,你必须把你的代码丢弃。

dggh: 能谈谈xp practise games吗?

Kent Beck: 我做过一个练习让人们描绘一个咖啡壶的图像。从这里显示有更好的game。在伦敦有人建造乐高(Lego)机器人。Joshua Kerievsky有一个团队写了一个剧本(电影的脚本)。

gigix: 我想我们必须先小心地设计。如果我们忽视了设计的重要性,XP(或重构)将不能对整个项目有改进。对此你如何看?

Kent Beck: 我就知道迟早要讨论这个。我,同样地,坚持我们需要小心地设计。我宁愿等待并且在我有一些经验后再做,而不愿依据猜测(speculation)做设计。前置设计(Up front design)是一种正向反馈的循环(positive feedback loop)。你越有经验,你越可以考虑前置设计,直到你完全无用(useless)。另一种使用设计经验的方式是等待你的好想法,直到这些想法显露出来,立即就可以用得上。

joe_lee: 如果没有文档,我们怎样维护软件?

Kent Beck: 你有两个非常有价值的文档-代码及测试。如果测试总是能够100%执行而且绝不会允许逆行(regress),你还需要什么?

yhufo: 在双人编程中,两个人应该经常变换角色吗?一天或两天,我是说多久换一次,一天或两天?

Kent Beck: 在比较大的团队中,每天变换(switch)2-4次。在一天之中我无法维持一个双人组6个小时以上,因为专注的程度太过激烈。

xlp223: 既然XP没有专家,那XP leader在程序员当中扮演什么角色,客户,经理?

Kent Beck: XP是有专家,但他们的角色并不像以前一样是固定的。专家的出现是由团队中的每一个人依据经验挑选出来的。促使这种专家的出现是管理者扮演的角色。

yhufo: 在双人编程中,当一个人编写代码时,另一个人在干什么?只是看和说话吗?

Kent Beck: 双人编程并不是看着别人编写代码。编写代码就像是在沟通。键盘每几分钟便传来传去。双人编程时,你们讨论相关的想法,试试一个,建议另一个测试,把你下一个想法画个草图,写成代码,做些重构等等,持续进行下去。

dggh: 如何处理“程序员很少接触客户”的情况?

Kent Beck: 我想这些接触一般运作得不是很好。这就是为什么我说XP是软件开发的社会系统。频繁地和其生活受你写的软件影响的人接触,这能使你重视它。

tensile: 软件开发的社会系统?

Kent Beck: 首先,所有的团队成员聚集坐在一个大房间内:程序员、管理者、客户、分析师、测试员、用户文档、交互设计。其次,“客户团队”(customer team)提出编程团队必须通过的验收测试(acceptance tests)。学习如何通过这些测试需要沟通。

skyin: 每个人都有自己的任务,那如何双人编程时如何分配任务呢?

Kent Beck: 今天早上我将与你共同做你的任务,下午你可以帮我做我的。

yhufo: 能否介绍一些XP的工具?

Kent Beck: 我使用Eclipse作为Java工具,我真的很喜欢它。有时我也使用IntelliJ,还有,JUnit或它在其他语言的姊妹产品,在单元测试及建立验收测试架构时非常有帮助

xlp223: 每对双人编程都有自己独特的风格和水平,重构怎样才能使它变得一致和平衡?and person or group to do refactoring need be arranged in addition.

Kent Beck: 合唱团中的人,每人都有自己的声调。他们是如何让这些声音和谐?他们先决定最重要的和声然后“以他们的方式”唱出。在程序员团队中也是同样的道理。团队中所有人的成功,比个人的闪耀更重要。

notyy: 安排一个“在场客户”(on-site customer)在某些情况下实在困难。

Kent Beck: 想办法找到一个,否则准备接受失败。旧的Taylorist 软件开发社会结构没有用了,要有新的社会结构。如果让软件开发运作成功是重要的,坐在一起是绝对关键的。如果想做好却不认为那是重要的,或许这个项目应该取消。

yhufo: 为什么XP不需要文档!

Kent Beck: XP确切需要两种文档-代码及测试。如果你的团队觉得需要更多的文档,那么去做就是了。大多数的团队发现他们并不需要其他的内部(internal)文档。

taoxie: 你说客户注重合同型(Contract-style)的项目,我就碰到了这种情况。XP怎样应用在套装软件产品开发中?

Kent Beck: 对于套装软件(shrink-wrap)开发公司而言,客户团队(行销、测试、可用性、客户服务)是比使用自制型(in-house)开发的公司要大。除此之外,大家都同意使用单一的需求序列(故事)可以让软件开发越来越平滑(smoothly)。

tooliu: 不介意解释一下WinDNA和XP的关系吧?

Kent Beck: XP是Extreme Programming,不是操作系统。

xlp223: 做重构的人或组需要额外安排吗?

Kent Beck: 设计是每一个人的责任。当我们坐在一起而我们看到需要重构的地方,我们就重构。如果你还需要去安排进度,那你就等得太久了。

notyy: 我们应该首先教育客户吗?

Kent Beck: 客户需要知道XP吗?绝对需要。他们是团队的一份子,因此他们需要知道团队如何运作。故事及验收测试是需要先教给他们的两个最重要的事情,然后是发行(release)(3-12个月)及迭代(iteration)(1-3周)的计划。

skyin: 看起来XP更适合客户导向的应用软件,那其他类型的软件呢?

Kent Beck: 还有其他类型吗?如果没有客户,为什么要写这些软件?

Charity_Zhou: 因此我想XP对客户有更高的需求。

Kent Beck: XP当然对于客户有更多的要求。他们是可以看到的而且可以控制,同时他们负责挑选系统的范围。

smilemac: 我觉得XP和演化(evolution)过程很象,你能解释一下区别吗?

Kent Beck: XP确实使用演化或成长的隐喻(metaphor)。然而XP指定许多实践来支持长期的持续性成长。Gilb的演化式的交付工作在概念上是类似的,但对于如何达成目标。他没有说明太多。XP说:先测试、双人编程、坐在一起、随时集成然后你就能使你的软件成长及演化。

fpeng: 发行计划(release planning)和迭代计划(iteration planning)的区别是什么?

Kent Beck: 发行与业务循环同步,所以它们是3-12个月的时间。迭代与工程师需要的里程碑同步,所以它们是1-3周的时间。

dggh: XP需要团队中的每一个人都是系统分析专家吗?这也太难了!

Kent Beck: 团队需要系统分析专家,但不意味着每一个人都需要做系统分析。类似的,团队可能需要数据库专家,但只需3-4个人深入了解数据库的知识,而其他所有的人如果需要可以协助做数据库的任务。

Kent Beck: 我不认为推卸责任是在中国的特别问题,我认为这是任何地方的特别问题。我们从Fred Taylor那里获得工作的社会结构概念,一位上个世纪初的工业工程师。他假设工人是懒惰而且愚笨的,因此他们需要有人为工人计划并有人检查工人的工作(品质保证(QA))。这个社会结构在软件中并不能良好运作,因为大部分的程序员既不懒惰也不愚笨。不管如何,Taylor的范例执行得非常深入以致多数人甚至不知道概念是来自何处。

dggh: 当团队速度变慢时,我们能做什么?

Kent Beck: 我今天刚写了一封长信到Yahoo小组的XP邮件列表中。简单的回答就是要让团队速度加快,唯一的方式就是鼓舞团队的士气。

zhujigang: 我们的团队确实使用了双人编程,但如果有一对完成了他们的故事,而其他人还没有完成时,这一对该做什么?他们需要等别的人吗?

Kent Beck: 在每一次迭代中每个程序员签认一些任务。如果一个任务完成了,开始另外一个,或帮助你的同伴开始做他的任务。

simplebest: 你是否使用设计模式?

Kent Beck: 我绝对使用模式。如果你检视JUnit,到处都是设计模式。它是我曾经做过的设计最密集的部分之一,不管如何,设计模式被应用是因为我们需要它们,而不是因为我们认为它们可能是有用的。我们写一个测试,使之运行,然后注意到,如果我们引进设计模式,代码是否可以更清晰。我们通过重构来把设计模式放到正确的地方。4年后我们仍将做相同的事情。熟练的设计师可以通过使用设计模式,把讨论设计的时间从几小时缩短到几秒钟之内。

skyin: 你认为XP象管理领域里的“学习型组织”吗?

Kent Beck: 是的。XP依赖整个团队持续学习如何更好地互动。

yhufo: 是不是团队中的每一个人都应该测试软件?

Kent Beck: 如果我们要协调权力与责任,那么每一个程序员,他们有权力产生缺陷,必须同时有责任去测试。我看不到其他的方式可以解决这个难题。

fpeng: 你认为我们在使用XP时,是否需要软件来管理整个XP的过程

Kent Beck: 当初我对XP所做的第一件事情,就是写一个项目管理工具,实际上这是浪费时间。XP是一种新的习惯。用最简单可能的设备(几张纸贴在墙上就不错了)养成这个习惯。只要养成这种习惯同时团队找到其精神,你就可以开始引进软件来管理,而不至于破坏过程。

adylee: 你如何看待CMM和XP?

Kent Beck: CMM起源于制造业。那是从所谓的制造业成熟模式(Manufacturing Maturity Model)复制而来。软件并不像实体的制造业。每一个软件的开发都不一样,而有时候根本就是如此(and sometimes radically so.)。

simplebest: 你认为RUP和XP哪种更适合中国的程序员?

Kent Beck: 这一点我不清楚。XP提出来自每一种文化的程序员的问题,其不同的部分也有提到。XP 在中国最困难的部分在哪里?

tensile: XP是依赖软件还是依赖人?

Kent Beck: XP绝对是依赖人的,好的人倾向于做好的事情,功力差的人做得差一些。

dggh: 代理客户不知道客户的需要,那怎么办?

Kent Beck: 当我上次在日本,他们说他们无法诚实地面对客户,因为客户是上帝。我问是否一个即时(just-in-time)供应商会对他们的客户诚实。“喔,是的,当然。否则是不行的”。我想这就像XP。我们需要

对我们的客户诚实并且向他们保证。他们一开始并不喜欢这样,但结果是如此的棒,所以他们会学习去要求这种新层次的投入。

notyy: Kent,你应该知道这样一句话,“没有人因为使用IBM的产品而受到惩罚”,同样,那么多公司的经理想使用RUP和CMM。

Kent Beck: 在“没有人因使用XP而被解雇”成为现实之前会如何?我们将努力达到这个目标。“喔,你的团队已经三个月没有交付任何软件了。怎么办?你被解雇了。”我将举一个技术问题为例--模式产生架构。原来的问题是“模式与架构之间的联系是什么?”,这发生在设计模式还是新概念的时候。因此Ralph 【编注:指设计模式GOF的Ralph Johnson】和我跑进一家旅馆的房间去封闭思考,尝试回答这个问题。我们找到的答案就像定理(theorem)可以从第一个原理(principles)导出,因此一个架构可以从第一个原理(模式)被导出。这个论点--没有人能够证明是或不是—就是任何架构都可以从一小撮模式的后续应用推导出来。

dggh: QA部门需要详细的需求,但我们的团队只有简单的文档,怎么办?

Kent Beck: 在XP中,QA有一个前置的角色(up-front role)。在每一次迭代中,在技术团队开始把故事分解成任务之前,最好的团队随着他们的故事交付验收测试。你需要测试员编写这些测试,同时有设备支持他们。对于一个程序员最重要的事是勇气--冒险的勇气—看起来很笨,勇于挑战困难和尝试新技术,勇于清楚地与别人沟通,甚至是很难支持他们时。(The most important thing for a programmer to have is courage--courage to risk looking stupid, courage to try difficult and new techniques, courage to communicate clearly with others even when that is hard support them.)

simplebest: 在中国,大多数优秀的程序员不喜欢和别人坐在一起,这怎么实践XP?

Kent Beck: 在我的团队中,最优秀的程序员是最会沟通的人。或许我们对于“优秀”的定义不同。

simplebest: 关于优秀的定义:意味着你能解决别人不能解决的问题。

Kent Beck: 我对于优秀的定义是使别人解决他们曾认为他们不能解决的问题,也就是一个团队可以共同做的有多少。

阿楼: 噢,天哪,我想我的经理用不了XP,因为他喜欢控制每一件我为他做的事。

Kent Beck: 想要为你作决定的管理者就不是管理者。你可能需要离开,或可能是他们应该离开。在XP 你想要从管理者那里得到的是建立及维护社会网络的能力。这个网络断裂,他们便应该去修复。客户可以指定什么层次的工作量(load)需要支持,同时他们编写测试以决定这个层次是否已被支持。如果未通过测试,技术团队修复这个系统。

fdu_se01: 什么是XP项目的特征?例如涉及的领域,开发团队的规模,软件产品的规模。CMM的数据(特别是在美国)是基于DoD的。

Kent Beck: 团队大小:3-40个人(包括整个团队)。领域:可想到的任何事。产品大小:30个生产人员可以在几年内生产的任何东西。

notyy: 很难发现一个隐喻,怎么办?

Kent Beck: 找寻好的隐喻需要相关的软件经验。真正强大的隐喻并不会立即浮现。我曾经有一个大的隐喻是在处理一个程序片段12年之后获得的。我希望我现在应该更聪明了,但我怀疑:-( zer: 作为项目经理,如果有人离开(被解雇),那应该怎么办?

Kent Beck: 如果团队中有人离开,那一般不是大问题。速度可能下降(也可能提升)。计划的实践已经可以良好地控制速度改变。

xlp223: Linus是一位优秀的程序员,但他有时候有些害羞。

Kent Beck: 双人编程的方式可以帮助人们变得更能社交。

skyin: XP发展的方向是什么?

Kent Beck: XP的下一步是更加拥抱整个团队--如何把一个巨大的故事切割成合理的小故事?在团队中彼此如何沟通及协调。

adylee: 你认为XP现在是不是完美的?

Kent Beck: 你一定是在开玩笑。一般而言自然界的紧急系统使用3到5条规则(Emergent systems in nature use 3-5 rules)。很可悲的是XP似乎需要太多的规则。我一直在找寻简化XP的方法。你是否可以维持可视性及控制而无须先编写测试?我不认为如此,但我太积极投入了,以致不能了解。(but I'm too emotionally involved to know.)

notyy: 你是说XP将更简单吗?但我想轻快的过程会更复杂。

Kent Beck: 我想让XP变得更简单,但现在我看不到怎么做。

tooliu: 你是说擅长社交比刻苦编程更重要吗?

Kent Beck: 我比较喜欢有些人是可以包括这两方面。每一个团队中的成员应该持续学习新的社交及技术技能。

simplebest: 我们是否能剪裁XP,使它适合我们的团队?特别是针对我们中国团队成员的特征。

Kent Beck: 你可以调整任何程序。你必须对你的结果承担责任,因此在你的实践上你必须有权力。不管如何,我希望人们依据经验调整,而不是丢掉一些重要的东西,只是因为他们害怕去尝试这些东西。

tooliu: 你对XP有什么不满意的地方吗?

Kent Beck: XP Explained这本书在1999年发行。(其中有许多是我现在想要改变的,但此时我在做别的项目。)

fdu_se01: 要多长时间XP才能在团队中生效(学习曲线?)

Kent Beck: 一般团队在几周或几个月后都能获得好的结果。一般约9-12个月后明显地变得更有效率。我在Iona辅导的一个团队花了将近一年的时间才真正觉得满意,他们仍然能变得更有效率。

xlp223: 现在有“轻快软件开发”的说法,它和XP有什么关系?

Kent Beck: “轻快(agile)”来自一个研讨会,其中有许多趣味相投的方法论者集中讨论他们的软件开发过程。我们之间的共通点多于差异点,因此我们决定使用“轻快”这个词来描述我们的共通点。

notyy: 你愿意来中国指导一些软件公司吗?

Kent Beck: 我非常希望能访问中国。我辅导的团队包括整个美国及欧洲许多地方。现在我开始在亚洲的工作。我发现在不同文化当中找寻什么比较困难或者什么比较容易是很有趣的。瑞士日耳曼人喜欢编写测试,墨西哥人喜欢双人编程,重构在美国中西部非常流行。

lovelybug28: 我是一个XP的初学者,请问XP是否有可操作性(maneuverability)?

Kent Beck: 假设你可以将你对一个大型软件项目的期望切割成一周可以完成的细部。我们每周可以会面,你告诉我哪一个细节是你认为在下一周是最有价值的部分。我不在乎你挑选哪一个部分,所以你可以彻底地改变对于软件的整个概念而从我这边听不到任何怨言。是否这就是可操作性?有一本不错的书“XP in Practice”,其中讨论一个实际的(如果是小的)项目。

taoxie: 关于XP是否有一些学术研究工作在进行,或者它只是面向工业界的?

Kent Beck: 我们正在取得进展。有一些杰出的教授像Ralph Johnson,开设有XP的课程。XP有许多教育上的优点。迭代式开发让学生有机会尝试许多不同的变化。

skyin: 能不能告诉我们你自己的XP编程工具箱?

Kent Beck: 我的工具箱?我用VisualWorks写Smalltalk程序,如果我自己编写代码时使用Refactoring

Browser,如果我使用Java编写代码时,使用Eclipse及JUnit。我只使用两种语言。

lovelybug28: 关于可操作性…XP出现之前我们已经这样做了…

Kent Beck: 如果你已经知道如何做,XP可以从你身上学到一些东西。

notyy: OOAD必须在XP过程中使用吗?

Kent Beck: 你必须做分析及设计决策。问题是何时及你如何用符号表示(notate)。详细分析决策在每一次迭代中决定,而符号表示就是自动测试。设计决策是在故事评估、迭代计划、及编写代码中决定而符号表示就是代码及单元测试。

tensile: 怎样在公司中执行XP?

Kent Beck: 有关如何在一家200人的公司导入XP的问题。我发现你需要一个技术高手(champion),他愿意深入学习并且教导这种技术,一个企业高手去说服企业组织尝试故事及迭代,及一个执行高手来保证每一个人不会因异常而导致第一次做事就出错。所有的改变都伴随着混乱。在XP中game的目的是在任何给定的日期尽可能地交付最有价值的软件。要做到这点,团队中的每一个人必须放弃完美的观念(notions of absolutes),并且持续地学习。

notyy: 有没有执行XP的实际项目?效果如何?

Kent Beck: 在XP邮件列表中有超过100个实际项目。我猜,全世界可能不超过1000个项目使用XP。

charles_y,adylee: 为什么XP叫XP,而不是别的名字?

Kent Beck: “终极(eXtreme)”就像终极运动员,这些人事前有周密的准备并且达到他们最大的极限。“程序设计(Programming)”是因为最后我们从执行的系统获得我们的报酬。起名时,名称必须是准确、好记和说得通的(defensible)。说得通是最重要的。我需要一个我的“敌人”绝不会说“他们正在做这件事”的名字。

xlp223: 谁是你的敌人?

Kent Beck: 我不是真想使用这个字眼,我只是尝试打字打得快一点。当我命名XP的时候我的心中有Grady Booch这个名字。他对于软件开发和我有不同的概念(不完全是错误,只是不同)。如果我要建立一个流行的事物,将会对Rational有一些压力说他们也在做这件事。他们不曾说过他们是“终极”,即使他们说他们是“轻快(agile)”。

zer: 在编码之前,我们必须设计软件工程里的每样东西…

Kent Beck: Zer,为什么你要设计所有的东西,如果你只设计前面一半会如何?

xlp223: RUP和XP在理念上有很大区别吗?

Kent Beck: XP是一种开发过程,RUP是过程的框架(process framework),RUP有预设的举例说明(instantiation)看起来非常类似制造业(manufacturing)。

morenew: 计划XP的规则是什么?XP的关键是什么?

Kent Beck: 协商的范围。时间、品质及成本是固定的。这是XP的方式。

fdu_se01: XP是否推崇“每个人对组织都有不同的重要性”的理念?如果是这样,你如何处理人员的流动?

Kent Beck: XP计划中的规则是每一次迭代(1-3周)你计划要完成的与你实际在上个迭代当中完成的一样,如果你提早完成,你可以要求更多的工作。如果你快要来不及了,你要提出延迟要求。这个简单的规则优雅地控制休假、人力的成长、雇用、及项目间的转换。

Kent Beck: 这里有许多问题是关于“我们应如何在中国恰当地实施XP”。我建议你们由小的区域性的团体自行回答这个问题。你们的答案应该会比我的好。全世界有约20个这类团体,他们确实在帮助参与者。XP在长远的未来将变得脆弱及老旧,并且将有某些更好的东西来替换,在50年之内。不管如何,我期望许多XP实践被当做“只是以正确的方式做事情的方法”接受。先写测试、重构、快速具体的交付(quick concrete deliverables)、结合业务的团队(teams combining business)及技术才能(technical talent)。

| 新手指南 | 行业动态 | 文档中心 | 书籍推荐 | 专家解疑 | 嘉宾交流 | 服务中心 | 人才热线 | 非程序员 | UMLC

UMLChina讨论组

昵称:

密码:

注册忘记密码

登录

搜索UMLChina

搜索

最新>>最新招聘

·《非程序员》第四期提供HTML浏览

·站内搜索引擎更新,酷!

·交互设计栏目新增文章

·更新论坛精华

·用例栏目新增文章

·12月15日与Alan Cooper交流记录

·北京软通动力科技有限公司

·Bamboo Networks Ltd

更多>>

导航

《非程序员》:UMLChina发行的软件工程杂志,下载量过万

杂志下载征稿启事来稿情况

专家解疑:世界级专家为您解疑,点击人名进入各专家的答疑板。提问请先知道提问建议Kent Beck Alistair Cockburn Watts Humphrey Mark Paulk John Vlissides高焕堂钱五叶云文......

文档中心:大量软件工程资料下载

OO和UML用例&需求建模实例模式工具过程组件交互设计测试国内书籍

章物件导向杂志PMT评论

论坛精华:UMLChina讨论精华

行业动态OO和UML模式工具过程组件交互设计国内书籍

服务中心:

Architect组翻译组 OOAD培训,培训资料下载

| 首页 | 联系UMLChina | 留言板 | 新手指南 | 合作网站 |

Copyright by UMLChina 1999-2002

页码,1/1

UML Rose Rational RUP CMM 面向对象 CORBA EJB 系统分析项目管理设计模式

...

Alan Cooper:垃圾,都是垃圾!

fly cat: 大家对您的《软件创新之路--冲破高技术营造的牢笼》这本书有很深的印象,在这本书中你想说的是什么呢?

alancooper: 我尽力想阐明另外一条关于软件如何设计和发展的思路。

extreme: 能告诉我在哪儿能下载这本书的英文版本吗?谢谢!

alancooper: 我想可能没有地方能够下载到该书完整的英文版本,你可以从https://www.wendangku.net/doc/702515397.html,在线购买一本。

umlchina: Cooper先生,你认为Windows的界面怎样?和Mac比较呢?从交互设计的角度出发!

alancooper: 我认为Windows和Mac的界面是相似的。

umlchina: 相似--那是好还是坏呢?

alancooper: 在1984年是同样的好,但在2001年,就是同样的过时、灰暗和单调了。

yuminghui: 绝大部分中国大学生仅仅知道简单的VB编程,但是却认为自己是顶尖高手。

alancooper: 在美国也是如此。

yuminghui: 我指的是那些年轻的家伙,包括那些刚开始编程的人。他们在开始时不应该用VB或UML等类型的工具。

alancooper:优秀的程序人员编程不依赖于任何具体的程序设计语言。

boss_ch: 你认为Windows XP的界面怎样?

alancooper: 我认为Windows XP和其他的Windows及Mac是一样的。

extreme: 据说C#将很快取代VB,Cooper你对此怎么看呢?

alancooper: C#看起来象一个很好的语言。

guodd: 顶尖的程序员是否象艺术家?

alancooper: 我不认为编程是一种艺术,我觉得它像一种工艺,就象制陶或吹制玻璃。

fly cat: 你强调了交互设计的重要性,不过在我看来,当一个程序需要人机交互的时候,它是有用的。不过对于有些程序来说.... 例如对于实时监控设备的内嵌系统,还有用吗?你认为呢?

alancooper: 我不认为交互设计对于程序员做任何系统都是有效的,交互设计是针对交互设计师的。

fly cat: 编程是工艺,但是设计是艺术?

alancooper: 设计也是一种工艺。

extreme: Cooper先生,你认为作为一个交互设计师需要什么样的背景或知识基础。

alancooper: 好的交互设计师需要接受交互设计方法的培训。

extreme: 你是说,绘画或者艺术?

alancooper: 艺术意味着在软件设计或规划方面没有规则。

shenqw: 交互设计师需要懂得编程吗?

alancooper: 交互设计师需要懂得什么对于程序设计人员是重要的,但是不需要知道怎样编程。

fly cat: 什么样的工作背景对交互设计师来说是最重要的?技术或市场?

alancooper: “技术和市场”,两者都不需要,交互设计的字义本身就已经说明了它自己。

extreme: 我猜想他可能需要懂得心理学方面的知识,你说呢?

alancooper: 交互设计师必须知道哪些对于心理学家是重要的。

yuminghui: 这样说来老板需要招聘心理学专家参加项目了?

alancooper: 不,正好相反,因为有了交互设计师,所以他们再也不需要心理学专家参加项目了。心理学专家不能设计交互系统。

wrymy: 现在流行的网页设计,例如HTML、XML等,我们发现想找一个界面友好的网站是很困难的,特别是企业网站。Web页面上的控制是非常困难的,特别是当界面很复杂时!

alancooper: “网页的控制非常困难”,千真万确!

shenqw: 但是交互设计师怎样知道他们应当在屏幕上显示什么东西?

alancooper: 这和程序员知道该在编辑器中输入什么样的代码一样!

wrymy: 那么你对于网页的编写有什么建议吗?

alancooper:把所有的交互组件放在一个页面上。

extreme: 如果某人想成为一个交互设计师,他应该怎样做呢?

alancooper: 停止编程。

extreme: 为什么要停止编程?

alancooper: 因为程序员和设计师的目标是有冲突的,你不可能同时做好两件事情。

umlchina: “程序员和设计师之间有冲突”:但是他们在同一个团队中。

alancooper: 不,程序员和设计师的“目标”是有冲突的。

extreme: 看来我没有机会成为一个交互设计师了,因为我是如此地喜欢编程。

alancooper: 如果你如此喜欢编程,为什么你想成为交互设计师?

fly cat: Cooper先生,你能简要描述一下交互设计的实质吗?

alancooper: 让技术为用户服务,而不是让用户服务技术。

extreme: 那么,你认为作为一个程序员或PM应当了解交互设计吗?

alancooper: 好的交互设计师在你采用他们的计划时可以给出令人信服的原因。

umlchina: 一个好的交互设计师一般使用哪些工具?你能介绍一个吗?

alancooper: 我们用定性的现场调查技术,用户建模方法,设计原则,设计模板,许多纸和白色书写板。

extreme: 但是如果作为一个PM对此没有任何了解,我怎样知道那小子将带领我们走向成功呢?

alancooper: 对,你怎样才能知道呢?编程方面的知识能帮助你吗?我认为不能。

extreme: 那么,什么能帮助我?

alancooper: 一个交互设计师。

extreme: 但是我认为现在在中国发现一个好的交互设计师不是很容易。

alancooper: 寻找一个好的交互设计师和寻找一个好的程序员同样的困难,在任何地方都是如此。

wrymy: 我认为extreme的意思说,怎样判定交互设计师设计的好坏呢?

alancooper: 为什么程序员要越过交互设计师来参加判断呢?

hdw1978: 灵感,在绝大多数的案例中,你从哪里得到灵感?

alancooper: 程序员从哪里得到灵感?

umlchina: 有什么好的参考书能告诉我们怎样一步一步来做交互设计?

alancooper: 还没有,但是我们现在正在编一本。

fly cat: 我有一个感觉,Cooper先生是想鼓励我们自己寻找答案,而不是直接告诉我们。

alancooper: 交互设计不是工程类学科。

umlchina: 对于新书的编写你有什么计划吗?

alancooper: 在Cooper有两个高级设计师从事教材编写的工作。

extreme: 我建议Cooper先生做一个中国的培训计划,以便能给我们一些实际的指导。

alancooper: 这是一个好注意。

shenqw: 什么样的人能够成为交互设计师?他们应当有哪些方面的能力?

alancooper: 交互设计师需要具备凭空想象复杂行为的能力,交互设计应当在任何代码编写之前做。交互设计师必须能够在代码被写出来之前,想象它是做什么的。

fly cat: 但是我认为如果交互设计师没有实际的经验的话,他们想建立威信是非常困难的。

alancooper: 确实如此

extreme: 这种凭空想象复杂行为的能力能够训练出来吗?

alancooper: 只有当你生来就是个天才,才不用接受训练。就象如果你生来就是编程天才,就不需要编程能力训练一样。

fly cat: 我感到很困惑。

alancooper: 困惑--这是一个非常好的开始!

fly cat: 然后呢?

alancooper: 然后你得作好准备学习一种非常困难、非常不同的技术。

alancooper: 我不懂一个工程师为什么想做交互设计师?工程师们厌恶交互设计师所做的工作。交互设计师要处理的是人。没有CPU、编程语言、操作系统!

extreme: 我们只是想能更好地和交互设计师沟通。

alancooper: 这真是太好了!

shenqw: 按你的观点,交互设计师必须有一些编程经验吗?

alancooper: 为什么你这样认为呢?

fly cat: 因为如果他没有编程方面的经验,他想让程序员听他的将非常困难。

alancooper: 你的意思是工程师不听从交互设计师的安排?为什么不呢?

hzmajw: 艺术家能从事交互设计师的工作吗?或者办公室助理能从事交互设计工作吗?

alancooper: 交互设计不是艺术。办公助理能写代码吗?交互设计与写代码相比是一个复杂的、老练的、困难的工作。

fly cat: 在交互设计师建立他的威信前,形势是非常困难的。成为一个好的程序员也是建立他的威信和自信的一种方法。

alancooper: 为什么交互设计师要向程序员证明自己?为什么不是程序员向交互设计师证明自己?

fly cat: 但是在实际中,这是现实存在的。

alancooper: 我的工作就是要改变现实。

shenqw: 好,交互设计师不需要编程经验。那他怎样在代码被写出来之前想象它是做什么的呢?

alancooper: 那是交互设计师要做的,如果你不能做到这一点,你就不是一个交互设计师。

developerly: 在你成为一个设计师之前,你做过编码方面的工作吗?

alancooper: 仅仅做了大约15年。

extreme: Whao!仅仅15年!

fly cat: 在我看来,你也需要通过VB之父这种经历来建立你的权威。

alancooper: 我编写了VB的可视化部分的代码。

developerly: 那么你认为你的编码经历对你的设计工作曾有过帮助吗?

alancooper: 在我的公司,我们有40位交互设计师,他们没有一个人写过代码,他们只是将代码要实现的功能形象化。

extreme: 这样的话,你怎样让我相信一个好的设计师不需要了解任何编程方面的东西呢?

alancooper: 许多Cooper's的设计师从来没有写过一行代码。

umlchina: 有没有交互设计方面的工具?

alancooper: 有,但是没有一个能脱离软件。

alancooper: 你们刚才问我的问题,和六年前加州的程序员们问我的问题差不多。

extreme: 那也是为什么我们要来这里听一些意见的原因。

alancooper: 我真的感激你们的参与和对此的兴趣。

fly cat: 好象一个好的程序员很难成为一个好的交互设计师。

alancooper: 为什么他们想成为交互设计师?

umlchina: 既不是艺术家,也不是程序员,想开发这样一个新的职位是很难的。

alancooper: 对,没错。我们现在已经做到了。

fly cat: 在中国,程序员的发展之路是:编码-->设计-->管理。

alancooper: 我认为这是不正确的。应当是初级程序员-->程序员-->高级程序员;初级设计师-->中级设计师-->高级设计师;初级管理者-->中级管理者-->高级管理者。程序员通常是一个差的设计师和差的管理者。所有的工作职称都含糊不清和令人困惑。

jazy: 我想你的意思是交互设计师负责表达,程序员负责逻辑,缺少任何一部分都将做不成事情。

alancooper: 你说得对。“缺少任何一部分都将一事无成”:对,对,对!!!!!

hzmajw: 每个人都应当考虑哪种角色最适合他自己。当他有目标时,他将能把他的工作做得很好。

alancooper: 真正喜欢编程,而且确实精于编程的人,应当继续编程,做别的都是浪费。

extreme: 但是有时候老板需要你成为一个PM,那应该怎么办?

alancooper: 那老板应当回去编程。

extreme: 你现在已经成为一个著名的交互设计师了,这是否意味着你不再喜欢编程了?

alancooper: 我喜欢,但是我对它不再有足够的兴趣了。

fly cat: 但是我认为,当我们年轻时,我们喜欢做一些编程方面的工作,去了解一些事情,然后我们有了更多的经验,自然地我们就想做一些设计方面的工作。

alancooper: 这仅仅对有些人来说是对的。

umlchina: 根据你的交互设计观点来看哪一种手机更好?Motolora, Nokia, Ericsson?

alancooper: 我认为他们都是垃圾。

umlchina: 但是...他们都很笨吗?加上microsoft、IBM?他们都是一样的笨?

相关文档
相关文档 最新文档