首先这篇文章的背景是2009年1月14日我发布的一篇博文《想要,不一定得到,一定要,则必成功——一封初为程序员充满困惑的大学毕业生的来信以及本人回复》,当时引来了很多朋友的热议。没想到三个月后,小封再次给我来信,谈了这三个月他的一些学习经历和感受。我觉得可以给大家一些启示,所以就放在首页。
再次需要强调,小封在信中多次提到了本人所写的《大话设计模式》,只是因为他是看我的书入门的,所以提到的比较多,加之是给我写信,所以……。因此本文虽有广告之嫌却无广告之意(事实上,《大话》出版一年多,想买的人早已经买了,已经不需要再做什么广告,反而小封要反复阅读才能理解说明《大话》还有很大的改进余地)。请对广告反感的朋友,多从小封的学习态度角度去感受一个初学者的心路旅程,应该会有更多的收获。更何况,我觉得,值得反复阅读的好书很多,无论哪一本,像小封那样的学法,都可以获得长足的进步。
学习成功也许有捷径,比如好的方法,有好的老师,有好的环境,但学习成功更多的是勤奋,而且是超出常人的勤奋(其实是常人目前太不勤奋),只要你每天付出比别人多一些的打游戏、泡吧时间,用不了多久,你的付出就会有量变到质变的飞跃和回报。
小封来信(未做任何修改)
程老师:您好!
还记得我吗?3个月前的小封。
自从那次我看你将我写给你的信放到你的博客中,我看了那么多人的建议和指导后,便下定决心沉下心来好好学习设计模式。
于是在接下来的两个月中,我每天都花至少4个小时看您写的《大话》,看完一个就模仿着自己写代码演练。
23个模式加上4个原则,我是每两天啃一个。并且刚开始根本就不懂,只能是照着原书将代码“复制”一遍并调试通过。
这个过程是那样的漫长和痛苦。
在看到第10个模式的时候,我便想放弃。
可是我又不甘心,成功的希望强烈地支使着我坚定这样一个信念——必须看,必须看完,一定要看完,必须全部看完!
于是我又接着看,可是每一个模式都很精炼,毕竟那是多少个前辈和高手们的经验之精髓啊!我依然无法明白每一个新看的模式。
每一个模式都让我十分痛苦!
但我一直这样坚持着,晚上8点回去,看到12点,第二天早上6点起床继续看2小时,然后上班。
就这样在痛苦的深渊中前行。
终于在某一天一个阳光灿烂的下午,终于全部看完了!
心中窃喜,但又很迷茫。因为23个模式中我只能理解或者记得其中的不到5个。记忆最深的当数单例模式了,因为它最简单。
于是我又想放弃。但是我还是继续回过头来看了第二遍。看第二遍的过程依然是那样痛苦。
因为我还必须重新去理解每一个模式!我重新将23个模式全部敲了一遍代码,并做了笔记。
又一个痛苦的月份在设计模式的苦海中缓慢流逝着!
但是这一次我努力地去理解每一个模式,尽量将每一个模式都理解透彻。
于是我又度过了痛苦难熬的20多天!
当第二个月静悄悄地离我而去的时候,我也终于“大功告成”了,终于将这23个设计模式全部又看了一遍,并且全部理解了。
紧接着,我牺牲了周六和周日这2天的休息时间一气呵成地将这23个设计模式全部自己敲了一遍,这一回我没有照着书本复制,
而是全部靠自己的理解去写。我写了每一个设计模式的原代码,画出其UML类图,同时又将你为每一个模式所精心设计的例子
全部敲了一遍。
当最后那个男人和女人的例子的最后一个代码敲完时,全世界都亮了,都寂静了,一切是那么自然,我看到了大海和蓝天,而
此时它们不再广阔不再高深,我一眼就能射穿宇宙!
接下来,正好我的实习期已过,开始正式参与项目开发。框架是经理打好的,我把框架拿过来一瞧,没想到经理运用了好几个模式,
比如单例,比如模板。而我们要做的就是将那个框架中的核心算法中的一部分细节在子系统中实现即可。
经理的框架中全部是面向接口的,但此时我已不再迷惑为什么要面向接口编程,同时看了经理的框架,我也明白了该如何面向接口
编程。
然后公司有一个项目正好比较急,公司人手不够,于是让我这个C#出身的也加入到那个用JAVA编写代码的项目中去。
我花了一天的时间看了一遍JAVA基础,由于C#与它很像,因此没什么难的。
然后花了两天的时间学习了一下jsp,struts,spring,hibernate,所谓的struts和spring框架也不过如此!
所谓的控制反转,所谓的依赖接口注入,一切只不过在解耦!
如今我感觉自己对面向对象编程的思想已经了解的比较深刻了,剩下的事就是多看看微软的MSDN,多做做项目,努力精通C#。或者
JAVA的WEB部分。
以上是我前3个月的经历,虽然很痛苦,但最后的收获却很丰硕,果实很甜蜜!
但是这很大一部分要归功于程老师您,以及那些给我鼓励给我指导的热心人!
在此我向大家说声“谢谢!”
真的很感谢您!很感谢大家!
以后我会再接再厉,争取先做一名熟练的程序员!
真诚的
小封
09-4-7下午于公司偷偷地写^-^