当心:工具的美貌 (原文发表于2006-06-29 下午12:12:33 )
来源:互联网 发布:仿苹果桌面软件 编辑:程序博客网 时间:2024/05/01 15:34
我这周在芬兰的弗罗茨瓦夫(译者注:Wroclaw)为一位客户作咨询。(那是过去叫布雷斯劳(译者注:Breslau)的德国城镇,而现在发VRAHT-swahf的音。)这周末我拜访了这里的考古博物馆,就在城镇的广场旁。当我观看这博物馆的时候,我被那些创造箭、钩、斧子、罐、篮子和所有其他日常生活中的物品的远古人类的细心所震撼了。这些物品肯定曾花去几小时、几天、或是几周去创建;而且那个时代的人民也认为所花费的那些时间是值得的。
我端详了一支箭几分钟时间。这支箭是完全的实用主义风格。它没有各种装饰。而它却那么的显得工艺高超而且美观。杆只是个木棒,但它的直挺和整齐却无疑是经过悉心挑选的。箭头是粗糙的石英做的,而它的轮廓修整的与箭杆相协调而箭头与箭杆也稳固地切合。这种修整紧凑、规则、而又精确的。整个的物件给我留下了深刻的印象。一些人花费了很大的艰辛来打造它。一些人是很细心的。
而更令人印象深刻的还是一个古老的织布机。这个设备使用树枝制造的。就像那支箭一样,它未经修饰而且表面粗糙。而这又是个了不起的设计品,并且经过缜密的思索而成。对我来说这只需花上几分钟时间就能明白它是如何运行的。从便利的线绳,到那能交替的分离线绳以至于它不会在织物穿梭之中而拖拉缠绕的灵巧的线杆。这个设备是远古手工艺技术和工程上的杰作。
我也被使用这台织布机所需的小心谨慎所震撼。仅仅是去装配好这些线绳不花上一天时间也要好几小时。所有其他的线绳必须要与线杆通过一条长度刚刚好的宽松绳子相连,以至于当织布者拉动线杆的时候,那些线会被剩余的线绳拉开。这一定要小心谨慎而避免让线绳缠绕。
我从这次经历获得的精神是:工艺打造不能有任何的粗心!用另一个方式来说,你无须修饰就可以展示出伟大的工艺品。工艺品不在意外表的华丽,在意的是内在的美;实用的美。
我从这些远古设备中学习到的和为之震撼的地方是,如果他们能花费如此巨大的心思在打造和使用这些手工艺品上的话,那我们这些软件工程师也能做到。作为一个软件咨询师我看到了非常多的代码。我经常被这中间的大量代码构造的不经意所惊骇。好像那些作者是因为太忙于达到工具的成功而放弃了细心。而那些箭、织布机和那么多博物馆中的物品却告诉我的是工艺的成功是细心的结果。
如果我们是软件专家的话我们就要关注我们的工艺,关注我们的工艺制品。我们不能丢下一堆代码然后修修补补直到他们大体上能运行,而应该注意确保代码是经过认真思考的,认真书写的,认真测试的,而且认真的写文档的。
我所带的绿色护腕(译者注:green wrist-band,一种优秀的敏捷人的荣耀,可参见Martin之前的blog)告诉我测试优先(译者注:TEST FIRST,一种敏捷开发的优秀方法)是谨慎的专家态度的标志。它代表了我对我自己和我的专业所下的承诺,我不会对我的代码粗心。
作者小注:
弗罗茨瓦夫太棒了!
弗罗茨瓦是个漂亮的边陲城市,与苏联镇压和控制的时期相比,它现在恢复得非常棒。城市的广场华丽、生机勃勃、而且繁荣。大学正在培养出一批批新的聪敏敢为的毕业生。商业正在形成,有很多革新的建筑。简而言之,食美物兴。
(原文链接网址:http://www.butunclebob.com/ArticleS.UncleBob.TakingCare; Robert C. Martin的英文blog网址: http://www.butunclebob.com/ArticleS.UncleBob)
译者注:Robert C. Martin是Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域内的资深顾问。他不仅是Jolt获奖图书《敏捷软件开发:原则、模式与实践》(中文版)(《敏捷软件开发》(英文影印版))的作者,还是畅销书Designing Object-Oriented C++ Applications Using the Booch Method的作者。Martin是Pattern Languages of Program Design 3和More C++ Gems的主编,并与James Newkirk合著了XP in Practice。他是国际程序员大会上著名的发言人,并在C++ Report杂志担任过4年的编辑。
- 当心:工具的美貌 (原文发表于2006-06-29 下午12:12:33 )
- 跋涉于代码的泥潭之中 (原文发表于2006-06-02 下午04:45:17 )
- 绿色护腕 (原文发表于2006-06-10 下午01:14:07 )
- Java枚举,酷! (原文发表于2006-04-25 下午01:13:48)
- 微软眼中的TDD (原文最终修订于2006-06-11,下午03:20:52)
- 软件分析 Vs. 架构设计 (原文最终修订于 2006-05-29 下午06:44:14)
- 三大编程语言的性能PK--Java, C/C++和Ruby (原文最终修订于 2006-09-05 下午06:19:40)
- 面向对象设计的11原则--你称得上OO专家么? (原文最终修订于2006-04-10 下午06:19:40)
- 敏捷人还没接受它么?!(原文发表于2006-07-31 上午07:27:59 )
- 如何让Ruby代码更简练?!(原文最终修订于 2006-08-18 下午02:42:25)
- 使用Mock Object危险么?(原文最终修订于 2006-09-02 下午03:53:51)
- 基于MySQL的高可用可扩展架构探讨-原文已发表于《程序员》
- Java集合类操作优化经验总结(原文已发表于IBM Developworks)
- Java I/O 操作及优化建议(原文已发表于IBM Developworks)
- [爱上网的鱼 发表于 2006-12-2 18:11:00]
- LibreOffice,一个集美貌与才华于一身的软件
- 软件文档--扬弃还是传承 (原文最终修订于 2006-04-12,上午12:41:14)
- 用Rails将敏捷Web开发进行到底! (原文最终修订于2006-08-14,凌晨03:49:12)
- linux命令——文件操作
- AJAX要说什么
- 大家都blog快按年算了,我才搭上这条贼船
- 关于jdk1.5连接oracle速度慢的问题
- 第二次饶恕
- 当心:工具的美貌 (原文发表于2006-06-29 下午12:12:33 )
- collate chinese_prc_ci_as null 是什么意思
- ZoneAlarm® Internet Security Suite v6.5 + Keygen
- CSDN博客周刊策划案
- HOW TO:以事件名称与方法名称为参数的事件关联
- Autodesk Discreet Combustion 4
- 系统分析师备考指南与试题应试方法
- NOTIFYICONDATAA.dwInfoFlags的研究----更换系统托盘气泡的图标
- 没有需求的测试