利器何以为先

铁比铜坚硬,这是常识。在春秋战国时期,燕国的铁剑,锋刃部分已经达到了今天高碳钢的硬度。这已经非常可观了。中原地区,则以棠溪剑为九大名剑之首。棠溪地处西平,春秋属楚,战国归韩。铸剑名师曾有欧冶子、干将、莫邪等,工匠曾达七千之众。《史记》中说:“天下之剑韩为众”,说的就是棠溪。所以燕、楚等地,都以利剑著称。

但在另一个方面,从兵马俑坑中出土的四万件兵器,几乎全由青铜铸成。然而,大家都知道结果:秦国用武力统一了中国。

是铁剑砍不过铜剑?当然不是。

从史料和实物中,我们都可以发现:秦军的青铜剑比其他国家的更长。经兵器专家分析,产生这种需求的原因,可能与一种实战技法有关系:以相同的力量,刺比砍更致命,刺死砍伤。

你会在很多场合看到这种技法。例如《魔戒》这部电影,你会发现兽人拿大刀,人类则用长剑。在开始时两边都举着兵器高喊,冲向敌人。但接下来交战时,兽人还是在砍,人类则尽可能用剑去格挡,然后刺。

高明的剑士是不会用剑去砍的,剑刃多数拿来削苹果,真正有效的是剑尖。因而更长的剑可以更容易刺击到敌人。

无缘无故地产生一种更加“费工费料”的兵器,在战争史上是绝无可能的。因此秦军应当有相当的实战技法,来发挥这种长剑的优势以击敌。这种技法,与剑本身是铜是铁无关,与剑刃是锋利或钝拙也无关。技法产生了“长剑”的需求,进而把长剑的优势发挥得淋漓尽致。最终,铸剑技术不敌燕、楚的秦国,却灭了燕、楚。

由此可见,使用工具的方法,比工具本身更关键。所以“欲善其事,先利其器”这样的言论,未见得是全对的。

神乎其技又有什么用呢

然而,非但最坚利的剑不出在秦国,连最高明的击剑技艺也不出在秦国。

先秦历史中,最有名的剑术家当数在越国论剑的越女。《论衡》中说她是“剑技之家,斗战必胜者”①。她讲述剑道,说是“内实精神,外示安仪”,神情气度,巍巍然大家风范。在赵国,有连荆柯都敬佩,并前往讨教剑道的名家盖聂。再有宋国,以剑术为艺的兰子(艺人),竟然可以在奔跑中同时舞弄七把剑。

翻遍先秦史书,你会发现这种奇怪的现象:无有死士是秦的,无有铸剑名家是秦的,也没有什么技法通神的大剑师是在秦国的。

关于精妙的技艺,宋朝欧阳修记录的《卖油翁》大概是真人真事: 陈康肃公善射,当世无双……翁曰: 无他,但手熟尔。’康肃愤然曰: 尔安敢轻吾射!’……(翁)乃取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿。因曰:‘我亦无他,惟手熟尔。’”

我们回顾这个故事,卖油翁的技法再高,也无过于将油从更小的钱孔中注进去。他永远不会想到两件事:

油其实只需要装到壶里,从不从钱孔中注进去根本不重要;

如果买油者只是因为欣赏他倒油的技艺而买油,那么他就根本不需要卖油,厅众之下献艺即可获利了。

再说“陈康肃公”者,即当时的状元陈尧咨,四川东北部阆中人。陈尧咨文状元出身,箭技却有“当世无二”之称。也因此在后来的仕途之上,常任武官。

在当时,射箭多数是游戏之技。陈尧咨对卖油翁能“笑而遣之”,一方面是性情豁达,另一方面是视射箭为小技而已。他中状元之后,宋真宗拟改授他武职,与辽国使者比试箭技,他母亲不但不同意,还因此而责打他。再后,他荆南知府任满回家,母亲又问有什么特别的政绩,他回答道:“往来的客人都称赞我的射技。”

陈母“怒曰:‘一夫之技,岂父训哉。’击以杖”。

陈尧咨其人善射,却不知为何而射。他持“一夫之技”娱人娱己,空有“当世无二”之称,从未见他征战建功、平寇立业。他追求箭技,却从不知箭技并不是拿来射钱眼的,而是拿来征战杀敌的。如同卖油翁只知练就倒油的绝技,却不知他的目的只是卖油而已。

要知道陈尧咨并非没有军事才能。他晚年任天雄(河北东路的军防重地)的知军,虽然坚辞不就,但真的到任之后,却能注意到城防败坏、军器短缺的现状。虽然当时宋辽修好,没有战事,他却很有远见,认为北方有强敌,这样大意是非常危险的,遂将军事防务、装备修葺完善,整顿一新。所以他在军事上其实是颇有才略的。

影响陈尧咨精忠报国之路的,不但有社会崇文抑武的风气、其母以孝报国的教育原因,也源于他自己把射箭作为“一夫之技”的心态。

秦无剑技而一统天下,宋有康肃而痛失半壁!不知用法,不知用处,如同那习得屠龙之术者,神乎其技又有什么用呢?

工具的本质

真正让秦国强大起来的,并不是工具或者技法,而是在近三百年的战国中期才开始的商鞅变法。

商鞅变法中有一项是与战争相关的:废除爵位的世袭制,而改为按军功大小授予爵位。另外有一项也隐含地与后来的战争有关,那就是“允许人们开荒,土地可以自由买卖,赋税则按照各人所占土地的多少来平均负担”。正是这两项变革直接产生了后来使秦国强大的“耕战”政策。即所谓亦耕亦战,以耕养战,以战促耕。秦国先占领了蜀国(今四川),然后任用李冰兴修水利,使蜀国的农、商、织等民事空前繁荣。灭蜀后近六十年,秦国一举灭楚,继而统一六国,平定天下。

但这与软件工程有什么关系呢?或者与工具的本质有什么关系呢?

我们先来看看欧冶子的剑,与秦国武器之间的区别。欧冶子一生铸剑,才为越王铸了五柄,为楚王铸了三柄。秦国并不追求这种制剑之艺,而采用当时(战国末期)材质上显得有些落后的青铜剑。但制作工艺却很成熟,据说长度、硬度和韧性,以及铜锡的配比等,都已几乎完美。但在另一种主战武器“弓弩”上,秦国却显得“工于巧技”:弩机及部件和箭头达到了相当的标准化生产水平,弩机的部件可以互换,箭头底边宽度的平均误差只有正负 0.83 毫米。而在同一时期,赵国闻名天下的徐夫人,制(铁)剑一柄,价值百金;韩国棠溪的宝剑,存世者也不过十余柄。

秦国并不看重剑的材质,以及过于复杂的、艺术化的制剑方法。秦国关注于剑的长短特性、青铜工艺的成熟度,以及弓弩部件的“构件化”,本质上则是基于他们对“战争全局”的理解:如果只是个人喜好的玩物,而不是大多数人能得到的兵器,对战争有何益呢?

我们再来看看越女的剑技,与秦国的战术之间的区别。越女之技,未论及剑刺于何处,剑行于何方,无招式方法,是一种理论、思想。而秦国的战法则简单快捷,就是:快速奔袭,一剑刺敌,枭首而进。

工具的使用,一旦上升到“技艺”、 方法论”的高度,就难于理解掌握了。如果战士们都要花数十年来悟剑,那么还没等它悟成,国也就灭了。因此,秦国不看重“同时舞弄七把剑”这样的技艺,而注重能否以剑尖快速地刺杀敌人这样的技术。实在是秦国的用兵者,深知实战技法是一,论道传艺是一,不可概而论之。

如同工程与编程,单以编程而论,讲究技法之精妙,追求细节与枝节是可以的;但对于工程来说,能让团队理解、统一执行、迅速有效的实战技法,才是真实所需的。就像战争一样,团队化的工程中,技法的优劣并不是关键。关键在于某种技法是否能为团队带来整体的成效,而不在于某个人是否喜欢,或者深谙于此。如同陈康肃公,有当世无二之技,不能用于“群战”,也是无益。

秦国把战争当成数百年的工程,因此并不仅仅关注工具与技法。事实上,秦国是典型的以法治国的国家,因此与战争相关的所有活动,例如军令如何传达(兵符制度)、兵源如何补充(兵役制度)、士气如何激励(军功爵制)、后勤如何保障(耕战制度),等等,都有法令规范,都可以付诸实施并检测成效,进而在工程的整个团队(军队)中推而广之。

在这其中,兵器只是作为一种征战的工具,在秦军中起着相当重要的作用。但秦国并不迷信兵器,而是把兵器作为工具取而用之,并透析剑、弩等武器的本质,了解具体特性的成因与功用,进而规范成方法技术(而非技法技巧)。这些构成了秦军的军事基础,成为战争——这个浩大工程的组成部分。

工具之于工程,本质在于关注并发挥有益于工程全局的那些特性。一人一技,一器一物,又岂能是工程的要义?因此,我们最终看到拥有利器巧技的六国都不在了,最后只剩下一个强秦统一了天下。

惟手熟尔

很多的高手,对于工具的本质并不是了解的。他写程序快,只是记忆中读过的、写过的代码多于别人;他思考问题比别人细致,只是因为他有过比别人更多的错误;他能带领项目团队,只是因为他经历过足够多的项目团队。

这样的人可以算是能人:有能力的人。但未必真有见识,真有才略。

我们看到:卖油翁一生卖油,临老了只得了四个字“惟手熟尔”。一个人的经验与技术,如果到了“手熟”的程度,便也就进无可进了。

陈尧咨所谓的高妙之处,与卖油翁一样都不过是手熟之技罢了。卖油翁把油勺举得再高一些,可能多卖几许油?陈尧咨把箭靶树得更远一些,可能多杀一个胡虏?

浸淫于技法越深,便越容易忘记使用这种技法的最初目标和应用场合——就如同陈尧咨仅仅把射箭看成技艺,而看不到它作为战场武器的本质;亦如同卖油翁一味演练技法之高妙,而不考虑卖油才是目的,而技法只是表面。万幸的是,卖油翁终能悟到自己的神乎奇技,不过是手熟而已。而如今芸芸之中,众多的高手、熟手,可有多少还在卖弄那技法之事,技巧之事啊?

“尔安敢轻吾射!”当我在论及 RUP(Rational 统一过程)、UML(统一建模语言)这些具体的工具只是“工程之末”的时候,很多人愤而所言,与当时陈尧咨说过的话,又是何其相近?

本文节选自《大道至简——软件工程实践者的思想(典藏版)》

周爱民 著

电子工业出版社出版

你看得到工具的本质吗相关推荐

  1. 几种生态廊道构建概念、方法和工具的本质比较

    这篇文章主要来介绍几种构建生态廊道的概念.方法和工具的本质上的异同点,包括MCR,LCP,MSPA, Guidos,Graphab,Linakge mapepr, 图论,电路理论,circuitsca ...

  2. 看图工具—IrfanView

    今天将看图工具转变为了IrfanView 用qq软件管理安装的 以前是Picasa3,现在使用的是英文版,也就没有认真研究,以后慢慢用着再说吧 中午问题很好解决,在官网下一个语言包安装一下就ok了 用 ...

  3. 猪悟能论坛看贴工具(Discuz!7版) v1.0

    软件下载地址: 趣盘下载 软件功能: 专门针对Discuz! 7论坛开发的看贴工具.快速读取指定栏目下的贴子(按指定页数读取),是一种贴子快速浏览工具.同时,本软件也可以下载指定的贴子,你完全可以把他 ...

  4. excel服务器okr系统,OKR工具能帮企业落地OKR吗?从飞书OKR看专业工具的价值

    原标题:OKR工具能帮企业落地OKR吗?从飞书OKR看专业工具的价值 OKR之风开始盛行,越来越多企业组织开始看到OKR的巨大价值,并不断尝试将其落地到企业运营当中.落地OKR的价值已经被许多企业证实 ...

  5. 看图工具 -- 蓝湖/Axure/墨刀

    看图工具 蓝湖 蓝湖是简单便捷的团队工作台,能无缝连接产品.设计等各个流程,降低沟通成本,缩短开发周期,提高工作效率 .用户能直接查看.评论设计图还可随时随地地查看高保真原型 在Web端上传设计图,编 ...

  6. python中self image_Python3用tkinter和PIL实现看图工具

    需求 想做看图工具的,必然要支持jpg.png等常见格式,但tkinter是个纯粹的GUI库,不像GTK.QT那样大而全,所以只支持gif和ppm两种格式,局限很大,必须搭配图像处理库,才能实现基本的 ...

  7. 【腾讯 macOS 优质看图工具】Kantu(看图) V2.4 Mac 正式版

    文章来源于:风云社区 miniQpicview 2.4.dmg Kantu(看图) 是腾讯在 macOS 平台出品的优质看图工具,轻轻松松从万张照片中找到你想要的. [图片管理]可以管理 " ...

  8. 看图工具 -- 蓝湖 Axure 墨刀

    看图工具 – 蓝湖 Axure 墨刀 蓝湖:蓝湖可以在线展示Axure,自动生成设计图标注,与团队共享设计图,展示页面之间的跳转关系.蓝湖支持从Sketch.Ps一键共享.在线讨论,而且蓝湖只需简单几 ...

  9. 看图工具IrfanView

    IrfanView是一个开源免费的看图工具,功能强大,资源占用少. 这是以前做的一个IrfanView的使用方法的思维导图. 转载于:https://www.cnblogs.com/rowdawn/a ...

最新文章

  1. python 实现ftp服务 简介
  2. 你一定会用的18个linux网络监控工具
  3. 路由热备份(HSRP)DynamipsGUI小试牛刀
  4. linux心跳包检测代码_OpenSSL心跳包越界读敏感信息泄漏漏洞
  5. mvc模式 mysql做网页_SpringMVC + Hibernate + MySQL 的简易网页搭建(Control实现篇)
  6. 向maven中添加Oracle数据库的驱动,有效!
  7. css3直线运动_纯css3实现曲线运动——贝塞尔曲线(cubic-bezier)
  8. 看微软“第四代模块化数据中心”宣传片之后的思考
  9. swift开发网络篇—NSURLConnection基本使用
  10. 用C#代码实现求两条线段的交点并判断各种情况
  11. UILabel根据内容自动调整高度
  12. FPGA 串口中断_正点原子【STM32-F407探索者】第九章 串口通信实验
  13. zooKeeper篇-zk的选举机制
  14. IPv6测试(一)认识IPv6
  15. 学生平价蓝牙耳机推荐,适合学生党的好音质平价蓝牙耳机
  16. 水利水电工程有学计算机吗,为什么说千万别学水利水电工程 原因有哪些
  17. win10系统怎么合并电脑分区?
  18. python中双向索引_Python 字典支持双向索引。Python 集合也支持双向索引
  19. 手机我的世界java怎么装模组_我的世界如何下模组
  20. Vue项目img标签图片加载失败/显示不成功,显示默认图片

热门文章

  1. 白岩松---白说摘录
  2. 高可用性GRE+IPSEC中心—分支
  3. 手机远程管理服务器软件,远程控制软件 手机远程管理服务器
  4. Android 简易的自定义确认弹框AlertDialog
  5. 沁云图提供大量最新市场火爆的虚拟产品
  6. Spring boot的基础总结(三)-------Redis
  7. 史上十大权势女性排行榜:武则天为何不如慈禧
  8. 【opencv/videoio module】(一)Video Input with OpenCV and similarity measurement
  9. 经典软件工程师面试题
  10. 关于 安装Qt5.15.2启动QtCreator后“应用程序无法正常启动0xc0000022” 的解决方法