分享

学艺之道:“守破离”...(4篇)

 此幺小鸮 2013-11-04

http://dreamhead./logs/99770.html 守、破、离(梦想风暴)

世界顶级OO专家,《Surviving Object-Oriented Projects》以及Productivity 大奖图书《Writing Effective Use Cases》(2001)、《Agile Software Development》(2002)的作者,Alistair Cockburn(http://alistair./)。在他的主页上有这样三个汉字:“守”、“破”、“离”。对此,他给出了这样的解释:
对于用例的初学者来说,肯定要先遵守一定的规范,经过一定时间的使用之后,用例编写者就可以尝试以不同的方法编写用例。用一个具体的做面包的例子来说,守就是一个从来没有做过面包的人,就需要有一个菜单似的东西告诉他具体应该怎样去做,第一阶段“守”最重要的是我要知道菜单给我提供的是一种正确的方式,我只要照着去做,就能够做出面包来。
到了第二阶段,也就是“破”的阶段,这时你不满足做普通的面包,你想做酥松的面包、薄一点或是厚一点的面包,这个时候就需要不同的配方,根据不同的方式,做出不同的面包来。
到了“离”的阶段,就和那两个层次不一样了,只需凭手感,抓一些面粉,倒一些水,弄点鸡蛋在面里揉揉就能做出想要的面包。
就像编程序,一开始要老老实实从第一步做起,到了技术越来越好时,你自己就能判断用什么方法来使编程满足你的需要。这样我们很容易理解为什么一些会碰到这样的情况,一名老练的程序员,他熟悉各种编程技术,用这种也可以,用那种也可以。当一个初学者来问他怎样编程时,他会说,你可以这样,也可以那样。这不是初学者想要听到的。初学者总是会问,“什么是最好的办法”,老程序员说,没有最好的方法,这样也行,那样也行。其实自然的规律总是有一个“守”、“破”、“离”的阶段,随着时间的推移,会达到“离”的阶段。
(以上的内容摘自《非程序员》第三十一期《Alstair Cockburn与UMLChina交流会》)
虽然Alstair Cockburn说的是用例的初学者,但其内涵确完全适用用于如我一般的小程序员。很是敬仰这位大师级的人物,短短的一段话,把一个规律性的东西解释得如此清晰。很遗憾,迄今为止,尚未拜读过这位大师的任何一部著作,今天看在大师教导的份上,我决定把Alstair Cockburn的几本经典之作列入自己的读书计划中,只是为什么这个计划中的书越来越多啊!
http://genericbrain./blog/176264 (2008-03-26)守破离
学艺的旅程有守 - 破 - 离三个阶段。
传统技艺中,通常有“先切入形式,再摆脱形式”,或所谓“守 - 破 - 离”的学习步骤。
首先要拜名师,以学习一流技艺,其次,要不断动“脑”持续修炼,最后要用“心”臻至“青出于蓝胜于蓝”。
守-破-离:“创造发展剑招的过程,有守、破、离三阶段。最初学剑时固须顺从老师所教,把它熟练体会,变成自己的东西,以后突破老师的教导原则,招式心法,而如有新的心得,则离开师傅,创成新招。”——宫本武藏 《五轮书》
学艺旅程的“守破离”种 所谓“守”,系指按照师傅的动作,加以模仿及苦练。
所谓“破”系沿袭“守”的阶段,但到了某一程度时,只要动“脑”去思考,不觉地就会显露自己的风格。因此,只是一味模仿、苦练的学徒,说不上是拥有技艺的人,也谈不上已经“出师”,他只是动“手”而已,因此无法窥出师傅教法中的破绽。
一旦到达“破”的阶段,一定能领悟何者为“必然(基础架式)”,何者为“偶然(自己风格)”,并清楚其间的差异所在,无法领悟的人可说尚未到达“破”的阶段。“必然”系指技艺中无法改变的部分,而“偶然”系指学徒已渗入自己个性的部分。
达到“破”的阶段时,不管是“必然”的部分,或是“偶然”的部分,学徒都愈来愈炉火纯青,但还是无法摆脱师傅的阴影。
再过一段期间,如果学徒肯用“心”的话,在无意识之中,会突然开窍,以致难以区别“必然”与“偶然”,并将此二者融为一体,即达到“离”的阶段。到了此阶段,当然消失了区别的意识,渐渐脱离“原形”而升华至“融合”的境界。亦即,摆脱了师傅的阴影,而“独创一格”,成为世上绝艺的“一代宗师”,甚至达到“青出于蓝胜于蓝”的地步
日本剑王宫本武藏
宫本武藏(1584-1645),日本家喻户晓的一代剑圣,有“不可战胜的武士”之称。他出生于日本冈山县英田郡,年少时跟父亲学习兵法。从十三岁到二十八岁期间,与其他流派比武十六余次,每战必胜。二十九岁时在岩流岛跟当时名满天下的剑士佐佐木小次郎决斗,一战成名。三十岁后,武藏继续修业,终于在自己五十岁左右练成了使用大小两刀的“二天一流”的剑术。晚年的武藏致力于教授剑术、传播兵法、完成了多部著作,其中以《五轮书》最为著名。在他的自传中写道:“我从小习武,参加了60 多次比武,从未输过一次”。此丰硕的战果,除了他本人认真苦练之外,尚且能钻研兵法、活用兵法。《五轮书》 包括《地卷》、《水卷》、《火卷》、《风卷》及《空卷》,内容描述何时该“守”、何时该“破”、何时该“离”的上乘剑艺战略。
《五轮书》
参考:http://www.amazon.cn/mn/detailApp?qid=1206510926&ref=SR&sr=1-4&uid=168-9795459-1166639&prodid=bkbk728446
参考:http://tieba.baidu.com/f?kz=125340607
因年前读Alistair Cockburn( http://alistair. ) 的《Agile Software Development》,于其附录所见宫本武藏的心法,昨又于07年《程序员》杂志某期见Robert C. Martin将软件开发技艺学习与武术学习相比拟;又JavaEye上注册账号已经颇久,写blog也已经停止多年来,近因一些缘因,却待重开,JavaEye上同道颇多,甚是繁荣,乃择此处重建blog,拟以“守破离”为名,乃上述缘由。
“守破离”之趣,词学大师王国维于《人间词话》中一论,旨趣颇为相契,亦万法一宗而殊途同归故邪?乃录其下。
古今之成大事业、大学问者,必经过三种之境界:
‘昨夜西风凋碧树。独上高楼,望尽天涯路。’此第一境也。
‘衣带渐宽终不悔,为伊消得人憔悴。’此第二境也。
‘众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。’此第三境也。
此等语皆非大词人不能道。然遽以此意解释诸词,恐为晏欧诸公所不许也。”。
此博客重开之第一篇,述义,特志之,兼自勉求证“守破离”之境。
http://www./canonical/archive/2005/12/12/23562.html [导入]守,破,离(Posted on 2005-12-12 22:24 canonical)
守破离(Shu Ha Ri)是日本剑道(Kendo)的哲学。http:///cgi/wiki?ShuHaRi日本人很善于推销自己传统的思想,而中国的传统却似乎在盲目自卑和盲目自大两个极端之间徘徊
守是模仿(Imitate),遵循,是无我的过程。在日本的传统心性中,守的阶段需要完全开放心志,全盘接受导师的教导。此时应该学习唯一的真理,知道唯 一正确的方法,分清对与错。通过长期不辍的练习,将对规则的记忆固化在自己的身体中。初学者看似是自由的,但也是不明智的(unwisely),我们总是 倾向于采用错误的方式。beginners are very hard to fight... they don't do anything you expect them to do. They move freely, and randomly. Only by returning to very fundamental principles, can one uncover the faults (unwisdom) in their actions and defeat them. 简言之,就是没有结构。
破是变(diverge),是自我意识逐渐增强,心智逐渐收缩的过程。Just 'winning' is not enough, you must win well. 这个阶段我们需要区分出好与坏而不仅仅是两分的对与错。
离是返朴归真, 是忘我的过程。最终我们得到行为和思想上的自由(freedom)。离看似是随机的,但实际上是混沌的(chaos)。It's being good irrespective of whether you are right or wrong.看似打破常规,举手投足却都遵循着道(Tao),这是持续而自由的创造。
传统上守破离这三个递进的阶段是在导师监护下完成的,导师决定你是否进入下一阶段。而在没有导师的情况下,我们需要增加一个步骤:检验(Test),即我 们需要缩短每个阶段的时间,对我们的修行成果进行检验,通过迭代循环来自我实现阶段跨越。(http://www./essays/tin/shuhari.html 提到Test, 大概是这篇文章在agile社区流传的原因之一吧,呵呵)。
我们无法跨越守的阶段。敏捷编程绝不意味着没有design pattern。没有良好的基本功,一切都是空谈。
破,首先是破除权威。小的时候我们喜欢引用大师,喜欢谈论他们的轶事,现在也是引用,但却经常略带狡黠的歪曲他们的原意。大学以后应该少去阅读大部头的 书,读薄的书,并把书读薄。真正的思想并不是很多,当大量的细节都成为背景知识以后,我们需要进行思考的内容并不是很多。避免重复书中的原话,因为那是别 人的思想。广为涉猎,多做比较。换个角度看一看,或通过类比,尽力建立事物之间的关联,同中求异,异中求同。我以物理学的观点来看待软件,这是我采取的破 的方式。
http://www./article/115175.htm 守.破.离与第三方软件学习过程
禅理有守.破.离之语,所谓效法定石,就是以前人所定之规矩为准,对它遵守上进为第一阶段的修练,这相当于『守』的修行。到某程度这种修练进步后,藉自己的用功机智等将它突破,此即相当于第二阶段的『破』的修行。然后修练更进步时,由想突破的意识,想立异作为的念虑自然脱开,终于不知不觉的升离,但这一切还是不失法不越矩,到达一个独立开拓的境地,这是第三阶段的『离』的阶段。
守破离多应用于个人和组织如何学习, 记得在一本管理书上看到华为总裁任正飞这么指导他花巨资引进的国外管理流程,当时,华为公司有人对此很有异议,他说,这个流程,5年内,必须完全遵守。不得有任何改动,5年后,可以根据实际情况增删修改一些流程,10年后,华为可以订制自己的流程。
作为一个开发人员,学习新技术是经常不可避免的,学习第三方软件又是最为常见的活动,让我们看看禅理的守破离如何影响我们学习框架和组建的
第一个阶段,谓之守。对于框架和组件提供的功能我们很兴奋,能解决实际项目需求,也能解决就业问题。学习的方法无非是买本书看,如XXX从入门到精通,或者国外的 Mastering XXX ,或者 XXX in Nutshell 。也有可能这些工具还未有书记专门说明,那最好的方式是直接去看官方文档,推荐依次看看quickstart,tutorials。 对于一个成熟的第三方工具,tutorials已经完全够用。我个人并不赞同去google一篇快速入门文章来看,因为这是二手或者三手资料(取决于你项目紧迫程度,否则,通读tutorials是精通工具的最好方法)。除了读,还需要实践,第三方工具提供的文档里都有相关的例子,可以花时间依葫芦画瓢来一步一步做,如Hibernate 提供的Event例子,Struts提供的cookbook例子,直到你完全掌握为止。
在这一阶段,学习第三方软件最好的办法仍然是项目实践。光看书,或者接受培训,都不会有特别好的效果。
在这一阶段,正如守所定义,我们完全敞开心扉,接纳,学习这个新的工具,知道如何正确和高效的使用这个工具。
第二阶段,谓之破。已经应用过这些工具了好几个项目后,对如何最佳使用这些工具已经很清楚,可以很明白的知道Spring什么时候该用,什么时候不该用,也发现Hibernate,或者JPA这写O/R Mapping工具的查询语言对与DBA并不合适,Struts你也发现必须要继承FormAction,侵入性太强。 这个阶段主要特征有
1 你了解完成同样需求可用的数个工具和方案
2 代码允许修改的话,你可能对第三方软件进行修改或者二次开发(参考第三方软件与3C)
3 冷静的看待这些第三方软件,不在狂热追捧。清楚的知道这个软件的优缺点,对此软件有了自己的见解
4 使用这些软件你有你个性化的方式,并未完全遵守书本或者官方文档
5 清楚这些软件是如何实现的。
第三阶段,谓之离
武学中,到了离这个阶段,意味着你已经摆脱了师傅的阴影,成为一代宗师。对于使用第三方软件,到了这个阶段,能透过软件了解所它解决问题的本质。它对你来说,已经可有可无,如果需要,信手粘来,如果不用,自己也可以创造一个你的“工具”来完成项目。新手会问,为什么不使用某某工具,但只有你清楚你创造出来的是最合适的。甚至,有一天,你的工具将为大家所熟悉和追捧。
举个例子,在第一阶段,明白了业务方法需要注意事务问题,要么都成功,要么都失败,你了解到EJB可以帮助你处理事务问题。到了第二个阶段,了解了相比EJB,Spring是个更轻量级的解决方案。了解到Spring是用AOP来管理事务,同时也了解到事务实服务际上是由资源管理器数据库来提供的。 到了第三阶段,项目里也许根本没有EJB,Hibernate,你非常清楚如何管理好这些事务。你会留下一个更为简单框架,写一些与资源管理操作的代码来管理事务!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多