BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

社区热议“软件工艺宣言”

| 作者 Mark Levison 关注 0 他的粉丝 ,译者 李剑 关注 1 他的粉丝 发布于 2009年3月13日. 估计阅读时间: 5 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

从InfoQ中文站发表“你愿意在软件工艺宣言上签名吗?”一文之后,可以见到在宣言页面上来自中国的签名者有了急剧的增长。本文介绍了“软件工匠Google讨论组”中的一些社区观点。

Corey Haines认为,撰写这篇宣言的主要原因是为黑暗的角落带来光亮:

在我看来,最重要的目标是让一些新手,刚入门的人可以看到,认识到一些东西……有那么多人不相信应用我所赞同的技术可以获得成功,还有那么多人没有意识到确实有很多公司专注于工艺原则,着实让我很吃惊。……

所以我们要发出声音,发布一个宣言,为建立这些原则做更多工作,成立学派,我们为那些新手照亮了道路。

Micah Martin也参与了撰写宣言,因为他想为到底什么是软件工艺带来一些不同的观点。

宣言组的成员回答了两个核心问题:“它怎样帮助解决敷衍了事的代码带来的问题?”,“哪些做法可以让只是粗制滥造代码的开发人员成为工匠?”——区别就在于到底是只想完成工作,还是想把工作做好。

Paul Pagel回答说:“我们希望可以通过设立更高的目标,也提高开发的标准。而且这些原则也可以让那些愿意遵守软件工艺原则的开发者看到未来发展的路线”。

Micah Martin说道:“截至今天,宣言上已经有了1500多个签名者。有1500个人在跟‘敷衍了事’的代码作战。那些已经投身战斗的人会感到自己并不孤单……这个宣言会温柔的将人从敷衍了事推向工艺。” 

Rik Dryfoos提到

作为一个工程经理,宣言能够在“工艺价值”——也是我们在公司内宣传推动的价值(和实践)上留名让我很高兴。它可以帮助我们解释清楚我们对想加入团 队的实习生或者有经验的工程师有哪些要求也可以对招聘这样的双向选择过程有帮助。软件工艺宣言创造了一个对话条件,这是我们一直竭力为之奋斗的。

Corey Haines 认为宣言并不是针对“粗制滥造代码的开发人员”

我坚决认为:它不是。而且坦白的讲,它不应该是。

对这种人来讲,我认为外界的动力不会起到任何作用。他们已经建立了自己的工作方法,他们不会去尝试新的东西,何况它还更困难一些,更甚的是,会在他们学习期间对他们的工作产生负面影响……

我个人的观点是,只有两种人是我愿意提供帮助的:一种是有兴趣竭尽全力以毕生精力走好软件开发之路的新人;一种是有经验的人,虽然已经有了固有的开发方式,但是愿意抓住机会,学习如何开发更好的软件。就这两种人。

Mike Bria在考虑,在某些情况下,我们是不是必须唤醒某些已被埋葬多年的东西。也许是一种欲望,也许是一种乐趣,曾经存在过,但消失已久。他认为我们得做点什么,重燃这种欲望。

Heinrich Breedt持有怀疑论调,他认为粗制滥造代码的人只是用跟从前一样的方法把事情做完,让他们去做新的东西,例如写测试用例、重构等等工作,对他们而言只是额外的负担。

在私下的交流中,Dave Hoover表示这个宣言尚未完工。目前为止只是跟敏捷宣言相对地列出了一些价值,还有一些原则正在被添加进去。

最后,Dave Rooney认为我们是在寻求职业化的过程中给手艺镀金。也许我们应该参考模仿其他行业。Dave引用了他老丈人——一位飞机维修工程师(AME)——的经验:

我觉得,我们可能跟AME这样的行业可能还没那么远的差距。他们对质量的决心跟Bob Martin的Clean Code手环(Clean Code Wristband)没啥不一样的。如果把我们当做AME——飞机机械师——可能就能让我们越过把软件开发当做工艺的概念,把它当做普通行业中的一员。

InfoQ上还有其他相关内容:精益求精——敏捷宣言的第五项价值?Craftsmanship and Ethics(Bob大叔的演讲)、Fostering Software Craftsmanship in a Corporate Setting(Scott Dillman)的演讲。

查看英文原文Software Craftsmanship Manifesto: A Call to Arms


:在英文站新闻发布之前,中文站已有相关新闻报道,故本文在翻译的基础上做了一些改动。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

我有时候会疑惑 by Jeffrey Zhao

我有时候会疑惑,是因为宣言本身,还是因为大牛本身?
我看到,遭到反对的大牛很少,反对大牛的一般也是另一个大牛。
可能大牛的确是大牛,强迫自己不会在大庭广众犯错吧……呵呵。

立山头、树大旗,这很正常 by Zhang Charlie

如果仔细研究,可以发现在 XP 大师里面,Uncle Bob 和 Martin Fowler 的观点与 Kent Beck、Ron Jeffries 的相比是有些微差别的,相对比较全面,走的是温和的中间路线,我比较认同。

由于所持观点、价值观的差异,软件大师流派、阵营的分分合合、此消彼长是常态。于是前段时间,我们看到了继 Agile Alliance 之后又出现了更火爆的 Scrum Alliance。

现在有人敢于质疑《敏捷宣言》,提出它还不够好,于是提出用《软件匠艺宣言》来弥补、改进,我觉得是件好事。

Craftsmanship 不是工艺,应该译成匠艺、技艺或技能 by Zhang Charlie

Craftsman + ship 强调的是工匠个人精湛的技艺和能力,应该译成匠艺、技艺或技能。把 Craftsmanship 译成工艺,对初级程序员、业余程序员会形成误导。

所以 Software Craftsmanship Manifesto 是《软件匠艺宣言》,或者《软件技艺宣言》。

不懂“工艺”在软件工程里是啥意思,估计是外行吧。几年前,熊节(Jeff Xiong)翻译的 Pete McBreen 的《软件工艺》这本书,已经被张恂批评过。

听说敏捷首席李剑是北航的软件工程硕士,我想应该懂什么是工程,什么是工艺。偏要这么翻,我估计因为是熊节的坚定饭丝。当然,这是他的自由,而我们也有批评的自由。

资深敏捷 OO 教练 张恂
www.zhangxun.com

我激动的签了名 by yongji zhang

程序员,作为一种职业,我骄傲。

我们以写垃圾代码为耻。
我们以敷衍了事为耻。
我们以粗心大意为耻。
我们以推脱责任为耻。

我们要精益求精

到头来,是我们一起在和软件的熵再搏斗,你不是一个人再战斗,
做一个有心的程序员,有责任感的程序员,为了我们脱离苦海,为了我们
共同的目标,你应该站起来,做好自己,贡献社区。

welcome to my blog:
gurudk.javaeye.com

Re: Craftsmanship 不是工艺,应该译成匠艺、技艺或技能 by yongji zhang

不必咬文嚼字。
我觉得工艺翻译的不错,工匠的手艺,简称工艺。

如果说匠艺、技艺或技能,这些词都没有工艺这个词强烈的表达原文的意思,这几个词都比较弱。

点评《匠艺宣言》中的几个亮点 by Zhang Charlie

Manifesto for Software Craftsmanship

As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:

Not only working software,but also well-crafted software

Not only responding to change,but also steadily adding value

Not only individuals and interactions,but also a community of professionals

Not only customer collaboration, but also productive partnerships

That is, in pursuit of the items on the left we have found the items on the right to be indispensable.

© 2009, the undersigned.
this statement may be freely copied in any form,
but only in its entirety through this notice.


《匠艺宣言》比《敏捷宣言》更明确、更直接,它补充的这几个关键词(形容词、名词)的确很重要:well-crafted software, steadily adding value, a community of professionals, and productive partnerships。

以前我也觉得《敏捷宣言》把 working software 作为一个追求目标低了点,仅仅能用就行了?当时我想到的是用 quality software 来替换 working software,和 well-crafted 意思差不多。

steadily adding value,我也很赞同,我提出的太极敏捷中就有这条增值原则,想到一块去了。软件人一定要有经济头脑,不要浪费自己的精力作无价值的事情。

此外,还强调协作、沟通的专业性和高效性(professionals, productive),这些当然也是非常重要的,也应该添加上去。

不过,描述优秀的、卓越的软件开发团队、个人的状态和目标,有太多的要素、名词和形容词可用,能否就用《敏捷宣言》、《匠艺宣言》这么 8 句话就概括全了,我有点怀疑。

手艺不是工艺 by Zhang Charlie

2009年3月12日 下午11时0分 发表人 zhang yongji

不必咬文嚼字。我觉得工艺翻译的不错,工匠的手艺,简称工艺。

如果说匠艺、技艺或技能,这些词都没有工艺这个词强烈的表达原文的意思,这几个词都比较弱。


这不是咬文嚼字,是基本概念。

“工匠的手艺,简称工艺”,不对。手艺往往不是工艺。举个简单的例子,老公夸老婆菜做得好,会说:“老婆,你的手艺真好!”难道有人会说,“老婆,你的工艺真好?”

所以,手艺是用来指人的,描述主观的东西;而工艺往往不是用来指人的,描述客观的东西,比如一件产品,流程,技术和方法等。

显然,匠艺要比工艺更准确、更强烈地表达了原文的意思。

Re: 点评《匠艺宣言》中的几个亮点 by yongji zhang

宣言本身比宣言内容意义到大的多。
大家都知道简单的几句话是不能涵盖全部。

Re: 手艺不是工艺 by yongji zhang

看看词典的解释
baike.baidu.com/view/77063.htm

工艺大多为劳动人民直接创造,是人民群众艺术创作的基本形式之一。作为艺术的一种,它是从手工业生产分离出来成为独立的部门后才形成的,高尔基在《论文学》中说过:“艺术的创始人是陶工、铁匠、金匠、男女织工、油漆匠、男女裁缝,一般地说,是手工艺匠,这些人的精巧作品使我们赏心悦目,它们摆满了博物馆。”

什么是工艺?(词条定义) by Zhang Charlie

yongji,你提供的链接其实是“工艺美术”的词条,但也恰好证明了我的观点:

baike.baidu.com/view/77063.htm

工艺:

实用艺术的一种,又归于广义的造型艺术。工艺是工艺美术的简称。通常指的是在外部形式上经过艺术的处理、带有明显审美因素的日常生活用品、装饰品这一类实用艺术。它以“工艺”和“美术”的存在为前提。工艺是指将材料或半成品经过艺术加工制作为成品的工作、方法、技艺等;美术指用一定的物质材料塑造可视的平面或立体形象,使人通过视觉来观赏的艺术;工艺美术则是指用美术造型设计与色彩装饰的方法和技巧来制作各种物品的艺术 ...


还有一处定义,和上面的定义也是一致的:

www.hudong.com/wiki/%E5%B7%A5%E8%89%BA

工艺:

一个好的产品它的生产过程绝不能随心所欲,必须要按照一定的规范标准来实施。这一规范标准就称之为工艺。好的工艺能够充分的保证产品的质量,提供工作的效率。


这是目前绝大多数行业(尤其工程行业)所采用的定义。显然,中文的“工艺”通常不能用来形容某个人或某些人的技能。


另外,你引用的这段文字也是不对的。难道你和你们公司开发的软件是用来摆放在博物馆中的工艺品、艺术品?这个比喻显然是错误的。

2009年3月13日 上午12时11分 发表人 zhang yongji

看看词典的解释
baike.baidu.com/view/77063.htm

工艺大多为劳动人民直接创造,是人民群众艺术创作的基本形式之一。作为艺术的一种,它是从手工业生产分离出来成为独立的部门后才形成的,高尔基在《论文学》中说过:“艺术的创始人是陶工、铁匠、金匠、男女织工、油漆匠、男女裁缝,一般地说,是手工艺匠,这些人的精巧作品使我们赏心悦目,它们摆满了博物馆。”


软件行业中的绝大多数软件(首先)是业务工具、信息工具和商务工具,是一种工业品。当然,不排除还有一些艺术类的软件,从工业品变成了工艺美术品,纯粹用于欣赏、收藏和把玩,没有工具性。

估计你被误导了。

例子:比较软件公司的手艺和工艺 by Zhang Charlie

手艺不是工艺。再举一个例子:

我们通常可以说某家软件公司程序员的手艺很不错,能力很强,但肯定不会说这位程序员的工艺很不错。提到工艺,我们往往指的是产品的工艺,而不是(制造)人的工艺,和人搭配的是手艺。

如果要形容公司,我们通常会说这家公司的(软件研发)工艺(流程)很先进,但通常不会说这家公司的手艺很不错,我们往往说某个人的手艺不错。如果我们说某家饭馆的手艺不错,其实是指这家饭馆的厨师的手艺很不错。

可见,手艺、工艺各有各的用处,不能互换。

Re: 例子:比较软件公司的手艺和工艺 by yongji zhang

工艺学会揭示出人对自然的能动关系,人的生活的直接生产过程,以及人的社会生活条件和由此产生的精神观念的直接生产过程。

可以查查词条,sh.dict.cn/search/?q=craftmanship

解释就是工艺。

你所说的,给我解释的是工艺的狭义概念,就是指制造工艺,你说的没错。广义上的工艺概念,是可以说的通的。软件开发本身我认为就是一种艺术,是一种直接的生产过程(参看开始处的定义)。

Craftsmanship 的英文含义:skill by Zhang Charlie

这两处定义应该更可靠些。

1. cdict.net/q/craftsmanship

資料來源(1): pydict data [pydict]
craftsmanship
技能;技巧

資料來源(2): Webster's Revised Unabridged Dictionary (1913) [web1913]
Craftsmanship \Crafts"man*ship\, n.
The work of a craftsman.

資料來源(3): WordNet (r) 2.0 [wn]
craftsmanship
n : skill in an occupation or trade [syn: {craft}, {workmanship}]

2. www.thefreedictionary.com/craftsmanship

skill in an occupation or trade

Re: Craftsmanship 的英文含义:skill by Li Johnny

跑题啦!但是“匠艺”这个词,确实雷人啊

Re: Craftsmanship 的英文含义:skill by Wang Jagger

同意!

不懂工艺是什么,才雷人! by Zhang Charlie

2009年3月13日 上午2时38分 发表人 Johnny Li

跑题啦!但是“匠艺”这个词,确实雷人啊


“匠艺”这个词古已有之。

没跑题,正好做一次常识的普及。

Engineership over Craftsmanship by Zhang Charlie

恢复手工业时代的称谓,软件工匠,真的比软件工程师更潮吗?我举两个反例。

如果要论真正的软件工匠,咱中国恐怕没有几个。我想首屈一指的,当代应属王选老师。毕升是名工匠,王选老师和他率领的团队用光和电取代了铅与火,其成就和影响可以说超过了毕升,称王选老师为水平最高的软件工匠肯定是没问题的。然而,王选老师仅仅是一个匠么?是不是有点低估了?其实,王选老师最合适的身份就是科学家(兼工程师),一位伟大的、实干的科学家。

还有,我们很自豪,世界首富是一名程序员,他退居二线后的头衔是 Chief Engineer。此外,我们熟悉的 n 多位软件工程大师、敏捷大师的头衔也都是 Chief Scientist。

事实上在西方很多国家,受到崇尚科学文化的影响,人们都很尊重各行各业的科学家和工程师,有的科学家、工程师的身份甚至还是由皇家授予、奖励的,地位尊贵。

这些说明了什么?说明 Scientist、Engineer 的地位显然比旧时代的工匠高(至少不低于),受到了人们的普遍尊重。从历史的、发展的角度看,工程师一定有超过工匠的地方。软件工程师、科学家的个人能力难道一定就比工匠差,代码写得不如工匠好?不对吧。

所以我觉得,既然历史上没发生过,现在也没必要倒退回去,提倡工匠的文化,“软件工匠”不过是一个有点不合时宜的比喻而已。咱中国还是多提倡软件科学、软件工程,高水平的软件工程师的文化更好。

无论是《敏捷宣言》、《软件匠艺宣言》,好像都缺少几个关键词:

科学、辩证、系统、智慧 ...

等。这些我会在太极敏捷(宣言)中作补充。所以,我肯定不会加入什么《软件工匠宣言》,《软件工程师宣言》倒是可以考虑。Engineership 比 Craftsmanship 更好!

资深敏捷 OO 教练 张恂
www.zhangxun.com

Re: Engineership over Craftsmanship by Jacky Li

行啊掌门,你就来写写软件工程师宣言吧。

Re: Engineership over Craftsmanship by yongji zhang

敏捷宣言肯定了人在软件开发过程中的重要作用,这与一般的工程(比如建筑工程)中,人的作用是不同的。软件开发是最能体现人类智慧和能力的。所以怎么强调人的作用都不过分,相比engineership,Craftmanship更强调人的智慧和技术。不必太叫真,craftmanship只不过是bob大叔的一个比较好的隐喻而已,他能强调两点:一个是人的作用,一个就是skill。

至于工艺,匠艺(打这个词真的很费劲,sogou居然没认出来)这些词哪个合适,不必辩个脸红脖子粗,仁者见仁,智者见智。

任何一个词汇的含义,都会随着时间,扩展它的含义。匠艺这个词,我只是感觉非常别扭,用的也比较少。如果这样翻译,可能100人里面99个人都会觉得很别扭
,剩下那个人可能就是你了。

看看汉语词典是如何定义工艺的:

工艺:“将原材料或半成品加工成产品的方法、技术等”
手工艺:“即需要手工技巧或运用艺术技艺的职业、行业或工作”

我们想表达的无非是突出软件开发人员的技巧,手工艺是最好的隐喻。、

如果翻译成软件手工艺,也会有画蛇添足之感。

至于匠艺这个词,我在很多在线汉语词典里,都没找到这个词。已经有的词能够表达的,何必又新造词呢,我确实不知道是谁造了这个词。

翻译成软件工艺,我不相信看了人会不理解它的意思,词能达意就可以了,何必较真,不过我还是佩服你做研究的个性,我也是不见棺材不掉泪,不到黄河不死心的人。

你读过 Software Craftsmanship 这本书吗?翻成工艺肯定是外行干的。 by Zhang Charlie

2009年3月15日 下午8时11分 发表人 zhang yongji

... craftmanship只不过是bob大叔的一个比较好的隐喻而已,他能强调两点:一个是人的作用,一个就是skill。

... 翻译成软件工艺,我不相信看了人会不理解它的意思,词能达意就可以了,何必较真,不过我还是佩服你做研究的个性,我也是不见棺材不掉泪,不到黄河不死心的人。


Pete McBreen 在这本书里,通篇把 Software Craftsmaship 与 Software Engineering 相对作比较。如果翻成工艺,那么就是工艺与工程的 PK,请问工艺和工程是什么关系?工艺在工程界是极常用的一个词,有人要拿软件工艺来颠覆软件工程,不是很荒唐么?只有软件工程的外行才会这么翻。

yongji,我不知道你对软件工程、软件工艺有多少了解。

这个问题其实我们 4 年前已经讨论过了。当时,熊节(Jeff Xiong)名家这么翻的目的是为了“颠覆软件工程话语体系”,已经被张恂鉴定为业余草莽的包装、炒作和鼓噪。

如果你还没读过这本关于 Software Craftsmanship 最著名的书,那么应该回去好好做一下 homework。

如果你也喜欢颠覆软件工程,颠覆软件工艺,认为你自己是属于文化艺术界的,那么我们就没什么好说的了,这是基本立场的不同,因为我们是属于工程界的。

google:约有 1,180,000 项符合 匠艺 的查询结果! by Zhang Charlie

2009年3月15日 下午8时11分 发表人 zhang yongji

至于匠艺这个词,我在很多在线汉语词典里,都没找到这个词。已经有的词能够表达的,何必又新造词呢,我确实不知道是谁造了这个词。


可是,2005 年我曾写道:

“匠艺”并非本人的生造,查 Google 吓你一跳,竟有一千七百多项。涉及行业包括建筑、文学、戏剧表演、雕塑、动漫等等,可谓古今中外 365 行,行行出匠艺。比如 “红炉业在济宁十大匠(铁、木、竹、金、银、铜、锡、石、窑、瓦)中有第一匠艺之称”。《元史 本纪第七 世祖四》中有一句“诸路正军帖户及同籍亲戚奴仆,丁年既长,依诸王权要以避役者,并还之军,惟匠艺精巧者以名闻”。在《北洋海军章程》中有这么一句,“凡鱼雷头目,应由水手副头目或一等水手曾经学习鱼雷匠艺并谙操放鱼雷者考充”。大家没有想到吧,过去竟然还有鱼雷匠。此外,中国戏剧出版社早在 1957 年就出版过一本《论匠艺》(斯坦尼斯拉夫斯基原著,张守慎译)。

将 craftsmanship 译作“匠艺”,来自其他学科的佐证:

- 台湾中原大学建筑学系学生赵文杰在他 2002 年的硕士论文《台湾传统匠师参与古迹修复之研究》中写道“当前对传统匠艺之研究不少,却未见有关关键问题之探讨”(there are very few studies made on traditional craftsmanship, and no study is seen on relevant essential problems)。

- 《司法程序》(Judicial Process,2004年6月 法律出版社) 第三章的标题就是 Craftsmanship,中文版就译作 “匠艺”,呵呵,讲的是法官的匠艺(职业技能)。


yongji,你的 homework 没做好吧。现在是否看到黄河了?hehe

Re: google:约有 1,180,000 项符合 匠艺 的查询结果! by yongji zhang

那本书我的确没读过,但我觉得不是工程和工艺的事,而是工艺和匠艺的事儿。我也没兴趣去颠覆软件工程,google1180000结果中,不重复的就是380个,大部分都是编程匠艺这本书的。其它对匠艺的描述很多都是比较狭义的。比如百度百科的描述:baike.baidu.com/view/2033103.htm

怎么说,匠艺也是非常生僻的词汇。从工艺的定义看,是可以涵盖匠艺所表达的意思。

对翻译的理解本来就是每个人都有自己的看法,我保留我对软件工艺的看法。

软件工艺即可解释为制作软件的手工艺。

软件其实是一种艺术 by lai danny

也处是一个老艺人了,看了很多的学徒在走弯路!

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

23 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT