这周工作有点儿累了,写个文章放松一下,就写个最最原始的时候,我是如何学习一门开发语言的步骤。
1. 我往往是被动学习,就是社会上流行什么了,我就学什么,因为我外语不太好,不大知道前沿的技术,也看不懂前沿的技术资料,等社会上发起一股什么技术的潮流,我就学什么。
2. 当然我们生活的年代不同,学习的途径也不同,我按我当时的方式来讲吧,先会到图书馆就去找翻翻书,哪个本子都会翻翻看,然后哪个图解多,我就会有买哪个的意向,然后一般会选择最薄的一本,因为往往最薄的是最便宜的,最好入门的,而且图解多,看起来也不累,还可以有个参考,就算没电脑在旁边,也会大致看明白啥意思,其次我一般喜欢台湾人写的书,几乎全是图,没几个文字,而且学习的效果往往很强,再其次,我一般购买清华大学出版社出的书,相对质量的确是好一些,其次是人民邮电出版社的,现在情况变成什么了,我倒是不是很清楚。
3. 我比较讨厌看国内的人写的书,就怕你不懂,写了很多很多的文字描述,看着也不好懂,插图又很少,基本上是为了凑文字数量一样的感觉,给我明显提高的书本,大多是台湾版,例如VFP,HTML,SQLServer 都是看了台湾人写的书,甚至插图都是繁体字的,书也是繁体字的,他们写技术书籍的确有一手。
4. 我学习会有一个目标,若是所有的都学习,会很累,而且效果会很低很差,懂了很多很多,也不会做项目,最原始的学习方法是,把书上的例子从头到尾都做一遍,边看边学,边做,这是属于无目的的学习,一般会有是前2-3年,为了提高自己的内功,会狂学,希望以后能派上用处或者丰富一下自己的知识面,接下来几年就不会这样狂学了。
5. 学习也会很容易造成原地踏步的情况,因为你学前几本书的时候,学到的东西很多,但是后面看的很多书,内容都类似,就算看了100本书,也会很多内容是相同的,这时候自己要学会识别那些是新技术,那些是重复的内容,到后来也会有可能变成,看了100本书,但是都没仔细看,导致很多细节上的差别也没区分好,该学的都没学上,所以需要自己把握好。
6. 我一般会把自己想象成一个大老板,然后雇佣了N个人干活,然后他们每天干多少,就给多少钱,然后我要记录他们的工钱,甚至我要雇佣一个人,记录这些工钱,然后,我需要月底给他们发工资,我需要把它们的工资单都打印出来,自己也要打印出来详细的账目,我就围绕着这个心目中的想象去学开发软件,这样我学习的目的很强,例如,我必须要实现数据的采集工作,修改工作,统计工作,报表功能,权限问题,那我学习也是为了解决这个系统里的那些功能如何解决上,这样进展会非常快,学习的目的性也很强,当时是C\S的,那你现在学习,可以在B\S下实现这些功能,这样可以很容易加快学习的速度,有目的有计划的学习知识,先把最需要学的学好,然后在学那些将来可能对你派上用处的知识点,而且这么一折腾自己的动手能力也会变得很强一些。
7. 书都自己购买,太费钱了,所以我一般会像学校的图书馆借书看,一次借个30本,曾经在学校当老师,自己也有借书证,现在老婆也在大学当老师,所以我去图书馆借书,也经常有,这几年比较少借了,老婆经常发几千元的购书卡,我就会每年2-3次逛书店,把自己喜欢看的书,若碰上曾经喜欢看的书,也会购买回来,放在家里,买书上我前后投资了几万有可能的,我上大学时,我爸爸教我一句:“我们家虽然没钱,但是你买书可以放心买,买多少都没关系”,有这句话,我就真的经常买书,上大学时,我购买的编程书,估计也是全班里最多的,当然有些书,是多余了,例如c,c++的宝典都没怎么看,当时真好好学了,现在我也不至于在社会底层混了。
8. 参加工作后,我的学习方式又有些变化,我经常看网上的技术文章,相对少看电影、娱乐新闻,看技术文章的时候心里要想,我要成为别人羡慕的“高手,技术强了,赚的钱也多啊”,这样就很有兴趣看技术文章了,以前还看过微软的新闻组,经常看别人的问题。老外的新闻组也看看,不过相对来说,人气比较低迷,更新不是很快,现在基本上不去了。还试着去学微软的视频什么的,但是总的来说,不是很顺利,要么技术讲得太浅显,要么都是纸上谈兵,没什么实际的收获,要么视频下起来麻烦,要么语速慢得要命,总的来说,也算是失败了。
9. 我心目中的老板系统搞好了后,我就会想优化,美化,性能测试,例如输入个几十万条数据,看看功能是否稳定,当然自己会写个数据库脚本产生几十万条记录,人工输入,那要输入死了,这样我可以提高数据库脚本的水平,也可以提高我程序优化,语法优化的能力,再接着,我会优化我的架构,分层啊,接口啊,面向服务的理念啊,抽取一些公用的函数,等等工作,到了这个层次,水平就比较高了,打工混混饭吃是没问题了,再考虑考虑操作是否方便,是否人性化,是否可以用最短的时间把输入输入好,把统计计算好,数据库是否优化好,能到这个程度了,混个4-5千的工资,就不难了。
10. 这些都达到了,我会接着学习,用第三方控件、用ajax, NHibernate、ibatis、等等,还会去试着读比较有名的开源架构、学习学习老外怎么写的,还会去看看老外的技术网站,例如当时我看了一年 http://www.codeproject.com/ 看看老外都实现了什么功能,是不是在我工作上能派上用处。
11. 应付实际工作都没问题了,我会试着去改变别人,改变别人的理念,改变别人的习惯,去努力做规范统一全公司,甚至全国的开发,努力成为有自己的理念,有追求的人,当然这时候也会提炼出自己的产品,为实现自己理念做精心做出来的成果,会考虑如何赚大钱,给很多人提供服务的事情。
12. 生意不是天天有,水平也到了一个境界了,就去看看别人的东西,留意一下新的技术趋势,例如WPF,WCF,WF学习学习,别被淘汰了,或者跟不上时代的脚步了,再买买书,看看资料,做做练习,争取都用好新技术,有个良好的表现等待好的机会,露一手,顺便看看类似老赵这样的人物写的技术文章,看看能否提高自己的性能、效率,或者有什么漏洞等等,说实话也不怎么看,信息化的本质,不是靠这些小伎俩的,要靠整体的定位,整体的分工合作,整体的架构。随便写写,若把老赵得罪了,别生气,我也是随便说说,大人不计小人过嘛。
13. 技术到了一定的层次,认识后,发现自己擅长的只是很小的一方面,很多方面都需要与别人合作,例如我擅长的也不是很多,前台展现等我是无法做好的,就需要寻觅前台展现方面的顶尖高手合作,甚至是外包给这方面的顶尖人才去设计规划,自己做好自己擅长的一部分就可以了。不想花钱,又想把事情做好,不容易,甚至是不可能,因为自己没有美术设计方面的天赋,打死我,也做不出漂亮的界面,只能做得功能强大是有希望的。
想起来一件有意思的事情,上大学时,到了晚上11点就关灯,我是很喜欢看书,就跑到男厕所去看看技术方面的书籍,唉想想那时候的确是苦了一点儿,不过没有当时的努力,怎么可能一步就有今天的我呢,虽然比上不足,比下还是蛮有余的,知足常乐,何必跟自己过不去呢。
将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。