(一)
从事软件行业工作已经近7年了,实际Java开发也就是近4年.真正从怎么会用Eclipse开始学起. 问过同事一个对象为什么可以几个类共用 ...到现在4年后的今天,也不敢说Java学的有多好,相反觉得有很多东西要去学习. 只想就我个人的一些心得,给初学者一点可资借鉴的意见吧.
今天先说说学习Java的必备条件,
其一,兴趣. "兴趣是最好的老师",很熟也很俗,但却是事实, 没兴趣根本就不可能学好,写程序是个费脑子的事情,进步的唯一办法就是受挫折,想破脑袋而后豁然开朗才真正有实质的进步. 如果你只想学个Hello Word,那又何必学编程呢?
其二,思想, Java编程思想 使我第一次知道了编程需要思想, 多年过去,我个人体会与其说编程思想,还不如说是解决问题的思想; 所以我想要说的思想就是如何解决问题的想法, 不只是编程的问题. 实际工作中, 太多拙劣的代码其实反映是思想的缺失,经常把简单的问题复杂化,或是找不到问题的关键所在。这些都不是编程的问题,是广义的思想的问题,所以有人说:“编 程时聪明者的游戏”。
其三,追求卓越的精神,无论何时,总是用自己能想到的最好的办法去解决问题,总是试图改进自己以前的想法。程序员是一个职业,是一个谋生的手段,但是要把 这份职业做好,只是向老板交差是不行的,这样对的住老板,但是对不住自己,一段段垃圾代码正象征着你不断地退步,不只是技术,更是思想;不断的追求卓越, 接力想最好的办法。
其四,求根问底的精神。知道这样可以,也要知道为什么这样可以,如果确实没办法搞清楚,记下一个问号,也许某天当你学了更多东西后,突然明白了。拒绝浅尝 辄止,前面已经说了,挫折是进步的唯一最好的途径,略过了挫折也就丢失了更进一步的机会。新来一个兄弟爱抱怨程序看不懂,其原因是程序写的太烂;程序烂不 烂暂且不说,但是程序烂与不烂都不是你看不懂理由;烂点就花点时间,多调试,可以运行的代码都是可以看懂的;我个人觉得从烂程序中受益匪浅,这么烂的我都 看得懂,还怕不烂的吗?搞清楚烂在哪里,并把它改进一下,收获时很大的。
其五,虚心。不要轻易说这个很简单,你这样不对。但是如果你胸有成竹,请勇敢的说出口。虚心的去学习,小心的探索。也许从别人的错误中,你会得到某些顿悟般的启示。
其他,忌好高骛远,忌舍本逐末。
(二)
前面说过学习java的必备条件,或是说学习编程的必备条件,今天就把我个人的学习历程列出来与大家分享。
推荐入门书,Think in java,就是Java编程思想。如果英文好的话,尽量看英文的,因为再怎么厉害的人,由于文化差异,不可能完全能表达作者的那个“味”。就“面向对象” 这个概率来说,英文其实很好理解,可这中文翻译却很让人糊涂,而且你还真找不到更好的翻译办法。所以看英文书,最好看原版,能很好的体会作者的意境。有人 说这本书入门太难,我不这么认为,相反它只是把每个知识点都说得很透彻,不是要人死记硬背,而是从道理上说透,比如为什么入口的main方法要 public,要static.
有书了,我们怎么学习呢?先讲学习内容。
我觉得有其他程序语言基础的,可以把程序结构那章略过,基本数据类型也不要花主要功夫。重要是讲类,接口,重载,覆盖,异常,Collection的那几章,然后是线程,内部类这部分可以等有一定基础了再看也行,开始你可能根本不知道为什么要用它,所以也不会用。还有就是IO, 我觉得到不用花很多时间,大致先了解就好了。
就学习方法而言,书上的例子是要看的,而且要亲自敲到电脑上调试下,光看书只能是半生不熟,似懂非懂的。有问题随时用笔记下来,并在以后的学习中试图找到答案。
学习的过程中,不要去学习什么流行的框架怎么用,如struts,spring等,先学好基础再说,不要好高骛远。然后可以自己想个小玩意做做,练练手。 比如双机的聊天工具,扩张成客户端服务器模式啦。个人觉得不要急于上手Web程序,它可能会让你忽略了基础的学习与掌握,甚至写程序的兴趣。
等自觉学的差不多了,再把书从头过一遍,以前理解的也许有更多感悟,以前不懂的,说不定已经搞清楚了。书读百遍,其意自现。
有空到论坛上别人都什么问题,试图解决下。碰到问题google下,不要轻易发问,先试图自己想办法解决问题。
以上是我个人一点感受,错误之处敬请批评指正。另外Think in java目前最新的是第四版,在网上可以找到pdf格式的电子版。各位如果需要请留下电子邮箱。
(三)
副标题, 积极主动地学习。 刚开始工作那年,公司培训说“吃亏就是占便宜”,“比顾客要求的做的更好”,当时觉得纯属愚人思想。但这两句话确实对我影响深远,因为这两句“愚人”的言论,我收获了很多。 为什么要吃亏呢?老板给多少钱我就做多少事!似乎很有道理,但是在同样的时间内你做了较差的事情,就是在浪费自己的时间。同样是8个小时,我为老板把事情做到最好,老板确实为此获得了好处,但是你自己也充分利用了自己的时间。所以我说“做事就要做好,跟别人给你多少钱没有关系;觉得钱少不值得,就直接不要做;既然做就要尽心。”可能还有人不同意,说我可以节约出上班时间尽心作自己的事情,不也是进步了吗?这其实有两个误区,第一,违法纪律的事情不要做,就算做估计也有点提心吊胆,要防着领导冷不防站在你背后,试想这样的紧张状态下,你能很好的发挥自己吗?第二,自己的项目由于没有任何实质的压力,或说没有被检验的压力,往往多缺斤少两,或是进展缓慢,不具备很好的持续性。所以请用公司的项目练手就很好,不要怕谁占了你便宜;说不定领导看你做的好,还奖你点钱,也算是意外之财。
说个我自己的事情,由于本人学历不高,也不是什么名校毕业,一个让公司为难的意外我做的个组长。然后在相当一段长时间内,一个做事情比我少,责任比我 轻,代码质量比我差很多的下属工资比我高。几年过去了,我也一直位置上努力着,学习着,终于超越了他一点点。这里我并不是想说我不争待遇,多么假清高,因 为我一直都在学习,既然钱争不到,就争点能力吧,能力总是永远用得上的,还好最后待遇终于有了点小小进步。
为什么要比顾客要求的做的更好?谁是顾客?“下一站就是顾客。”所以顾客是你的邮件接受者,是你的上司,也是你的下属,还有QA的同志们,一切跟你有关联 的人其实都是你的顾客。我想说还有一个顾客,这个顾客就是你自己,不断地做超出你预期的事情,不断地超越昨天的自我;多研究下开源项目的代码,注意我说的 是看源码,不是学怎么配置使用;这个过程有时候很痛苦,看不懂啊,但是一旦看懂了,你领悟的别人编程的思想,解决问题的思路,在你今后的工作你也会不经意 的用上,而且你看到很好的代码,就会反感自己曾经认为很好现在看来是垃圾的代码。你看的源码越多,看更多其他的代码越简单,因为好的程序员总是对好的代码 有比较一致的看法,所以他们解决特定问题都趋向于某总同样的模式,就是所谓的设计模式。所以不仅要通过严格要求自己及,还要多多通过学习别人的经验来丰富 自己。
最后该篇以那句总被忘记、却在失败检讨中容易想起的名言作结。“书山有路勤为径,学海无涯苦作舟。”
(拾遗)
学习最大的天敌就是忘记,所以我想把我这几年的学习的东西,一点一点拾起来,算是复习,主要是对Java基础知识再回首,包括常用设计模式再内。具体计划大致如下: 第一阶段,以Thinking in java作为复习教材,一章一章的过,包括部分原文转载,然后翻译,写下自己的心得。 第二阶段,找一个自己完全全新开源项目,进行源代码分析学习,一步一步写下学习笔记,也同时跟大伙交流心得。具体项目现在还没想,不能太大的,也不能太微小的,找个比较流行的吧。 这个过程可能历时会比较长,也不知道是否能坚持下来。无论如何,一步一步来吧。
转载于:https://my.oschina.net/u/557781/blog/58271