程序员应知——你有几种武器

平日里很少看电视连续剧,因为一连续起来就没完没了。但是也有例外的情况,比方说国内的《亮剑》,八路军又是步枪射击,又是手榴弹攻势,最后刺刀见红,让人很是激情澎湃。还有就是美国的《反恐24小时》,为了看小强jack的精彩表演,甚至可以忍受一年24集,每周一集的煎熬和折磨。小强同志真的是十八般武器,样样精通,一会儿用手 枪,一会儿用冲 锋 枪,还有小手 雷,冷冷的匕 首,让人不由地感叹,特种兵就是牛啊。

这两部电视剧中,想要解决掉敌人,李云龙也好,杰克鲍尔也罢,在不同的情况下都会使用不同的武器。而作为程序员的我们,在想要解决业务需求的时候,手中握有几种武器呢?

首先我们必须有一种最趁手最熟悉的武器,有人的是java,有人是vb,还有人是c#等等,这种武器是用来解决大型项目中的问题的,我们用的最多,对其了解最深,也最喜欢使用。但是,仅仅这一种武器是否够用,是否足以搞定客户或者业务部门层出不穷的各种需求呢?一般来说还是可以的,只不过在特定的情况下,比方说时间上的要求,用户界面友好程度上的要求,或者是某些特定功能上得要求,我们可能会采用其他武器,从而得到更高的效率,更便捷的操作,或者特定的某种功能

所以说,手里常备几种武器,还是很有意义的。

拿我自己曾经的经历为例吧。之前曾经在博文中讲述过一个抽奖软件的开发过程,代码也一起公布了出来。其实我日常工作中用的最多的是JAva,开发环境是EClipse。那次的任务如果用这种武器开发也是可以的,但需要的时间可能会比较长,而当时业务部门才给了我不到一天的时间,所以最终我选择了VBA这种武器,结果只用了两个多小时就完成了开发和测试,而且业务人员还挺满意,第二天就真的用它抽出了各个奖项。

再举个例子,我们平日里将开发好的程序发布到测试环境需要不少繁琐的环节,一不小心就会忘记一个,然后就会导致发布人员的不满和抱怨,所以,有个小工具来提醒自己,并且将整个流程自动化是非常必要的,但是这个工具需要可以和Windows交互,并且能够模拟键盘和鼠标的操作,当然还需要具备编程语言的特点,另外还有可以很容易地编译成可执行文件独立运行,所以用JAva或是C#都不是非常合适。不过我很幸运,发现了Autoit这个工具,它完全满足我的需要,所以我的武器装备库里面有多了一件。花费了两个多小时,我给自己编写了非常好用的提醒工具,使用它之后,我近一个月以来都没有在发布环节犯过错误。

所以,我觉得,大家在有空的时候,就应该丰富一下自己的武器装备库,学习更多的语言和工具,那样在面对具体的需求或者任务的时候才能有更开阔的思路,更新奇的想法以及更有效的做法,这样也可以更高质高效地完成任务。

然而,说起来容易做起来难,我们应该怎么做,又应该注意些什么呢?让我来为大家提供一些个人的建议。

选择学习一种武器之前,应该明确地了解它适用在什么样的情况下,做什么样的工作最适合。就像我们在电视中看到他们有时用手 枪,有时用狙 击 枪,有时又要用匕 首一样。

除此之外,古语有话:尺有所短,寸有所长,在特定的情况下,没有一门语言或者一种工具是完美无缺的,我们还要了解每种武器的长处和短处,这样不仅有利于采用最合适的武器,而且还可以让它们彼此之间相互配合,从而达到更好的结果。当初上大学的时候,曾经有段时间在学校的有线中心做视频编辑,那个时候就是用了多种工具,做图的有Photoshop、Photoimpact,做视频的有Premier、我行我速、做3D效果的有3D Max、Cool 3D,总的来说,有些是属于傻瓜型的,只要动动鼠标就可以生成差不多的效果,但是对于细节的处理不是很好,想要做微调的时候,就需要使用比较传统的、笨重的工具,那样做出来的效果才会有专业水准。所以说,相互配合真的挺重要的。大家在编程的过程中也一定拥有多种工具,是不是也是不停地在利用彼此之间的配合来提高自己的工作效率了呢?

还有一点想要说明的就是,尽管我们应该拥有多种武器来处理多种不同的情况,但是对于经验不太丰富的同学来说,不要太急于追求手中武器的数量,那就有些舍本求末了,有些时候,武器(或者说工具)只是外在的招式,而我们的编程思想才是内功,只有先把内功练成了,然后随便使用哪种工具,都会发挥出巨大的威力,那个时候就是充实你的武器库的时候了。因此第一步应该是先彻底掌握一门语言,或者一种工具,然后再去触类旁通。

最后想要问问大家,你有几种武器?

程序员应知——把小事做好

在从事软件开发的这些年中,近期越来越多地听到这样的论点:当前的程序员越来越浮躁。我的感觉也是如此,由于在软件公司中,人才流动特别快,因此很多人的职位也变化的比较快,很可能刚刚工作了三年的程序员,就被冠以项目经理的职位,或者是做过几个项目的人,就成为一家小公司的技术总监、架构师,其实,本身的能力与这个职位真正的要求非常不相配。然而,正是这样的情况更促使了程序员的浮躁心理,或许也可是说是攀比的心态和虚荣心在作怪。

上述情况的直接表现就是,很多程序员在具备了一定的经验之后,就不喜欢做“小事”,这里的小事可能是:

  • 重复性的事情
  • 简单的事情
  • 编写程序之外的事情(比方做报表的模板)

他们喜欢把这种事交给刚进入公司的新人来做,并且会告诉他们,这都是很简单的事儿,你只需要……就可以了。

把这样的工作推出去之后,这些程序员会喜欢做什么呢?可能是:

  • 技术调查研究
  • 新技术的学习
  • 复杂程序的编写
  • 更高层次的技术工作(架构)
  • 管理工作(期望成为项目经理)

尽管这些事儿看起来比“小事儿”更有意义,但我还是要说,作为程序员,不管到了什么时候,都要具备把“小事”做好的能力。拿我自己为例,虽然已经工作了十年,也曾经做过所谓的项目经理,也付出过时间和大家一起研究过架构,但是现在还是回归根本,做一个兢兢业业的程序员,还在第一线奋斗呢,呵呵。也还在做着很多大家认为是“小事”的事情呢。

其实,仔细想一下,想要真正把小事做好并不容易,举个我实际工作中的例子,公司改名,需要将70多个模板中的原公司名修改为现在的公司名称。

这项工作看起来非常简单,不就是打开模板,查找,替换,然后再保存,替换原来的文件,就一切OK了。

但是,问题就在于所有70几个文件要一个不落,而且里面的公司名称的数量也不一定,需要一个不差。并且还需要尽快完成。总的来说,就是既要快,又要准。这样就不是那么容易了。

我的方法是先做一遍,然后仔细从头到尾检查一遍。不要过分相信自己,一定要做检查,这种重复性的工作很难一次完成的。另外,还用Excel做了一个文件列表,没修改完一个,就做上标记,这样可以保证一个不差。

大家可能也看出来了,做这种事情,需要的是什么呢?也比较简单,一是细心,二是耐心。但这正是浮躁的程序员所缺乏的两点。

也会有人说,做小事对我没有什么好处,也不会有什么长进。

如果只是机械地去完成,而不去思考,不采用一些必要的方式来保证做小事的质量和效率,那么真的就不会有什么长进,而且我觉得可能最终的完成质量也不会太高。

其实不管做什么事儿,都需要思考,思考之后,都会有进步,我们可以在做之前,想一下是否存在一些方法能够让我们更快、更高质量地完成任务。很多方法非常简单,但也很有效,关键就在于我们是否能够想到去用。在完成上个任务的过程中,其实首先是要在近千个模板文件中筛选出来那70几个的,如果就直接在原来的文件夹中修改,估计很快就晕倒了,我的做法是先把筛选出来的所有文件copy出来,修改之后在copy回去(当然这里也需要复查,保证复制出来的是所有需要修改的文件,不能多、不能少,更不能错!)

把小事做好的另外一个好处就是,它能够让你赢得他人的信任:一个人能够把很简单、重复性的工作做好,那么就足以委以重任;如果连小事儿都做不好,谁敢把大事儿交给他做啊。如果大家做过管理工作,一定会此会有所感触。

所以,我觉得,不管当前的职位如何,不管从事工作有多少年,当接收一些所谓的“小事”的时候,都要努力做好,而不要觉得与自己的现状不相称,那其实就是浮躁,呵呵……

作者:侯伯薇@大连
出处:http://www.cnblogs.com/houbowei/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/Leo_wl/p/1787665.html