如何积累经验

 

     不要晕,也不要倒,其实我们有很多办法增加自己的经验。围绕磨盘转了一辈子的骡子并不是一头有经验的骡子,将木棍捅到蚁窝中来捕食蚂蚁的熊也没有太多经验,因为它们做那些事情不是出于被指使就是出于一种本能,很少去想是不是可以做得更好,而我们的祖先就做到了,所以今天我们成了世界的主宰。

说到这里,也就说出了我的第一个答案: 技术的深度来自于总结 。不管是学习还是做项目,不管是自己编写的代码还是别人的代码,我们都尽量学会分析总结,首先分析一下那些地方做得好,那些地方做得不好,做得好是因为什么方面的原因?安全、高效亦或者是其它?这种好的做法今后可以用在某些场景下?有没有可能存在比这些你认为做得好的方法还要好的方法?对于那些做得不好地方,又该如何去改进?特别是以前自己所做的项目一定不要做完了就算完了,有时间一定要拿出来经常看,看看最近所学的知识有没有可以用于改进这些项目的。

也许有些朋友特别是初学编程的朋友会说自己以前根本就没有做过真实的项目,缺乏实战机会。光凭自己所做的工作上所做的一些项目可能对于个人提高不是很快,会受到公司业务的限制,项目类型不是太多,所需要用到的知识自然也不会是太多;或者在一些大公司里面,由于在这里一个人一个坑,每个人的职责单一,一个项目做上一年你可能仅对自己所负责的模块比较熟悉,对于项目组其他成员的模块不熟悉,时间长了之后就会感觉自己进步很慢,这种感觉我以前也有过。

在当时我做了几件事情,我现在总结起来觉得比较有用:

一是通过论坛、博客了解别人在做项目中使用了哪些技术。多次被提及的多半就是目前大家比较关心的或者流行的,如果自己的项目中没有涉及到这些的话,多了解一下这方面的讨论或者文章看是否满足在自己项目中使用,如果不能的话(比如自己目前是在VS2005 下做开发,而别人经常谈论的是 VS2008 下的开发)那么就尝试在下班后或者工作之余动手实践一下。

二是总结自己以前所做的项目。很多人在做项目时键盘上最光亮的键就是Ctrl 、 C 及 V (因为最经常的操作是 Ctrl+C 和 Ctrl+V ),可能在当时我们这么做有一定的客观原因,比如当时时间紧为了完成任务不得不那么做,这个可以理解,但是不应该在做完之后就将它丢到一边了,等到下次再用的时候依然又是 Ctrl+C 和 Ctrl+V ——这么下去,做多少年都不会提高的(除了提高了使用 Ctrl+C 和 Ctrl+V 的熟练度之外),我就有这么一个习惯,保持着几年前甚至刚参加工作时所做项目及学习用的代码,有时间我还会拿出来看,看看对于以前那个时候做的东西现在可不可以改动得更好,直到经过几次之后确实不能再改了才放弃。

三是总结别人的项目。现在的网络这么发达,可以很方便地从网上找到一些项目的需求文档、设计文档、源代码等,对于一些比较有名的开源项目甚至你还可以找到有高人对这些项目的源代码的分析。接触过的项目多了,你就会发现有很多功能和你以前所做的项目中要实现的功能相似,那么就把你的代码和别人的比较一下吧,有比较就有鉴别,有比较就有高下之分,你就会看到完成同样或类似的功能,别人的做法就比自己好,自己好好想想好在哪里,以后是不是可以借鉴别人的思路。

四是多关注一些基础的东西。武侠小说里正派武功高手在成为高手之前总会被要求长时间练基本功,基本功打好了就很容易打通任督二脉,然后很快就可以练就一身过人本领,这样对自身是没有伤害的,而邪门武功大多不要求武术根基很快也能练成,这样即使练成了绝世武功也会容易对身体造成伤害,还可能走火入魔,著名的《避邪剑谱》及《葵花宝典》都是这方面的例子。很多半路出家的以及一些从培训学校出来的学生大多就是基本功不好,我自己就是半路出家的,在大学里学过一学期的C 语言之后就靠自己自学走上程序员的道路,很长一段时间对数据库的使用仅限于使用 SELECT 、 UPDATE 、 DELETE 、 INSERT 、 ORDER BY 、 COUNT ,在看别人项目源代码时经常看到别人项目中复杂的 SQL 语句,感觉自己有必要加强基础,于是花了很多时间去系统学习了数据库的基础知识。

五是多动手实践。“纸上得来终觉浅,须知此事要躬行”,如果仅仅是看别人的代码,看书可能就在看书的时候有感觉,合上书之后就什么也不记得了。所以还需要大量实践,有一定基础之后系统的实践比单独联系一个知识点要强得多,比如找一个自己觉得不错的BBS 或者 CMS 之类的系统,为防止自己忍不住看它的源代码所以这些项目的语言尽量不要选用 ASP.NET 的,然后要求自己实现一套和它相似度很高系统出来。在这里注意几点,一是在选项目时尽量量力而行,不要一上来就想模仿一个庞大的系统,庞大的系统涉及到知识面很广,知识点要求也比较深,工作量也比较大,一个人可能费时较长还没有看到结果就会产生挫折感,就会放弃,所以可以先模仿小系统然后再模仿大系统;在编程语言方面可以先选择比较容易部署的编程语言开发的,比如 ASP , ASP 的运行环境在 Windows 平台上的 IIS 中部署起来相对较为简单(在 IIS7 之后稍微麻烦一点),等熟练之后可以模仿 JSP 或者 PHP 开发的系统,这些系统的部署相对较为复杂一些,可能数据库会采用 MySQL ,而 Web 服务器可能会是 Tomcat 或者 Apache (它们也可以采用 ISAPI 的方式集成到 IIS 中)。在模仿的过程中会用到 HTML 、 CSS 、 JavaScript 及 SQL 等方面的知识,有的时候还需要了解别人的设计思路,对于自己的提高是想到有效的。除此之外,在提高 ASP.NET 编程能力的同时也顺便了解了其它编程平台和数据库,扩大了视野。

好了,在最后我回答一下你在邮件中提高的几个想法,关于你在邮件中提高没有环境和没有高手带的情况,我想在上面提高的五点中的第五点可以回答你的这个想法,有环境有高手带固然是好,但是没有环境没有高手带我们也是可以通过其它办法来解决的,比如看高手所做的项目并且模仿它,这样也可以达到目的。和高手合作对自身的能力要求很大,大家知道微软、Google 和 IBM 中高手多,在这样的公司里进步会很快,但是没有一定的能力是进不去的,所以在没有机会进去之前我们不妨采取上面的办法——实际上也有很多在民间的高手,他们并不在知名大公司,但是他们一样可以做到很好。

除了上面的做法之外,其实还有一些手头可用的比较方面的资源,比如MSDN WebCast 上面就有微软推出的大量免费视频,我们可以挑选一些下载下来看,在早年的时候我就从上面学到了不少东西,你在邮件中提高的 ASP.NET MVC 在上面就有系列讲座,还有比较热门的 Silverlight 和 Linq 等,只不过不要贪多贪全,千辛万苦全部下载到硬盘里然后一个不看,只看看自己关注的部分,实际上里面的视频大部分是 Level200 的,也就是针对普通开发人员的,比较容易理解。等你有一定能力之后就可以选择不看或者有选择地看了。

除此之外,我不知道你安装Visual Studio 的时候有没有安装随光盘自带的 MSDN ,安装完 Visual Studio 开发工具之后就会提示是否安装它,我建议将开发中会使用到的部分安装了(因为涉及到的知识很多,没有必要全部安装,有些可以不必安装),这样遇到问题之后即使不能上网也能有有地方查资料。在 MSDN 帮助中有 .NET Framework 种每一个类的介绍,包括类的说明、构造函数、方法、字段、属性、显示接口实现、请参见等。对于 VS 开发人员来说它的作用相当于机器猫的口袋,需要的大部分都能从这个里面找到。像你提到的序列化以及一些经常被提到的正则表达式、 Web Service 等也可以在 MSDN 中找到,有时间的时候可以看看,在有些地方还有一些提高程序性能或者安全性的建议。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhoufoxcn/archive/2010/06/07/5652166.aspx

posted on 2010-06-15 17:22  Pro.Charm  阅读(282)  评论(0编辑  收藏  举报

导航