平日里很少看电视连续剧,因为一连续起来就没完没了。但是也有例外的情况,比方说国内的《亮剑》,八路军又是步枪射击,又是手榴弹攻势,最后刺刀见红,让人很是激情澎湃。还有就是美国的《反恐24小时》,为了看小强jack的精彩表演,甚至可以忍受一年24集,每周一集的煎熬和折磨。小强同志真的是十八般武器,样样精通,一会儿用手枪,一会儿用冲锋枪,还有小手雷,冷冷的匕首,让人不由地感叹,特种兵就是牛啊。
这两部电视剧中,想要解决掉敌人,李云龙也好,杰克鲍尔也罢,**在不同的情况下都会使用不同的武器**。而作为程序员的我们,在想要解决业务需求的时候,手中握有几种武器呢?
**首先我们必须有一种最趁手最熟悉的武器**,有人的是java,有人是vb,还有人是c#等等,这种武器是用来解决大型项目中的问题的,我们用的最多,对其了解最深,也最喜欢使用。但是,仅仅这一种武器是否够用,是否足以搞定客户或者业务部门层出不穷的各种需求呢?一般来说还是可以的,**只不过在特定的情况下,比方说时间上的要求,用户界面友好程度上的要求,或者是某些特定功能上得要求,我们可能会采用其他武器,从而得到更高的效率,更便捷的操作,或者特定的某种功能**。
所以说,手里常备几种武器,还是很有意义的。
拿我自己曾经的经历为例吧。之前曾经在博文中讲述过[一个抽奖软件](http://blog.csdn.net/lingyun2005/archive/2010/01/29/5267887.aspx)的开发过程,代码也一起公布了出来。其实我日常工作中用的最多的是JAva,开发环境是EClipse。那次的任务如果用这种武器开发也是可以的,但需要的时间可能会比较长,而当时业务部门才给了我不到一天的时间,所以最终我选择了VBA这种武器,结果只用了两个多小时就完成了开发和测试,而且业务人员还挺满意,第二天就真的用它抽出了各个奖项。
再举个例子,我们平日里将开发好的程序发布到测试环境需要不少繁琐的环节,一不小心就会忘记一个,然后就会导致发布人员的不满和抱怨,所以,有个小工具来提醒自己,并且将整个流程自动化是非常必要的,但是这个工具需要可以和Windows交互,并且能够模拟键盘和鼠标的操作,当然还需要具备编程语言的特点,另外还有可以很容易地编译成可执行文件独立运行,所以用JAva或是C#都不是非常合适。不过我很幸运,发现了Autoit这个工具,它完全满足我的需要,所以我的武器装备库里面有多了一件。花费了两个多小时,我给自己编写了非常好用的[提醒工具](http://blog.csdn.net/lingyun2005/archive/2010/07/14/5733274.aspx),使用它之后,我近一个月以来都没有在发布环节犯过错误。
所以,我觉得,大家在有空的时候,就应该丰富一下自己的武器装备库,学习更多的语言和工具,那样在面对具体的需求或者任务的时候才能有更开阔的思路,更新奇的想法以及更有效的做法,这样也可以更高质高效地完成任务。
然而,说起来容易做起来难,我们应该怎么做,又应该注意些什么呢?让我来为大家提供一些个人的建议。
选择学习一种武器之前,应该**明确地了解它适用在什么样的情况下**,做什么样的工作最适合。就像我们在电视中看到他们有时用手枪,有时用狙击枪,有时又要用匕首一样。
除此之外,古语有话:尺有所短,寸有所长,在特定的情况下,没有一门语言或者一种工具是完美无缺的,我们还要**了解每种武器的长处和短处**,这样不仅有利于采用最合适的武器,而且还可以让它们彼此之间相互配合,从而达到更好的结果。当初上大学的时候,曾经有段时间在学校的有线中心做视频编辑,那个时候就是用了多种工具,做图的有Photoshop、Photoimpact,做视频的有Premier、我行我速、做3D效果的有3D Max、Cool 3D,总的来说,有些是属于傻瓜型的,只要动动鼠标就可以生成差不多的效果,但是对于细节的处理不是很好,想要做微调的时候,就需要使用比较传统的、笨重的工具,那样做出来的效果才会有专业水准。所以说,**相互配合真的挺重要的**。大家在编程的过程中也一定拥有多种工具,是不是也是不停地在利用彼此之间的配合来提高自己的工作效率了呢?
还有一点想要说明的就是,尽管我们应该拥有多种武器来处理多种不同的情况,但是对于经验不太丰富的同学来说,不要太急于追求手中武器的数量,那就有些舍本求末了,有些时候,武器(或者说工具)只是外在的招式,而我们的编程思想才是内功,只有先把内功练成了,然后随便使用哪种工具,都会发挥出巨大的威力,那个时候就是充实你的武器库的时候了。因此第一步应该是先彻底掌握一门语言,或者一种工具,然后再去触类旁通。
最后想要问问大家,你有几种武器?
[**查看所有“程序员应知”系列文章。**](http://blog.csdn.net/lingyun2005/archive/2010/08/13/5808409.aspx)