引言:
本欲写一篇文章将这几年从事网络安全行业所得的一些关于技术上的心得与大家分享,后经思考,发现如将此些工作心得写与大家,可能会对大家短期有甚帮助,但如欲对大家的长期技术学习无甚益处,故整理思路后,写出以下一篇关于我是如何学习计算机技术的文章与大家讨论,此中没有多少牵涉到某些技术如何实现的细节,大家如需了解某些详细的技术实现细节问题,可发邮件于我,或在BLOG回贴,我会尽我能力为大家解答。
以下文章中可能会有不足之处,或片面言论,亦请大家批评指出,希大家共同进步。J
----------------------------------------------------------------------------------------------------------------------
计算机技术是一门日新月异的技术,每一分,每一秒,都在不断的发展、进步,而我现在所从事的网络安全,更是在IT行业中技术含量最高的行业,在这种形势下,如何能快速的掌握涌现的各种新技术、熟练使用各种最新的软件工具、熟练调试最新的网络设备更是迫在眉捷的事,我个人从事IT工作已有8年,从事网络安全工作亦有4年左右时间,在此期间,亦有一些关于工作上的心得及学习的心得,在此,希望能与各位朋友分享,其中如有不到或错误之处,亦请大家批评指正。
学习计算机技术,有两个方面非常值得我们大家注意:
第一个方面,就是基础知识理论,例如各种硬件系统的工作原理、各种OS的运行机制、各种算法,而这些知识相信大家在大学时期都已经在书本上学习过,看到这里,大家心里可能会有这样一个想法,就是好像这些知识在我们现在的工作中好像真正的用处不大,因为即使不懂数据原理,不懂windows的消息机制,但我们照样可以写程序,把windows玩的很熟,其实不然,当我们不满足于以上这些知识,而想更进一步学习时,我们就会感觉非常困难,因为我们不懂windows的消息机制,而只会用一些非常傻瓜化的OOB开发工具的话(VB、DELPHI),那我们永远只能停留在一些表面的次层上,我们无法做一些更深入的研究,例如如何让我们的程序能更深入windows系统内部,如何让我们的程序能访问系统的硬件内部,而这些用那些简单的OOB工具是非常难以实现的(注意是“难以”),以上只是我举的一个简单的例子,相反,在linux下,因为linux是源码开放软件,在这些平台上进行学习的话,可以令到我们迅速的得到提高,因为通过查看源码,并通过阅读一些比较专业的书籍,可以令我们迅速了解到linux的实际运行工作机制,而这些在windows下是没法做到的。
在此,我想强调的是,如果我们想令到自己的计算机水平得到稳步发展的话,打好基础是非常必要的,虽然阅读这些理论性的书籍,是非常令人枯燥的事,而且有时我们只读一遍的话,可能还是不能理解,这时二次的阅读,会更令人恐惧,我个人的经验就是,阅读这些书籍时,一次读懂是不大现实,碰到不懂的,先跳过去,然后通过请教他人或自己上网查阅资料解决,(强烈建议自己查阅资料解决,可以试着访问一些BBS论坛,你所遇到的问题基本都能得到解决)我个人就曾经对着一本介绍MFC的书籍硬是看了半年,才逐渐了解MFC的整体框架、工作原理,而之后,每看一次,都感觉有一分长进。J这正应了一句老话,书读百遍,其义自通。
这部分,我想给大家一个建议,从我个人的学习经历看,我非常主张大家在学习这些理论知识时碰到问题,尽量自己解决,因为只有自己花了心血去查资料得来的东西,才会印象深刻,而且可以培养大家自学的能力,如果只是想依靠别人来带你,来教你的话,那大家的学习能力也将很难得到提高。
第二个方面,就是自己实际动手实践。谈到这个方面,我个人感触良多,刚参加工作时,因为我的计算机基础理论知识基本上是一片空白,所以什么东西,都是靠自己硬是瞎摸瞎碰学习出来的,打个比方,那时候,我修理计算机也许很快,但如果人家问我,到底是哪里出了什么问题?为什么会出现问题?我就讲不上来了,因为我不了解计算机的真正工作原理,只会凭一些以前修理电脑时的经验来做事,虽然这件事主要反映的是缺少理论基础知识的问题,但同时也说明了多动手、多实践所带来的好处,在这儿,我顺便再举一个例子,我曾经看到过有些搞技术的人,非常看轻安装win95/98等操作系统,但我个人觉得,无论做什么技术活,都有它值得我们去做,去学习的方面,也许大家会讲,安装win95/98还有什么困难的吗,其实不然,在网上,关于讨论win95/98等的安装,有很多深入的研究,例如如何批量安装,如何用win95/98实现无盘安装等等,而这些,试问有谁能真正的了解,真正的动手实现呢,所以,不要看轻任何一件技术活,是我们必须首先学会的事,即使编写一个bat文件,也有值得我们去花心思的地方。
同样,在工作中,无论是我们安装OS,还是调试网络服务,亦或编写各种应用程序,都必须自己亲手去做,亲手去编,我在2001年3月时,对使用VC编写程序还是感到非常恐惧,(我以前一直是用VB的)但在进入公司参与项目开发后,我每天坐在电脑前,就是拼命的写代码,试着使用各种控件(类库),当中走了许多弯路,过了两个星期后,我感觉也能渐渐为项目小组做一些事了,当时的感觉非常兴奋,(当然,前提是我已经啃了半年的VC书籍J)接下来的工作中,安排给我的是界面开发,因为以前从没做过同类工作,当时在网上下载了好多界面类库,一个一个的试用,最后终于采用了一种非常方便的类库圆满完成了任务,这之中,我每天接触电脑都在12小时以上,基本上就是一边在查资料,一边在试验程序,任务完成后,因为所有的事都是我一个人对着电脑查资料,一个人动手编出来的,所以感觉收获非常大,感觉个人技术成长很快。在这中间,实际动手实践令我学到了许许多多平时书本上学不到的东西。
以下是我在安全公司工作4年以来的一些想法,可能其中有不对的地方,大家可讨论之。
在刚进入公司时,曾一段时间,我很狂热黑客技术,整天就在想着如何黑掉别人的机器,但后来经过一段时期后,发现这样的学习毫无意义,整天就在拿着一些别人已经编好的软件工具在做一些重复性的工作,我觉的这就是一个误区,我们不能因为自己的兴趣爱好,或其它一些个人的原因,而做一些对公司发展毫无意义的事,具体来讲,我个人认为,我们的学习方向应该是配合公司的发展方向而定,这一点对我们开展工作非常有帮助,这样,在工作一段时期后,你会因为你能非常愉快的胜任工作而渐渐的对自己的工作而热爱,甚至会由此而转变你的兴趣,渐渐走入一个良性的循环。
多谢阅读此杂文!
注:原文写于2002年7月,于2004年10月重新修订后发布.