本人并非什么武林高手,更不是编程大师,但是我很仰慕他们,希望有朝一日也可以达到他们的境界,我很幸运能够从事自己喜欢的工作,但是一直以来总觉得自己还是太嫩,每每看到希望,走过去才发现自己依然肤浅。以下所写是我对通往大师之路的一些探索,不当之处请您指正,希望与大家一起探讨。

简单是一种力量

“工欲善其事必先利其器”而这里所说的“简单”,并非是使用什么开发利器来提高开发效率,恰好相反我建议大家尽可能使用简单的开发环境,摆脱对可视化环境的依赖。

作为一个引子在后文中我将分别介绍Windows、Linux、Cygwin(Windows下Linux模拟器)下J2EE Web项目的开发、编译和部署的简单开发环境,希望能对大家有所帮助。

“重剑无锋,大巧不工”出自《神雕侠侣》对武林神话独孤求败的一段描述。《笑傲江湖》中令狐冲所使的“独孤九剑”便由其所创。独孤求败一生用过五种不同的剑,分别为无名利剑、紫薇软剑、玄铁重剑、木剑乃至无剑。这五种不同的剑,事实上代表了独孤求败剑学的五个不同境界,依稀有王国维所谓“昨夜西风凋碧树”,“衣带渐宽终不悔”,“蓦然回首”三种学问境界之意,但更为细致精确,更能传神,写出了高手的心路历程。

重剑无锋,大巧不工

“大道至简,道生一,一生二,三生无穷”,据说金庸大侠笔下的独孤求败就是通过观察草地上两条大蛇的争斗,悟出了武学的道理。同样我们也能通过生活中朴实的道理领悟出不断提高软件开发水平的正确方法。

“独孤求败年轻时曾看到两条大蛇相斗,它们相互缠绕,扭来滚去,极尽柔滑曲张之能事,旁边的树木草花无亦不被摧,他先是看的呆了,然后看这两条蛇斗了好久好久,再目睹周围之万事万物,突然感到神明空灵,似乎触到了什么,这时在他而言,那两条蛇的动作就好像武学中的招式,旁边的一草一木似乎都可以当作武器,顺手拈来即可伤敌,同时那蛇的弯曲弓张,缠绵不绝,腾挪起伏仿佛都很符合自然变化的奥妙,招式总是有限的,而有些东西似乎是无限的,纵然极尽变化之能事,到头来亦不免为敌所伤……据说独孤求败经过那惊心动目的两蛇之战,自此悟通武学境界,不以巧取胜终归自然。” 独孤求败最终达到“无剑胜有剑”的境界,生平求一敌手而不可得,无可奈何,惟隐居深谷,以雕为友。

多年之后神雕侠侣中的杨过误打误撞,居然找到了独孤求败的剑冢,埋藏了独孤求败在人生的不同阶段使用的“宝剑”,独孤求败一生用过五种不同的剑,分别为无名利剑、紫薇软剑、玄铁重剑、木剑乃至无剑。这五种不同的剑, 事实上代表了独孤求败剑学的五个不同境界,依稀有王国维所谓“昨夜西风凋碧树”,“衣带渐宽终不悔”,“蓦然回首”三种学问境界之意,但更为细致精确,更能传神,写出了高手的心路历程。

第一柄剑“无名利剑”,长四尺,锋利无比,剑下石片上写着:刚猛凌烈,无坚不摧,弱冠前与河朔群雄争锋。“弱冠前”即二十岁以前,独孤求败仰仗这把“利剑”,所向无敌。如同我们基本掌握了一种开发语言以后,仰仗某个开发工具,如VC++、VB,可以轻易地开发出一个软件,这时候我们会感到似乎编程也不过这么回事,好像“我们什么都可以做只是时间问题”。

第二片石片前没有剑,石片上面写着:紫薇软剑,三十岁前用,误伤义士不详,乃弃之深谷。软剑比利剑更加锋利,也更加灵活多变,然而凡事有利亦有弊,剑过于快了往往就难以收发自如,以至于常常失去控制,而误伤义士,独孤求败心生内疚,将软剑弃于深谷。如同我们使用了更加“高级”的开发工具如 .NET等,这时我们的开发效率进一步提高了,功能的开发不过是控件的拖曳,以及针对控件的编程(大多数时侯几句话便可搞定),如同练剑的人所有的功夫也都围绕着剑来展开,实际上我们几乎所有的思维也同时被绑定到这些工具上,而忽略了技术背后的本质,和所蕴含的思想,同时由于工具本身的复杂,如同独孤求败的软剑过于灵活而失去控制,我们往往会遇到工具使用不当而带来的错误,如忘记添加某个Lib等等,表面上看我们是疏忽了,其实更深层的是我们对开发理解的肤浅,同时每每当我们遇到较底层或较抽象的问题又会感到素手无策,如效率,安全性,稳定性,扩展性等等,于是我们不得不依赖于另一个更伟大的工具“Internet”,赌博似的希望Internet这次可以帮助我们度过难关。渐渐的我们发现自己已经停步不前,“感觉自己已经变成了做事可以不用多想的熟练工”,实际我们已经逐渐沦为会使用工具的工具。聪明的人会学习独孤前辈将“软剑弃于深谷”不再过多的依赖工具。其实“弃于深谷的不单是误伤义士的软剑,还有少年人不顾一切、不可一世的锐气”,然而更多的人却发现自己已深陷工具的陷阱,无法自拔。

放弃“软剑”这一剑学“歧途”之后,独孤求败的第三把剑竟是凝重的钝剑。石片上写的是:重剑无锋,大巧不工,四十岁之前持之横行天下。这段充满了自信与豪气的题字,说明正当壮年之时创立了“重剑级”剑学的独孤求败在当时实已无敌于天下了。

《神雕侠侣》中对杨过初练玄铁重剑的情形有如下一段描写:

“如此练剑数日,杨过提著重剑时手上已不如先前沉重,击刺挥掠,渐感得心应手。同时越来越觉以前所学剑术变化太繁,花巧太多,想到独孤求败在青石上所留‘重剑无锋,大巧不工’八字,其中境界,远胜世上诸般最巧妙的剑招。他一面和神雕搏击,一面凝思剑招的去势回路,但觉越是平平无奇的剑招,对方越难抗御。比如挺剑直刺,只要劲力强猛,威力远比玉女剑法等变幻奇妙的剑招更大。”

所谓“越是平平无奇的剑招,对方越难抗御”事实上正是“无招”境界的自然体现。

玄铁剑重近七十斤如何才能战胜锋利轻盈的锐剑和软剑呢?方法只有一个:提高自身的内力,当我们放弃对高级工具的依赖而改使用简单的工具,自然会去探究事物的本质,而这些本质正是那些高级工具背后所做的事。这样的例子在生活中比比皆是,当我们没有汽车,我们不得不骑车或是走路,无形中腿力得到增强,当我们没有计算器,我们不得不心算或是研究更好的计算方法,脑力因此得到增强。提高软件水平,必须了解软件的本质,探究本质必须亲力亲为,放弃对工具的依赖。

而能对本质掌握多深,就在于能对工具放弃的有多彻底,设想一下假如你没有现成的虚拟机可用,有哪些事需要做(即虚拟机的功能),如何做,如果你能做出来或者至少研究明白,你一定对Java有了更加透彻的理解。

独孤求败就是按照这样的办法,一步步的放弃对工具的依赖“自此精修,渐进于无剑胜有剑之境。”最终达到了“不滞于物,草木竹石均可为剑”的境界。

不依赖于工具并不是说让我们倒退到刀耕火种的时代,当我们可以不依赖于工具,深刻的了解了事物的本质,我们就能更好的驾驭工具,为我所用。

“无剑胜有剑”软件大师之路的一点探索相关推荐

  1. “无剑胜有剑”软件大师之路的一点探索(一)

    @Dreamcode"无剑胜有剑"软件大师之路的一点探索(一) 本人并非什么武林高手,更不是编程大师, 但是我很仰慕他们,希望有朝一日也可以达到他们的境界,我很幸运能够从事自己喜欢 ...

  2. 手中无剑,心中有剑,无剑胜有剑

    剑客是什么,在我看来,无非是一些爱用剑.擅用剑的侠客.剑道是他们生存之道,剑法是他们最强的武技.金庸的笔下,确实有不少这样的剑客.但是,自从"剑魔"独孤求败横空出世之后,其他所有的 ...

  3. "无招胜有招"nbsp;史上最全的互…

    课前秀:三个段子 第一个段子:一个毫无餐饮行业经验的人开了一家餐馆,仅两个月时间,就实现了所在商场餐厅坪效第一名;VC投资6000万,估值4亿元人民币,这家餐厅是雕爷牛腩. 只有12道菜,花了500万 ...

  4. 握剑、挂剑和悬剑——管理的三个境界[转载]

    [http://www.folo.cn/user1/279/archives/2007/44674.html] 在武侠小说里,练剑的第一层境界是"心中有剑,手中有剑,目中有剑",此 ...

  5. 无招胜有招——面向对象设计模式随笔,

    最近在学习面向对象设计模式,GOF的23种设计模式大概看了一遍,简单总结一下,设计模式主要分为三种模式,分别是创建模式,结构模式,行为模式. 回过头想一下具体有哪些模式,在什么情况下用什么设计模式,好 ...

  6. Roblox剑九之剑一

    Roblox剑九之剑一[初生之剑] 初生导航 Roblox剑九之剑一[初生之剑] 前言 一.学习路线 二.平台使用 1.安装配置 1.1 全局开启VPN 1.2 官网注册账号 1.3 编辑器下载与登入 ...

  7. Roblox剑九之剑二

    Roblox剑九之剑二[御码之剑] 御码导航 Roblox剑九之剑二[御码之剑] 前言 一.学习路线 二.Lua基础 1.Lua介绍 1.1 解释型语言 2.Lua特性 3.Lua的数据类型 3.1 ...

  8. Dirty Approach之无招胜有招

    每个网站,几乎都有"新闻"的模块.在中国独有的ICP--Internet Copy and Past--模式下,多数站点也靠"转贴"手段汇集新闻信息.如果说新浪 ...

  9. 【数据湖存储】数据湖的终极奥秘,无招胜有招

    作为海量数据存储与分析的重要承载方式的数据湖,从2011年概念诞生至今,已经发展了9个年头.而数据湖是什么?又能为数字化经济带来什么?<阿里云数据湖存储解决方案蓝皮书>将为您揭开数据湖的终 ...

最新文章

  1. appium IOS真机测试
  2. 【ACM】杭电OJ 2018
  3. 吴恩达新课发布1天,引3万人观看 | 完整PPT
  4. 轻松 [2007年4月22日]
  5. 分步骤学习自动化测试
  6. apt-get常用命令
  7. 查看php-fpm 占用内存情况
  8. oracle po:默认申请分组,PR自动创建PO采购订单:强制按照PR行进行分组
  9. FTL(FreeMarker)基础
  10. createbitmap 旋转90度_解决某些机型调用系统相机照片旋转的问题
  11. 80字符带空格 段错误_简单错误记录
  12. qt之tcp通信,制作简易的仿qq功能
  13. 2022最新酷盒iApp源码V7.8版+内置超多功能
  14. 好玩的抖音、快手无水印视频下载工具
  15. 双绞线的制作T568A线序,T568B线序
  16. 职场生涯的3个步骤--法、儒、道家的管理哲学
  17. Excel2016 折线图
  18. 计算机的应届毕业生简历上可以写什么,计算机应届生简历范文计算机专业应届毕业生简历写.doc...
  19. 如何用LambdaWrapper去实现去重查询
  20. 数码博主自用五款高性价比蓝牙耳机分享,双11不想踩雷选什么蓝牙耳机好?

热门文章

  1. 奥比中光 Astra pro 深度相机在ROS Melodic的调试
  2. 520告白日~情人节特献3D玫瑰花源码
  3. 设置了监视哨的顺序查找算法效率高?你确定吗?
  4. (一)(1)OpenGL入门---Open GL 在 Mac 上的配置
  5. 阿里云AI训练营第五天
  6. 前端每日三问#200501怎样在文本框中禁用中文输入法?
  7. dubbo下Dubbo协议注册中心理解SimpleRegistryService之register,getRegistered,notify方法理解注释
  8. linux vi或者vim编辑器中如何显示行号
  9. 闪光灯slave是什么意思_在单反相机中使用闪光灯中,什么叫光引闪,什么叫2.4g引闪...
  10. python123判断火车票座位_[python篇]自己动手实现火车票中转查询