平日里很少看電視連續劇,因為一連續起來就沒完沒了。但是也有例外的情況,比方說國內的《亮劍》,八路軍又是步槍射擊,又是手榴彈攻勢,最后刺刀見紅,讓人很是激情澎湃。還有就是美國的《反恐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)