本帖最后由 pasingo 于 2017-12-21 16:48 编辑
列夫托尔斯泰:
只有一个时间是重要的,那就是现在!它所以重要,就是因为它是我们有所作为的时间。
如果告诉你如何学习数学,或许我还有一丝心得;如果告诉你如何学习物理,我也有所点握,因为大学4年算是认认真真学习这些专业课,但是如果要让我告诉你如何学习java语言,我就只能说对不起,我真的不知道,因为我还没有很确定的把握。很多路本来没有,走的人多了就形成路,在学习java编程语言的这条路上我步履蹒跚地行走了3个多月,总觉得还刚刚开始,但是这个过程中,我一直思考一个问题:如何学习java编程语言,我能够达到哪种程度,我将来用它来解决什么问题……。从刚开始沿用过去学习其他学科的方法来学习java,到目前有一丝自己的体会与领悟,我已经尽心尽力。三人行,必有我师焉,更何况周围有那么多伙伴在此征途,思想的分享能够更好地帮助彼此达到目标。
在未接触java语言之前,我是想学c语言(然而杭州校区没有这门课程),但在踏入此路后:我很惊异,因为发现java编程语言的思想跟哲学家来思考这个世界的方式有很多惊人的相似(个人甚至觉得哲学专业很适合学习面向对象语言),如果你愿意尝试去阅读柏拉图以及亚里士多德(逻辑学)的书籍,就会看到java编程语言其实就是他们思想的另一种表现形式,更是现代逻辑学在计算机领域的分支,请原谅我在最开始要提到这部分内容,我想表明java编程思想是古人世界观在当今世代的绵延,与其他学科有深层的联系,它是多层次的。Java编程语言是描述世界的一种媒介,你需要改变旧有的思维,以新的视角来看待java语言,学会调整自己的学习方法。
一、建立知识框架
一个人生活在这个世界,随着认知的深入,会形成一套自己的世界观,人生观与价值观,并且这些观念支配着你日常的言谈与行为,我们也可以透过外在的言谈与行为间接地认识他人与自己,之所以谈到这些,是因为我们都有各自的知识框架,不过它是隐形的,如果你深入思考就会发现它的存在,同样当我们接触Java编程语言时,也需要建立一个知识框架,它有助于我们稳固而深入地认识Java。
在最开始学习java编程语言的阶段(包括基础班以及就业班第一阶段),主要是认识java编程语言的一些基本特性以及高级特性,这个阶段的主要目的是让我们去熟悉java编程语言,通过概念以及练习等方式来认识它,包括它包含哪一些数据类型,包含哪一些运算符,它的执行流程是什么?每个权限修饰符的作用是用来做什么等等,就如刚学字一样,需要一步一步来,这一阶段的基础牢固与否决定了后期的学习是否顺利,如何检查这一阶段的学习成果呢?那就是你的头脑是否已经建立一个基本的知识框架(java语言),能够用自己的语言来把java语言的基本特性以及高级特性写下来,不需要把全部的知识点记住,但是需要知道它每一特性包含了哪一些基本内容。
我个人觉得随着学习的深入,后期的内容应该越来越容易应对,后期新的知识固然越来越多,但总是跳不出它的范围。如果后期的内容还是让你疲于应对,就需要思考自己基础阶段哪一部分没有掌握牢固,目前学习方式是否有问题。人在不同阶段应该有弹性地调整自己的学习方法,包括听课方式,课下练习方式,如果还是采用基础阶段一个知识点一个知识点地记忆,那么过几天就会忘记前面所学习的,如果你已经建立一个知识框架,尽管它很粗糙,但是能帮助你站在全局图景来对待每一天的新内容,你会逐渐发现后期内容其实并不多,为何这样说呢?因为后期更多是学习一些很成熟的框架,它包含了其他人大量的思考以及设计,每一个元素以及每一个步骤做过优化,你不应该盯着一个点,而是需要看面。学习java语言应该像是串一条珍珠项链,寻找每个珍珠与其他珍珠的联系,可以用一位科学哲学家休厄尔所用的比喻来理解,他说:“我们必须找到合适的线索,将所有观察到的事实,仿佛用线串珍珠一般联系起来。这样,真相就会向我们显现”。走出基础阶段,跨入web阶段,你需要只是把新的知识填充到知识框架的某一节点,不需要再花费时间去看之前的内容。这样的好处会随着知识内容的增加越发凸显,一方面不会因为大量新知识点而觉凌乱,另一方面随着学习的深入,知识框架背后的真相越发显明。如果程度足够,我想可以尝试阅读深入理解java虚拟机,java语言规范所形成的文件格式是“x.java”格式的文件,经javac编译产生“x.class”文件,虽然每个人机器的硬件或者操作系统各有差异,但是不同人电脑上的java虚拟机可以把“x.class”编译成各个机型对应的汇编指令文件,知识体系的建立帮助你理解java语言规范背后的原理,真相就这样一层一层被揭开,你会发现你未来需要补充哪一些知识,今后的方向是如何?
同样在学习知识,有些人甚觉枯燥,有些人兴趣盎然并且随着学习的深入越发激起热情来探索其中的奥秘,这根本的原因是知识背后的真相,或者说是美,正在揭开。有的人看到了美,有的人还依然眼盲,但不管如何,建立知识框架正是理解奥妙的第一步。
二、如何听课
我个人认为听课应该包含三个阶段。在第一阶段,听课的重点是对知识的记忆以及理解,这个阶段如同刚识字的学生一样需要一步一步地走;第二阶段需要集中在讲师的思路,不再拘泥于知识点的记忆与理解,有独立的思考,如果上课遗漏部分知识点,不要把思路停下来,跟上老师的步调,下课自己可以去查阅资料补充,但是如果在课程思路没有跟上老师的思路,你就需要花费不必要的时间重新去看视频,弄得精力疲乏。第三阶段的重点是批判地听课,你可以慢慢地尝试在课程内容的基础上进行扩展,比如:你可以边听课,边思考讲师下一步应该要讲什么内容,我自己所想的是否跟他一致,如果不一致,我的思路好还是他的思路更好,如果是新的思路我需要记住,为何划分出这样的过程,因为不同阶段一个人的学习方法需要有弹性的变化,一成不变只会越来越吃力,听是一门艺术,这都需要领悟。
三、关于书籍的购买
课程上讲师的知识点毕竟是有限的,更何况他对java语言的理解是一种方式,其他人对java语言的理解又是一种方式,大学刚开课老师就告诉我们一句话:“课本只是参考书,你需要经常去图书馆看其他作者的书籍,去理解他们的思路,这样才能集思广益,加深理解”,因为我们对知识的理解如同盲人摸象,整合不同人的思路才能形成整全的认知。 四、关于做笔记
好记忆不如烂笔头,这句话对于正在学习java编程语言的我们再适用不过了,java编程语言知识架构非常庞大,因为它是一门不断发展的语言,针对不同的问题需要用到各种第三方的API,如果你遗忘一些知识,可以翻一翻笔记,可以在较少的时间去把遗忘的知识点补充进来,更何况如果笔记记得多,会有自己的一套速记方法,这不仅在目前的学习阶段是有益的,在今后的工作中帮助更是巨大,因为好的项目是一个团队在开发,项目经理会经常把各个部门的相关人员招聚起来,分配工作,会记笔记对工作的开展有很大帮助。
以上只是简单地介绍了我个人的理解,每个人会有自己的一套学习方法,如果你的学习方法不能帮助你应对目前的学习进度,那么就需要思考自己的学习方法是否不适合目前阶段。
五、代码与人生
接触到编程,就需要修改bug,因为一个人在写代码的过程中经常会遗漏一些关键点,在编写代码的时候我们很少思考我们究竟在写什么,你写一个变量,写一个类,只是把它当做代码,来完成具体的任务,当出现问题的时候,就修改它,直到程序能正常运行,然后就OK了,继续下一步,代码还可以随随便便修改,可以重构,但是我们的人生不是代码,可以有很多错误来犯,可以重构。在写代码的时候,我们人生也是在被写,不过写在哪儿,每个人有不同的理解。如果你把这个世界跟程序的世界对比,就会发现很多有意思的事情,我们有时需要像看待生命一样去看代码,去看它的生命周期,去看它的作用域,去看它的哪一点不符合要求语言规范,你需要思考你写的一个代码究竟有什么作用,是否不必要?何时需要销毁它等等;同样对于这个世界很多事物,也有生命周期,也有销毁的可能性。你如何设计代码,里面就隐含着如何设计你的人生,同样你如何理解人生,就会以一样的眼光看待代码。以设计的眼光去看待每一天所学习的知识,就会发现里面包含的奥妙;以同样的眼光看待自己的生活,也会发现奥妙。每个人的生命也会存在bug,很多时候我们以为目前没有报错,就觉很ok!但运行之后,就红字满屏,苏格拉底曾说过一句话:”未经反省的生命是不值得过的生命”,动物不会思考它今天应该如何,它只关心它的生理需求,你如何对待自己呢?先不谈我们今后如何,我们把目光聚焦在当下。Present is present——当下就是一个礼物,目前的学习进程已经走入一半,过去学习的如何,无论怎么后悔都没有用,因为过去就在那里,它已经定格;未来如何我们又不知道,因为无论你今天过得好还是过的坏,学习的知识多还是学习的知识少,时间不会停下来,时间对每一个人来说都是公平的。Carpie Diem——古罗马诗人贺拉斯在他一首<颂赞>提及过,大概寓意是seize the day,enjoy your life。人唯一能把握的是当下,当下你究竟在做什么? 是睡觉,是看小说,是玩游戏等等,过去的已经过去,未来的又处于未知,你不知道明天究竟发生什么事情,当下你看新闻,各种有趣的事情发生的别人身上,或死亡,或娱乐,或荣誉等等,可那与你有什么关系,一个人连自己都很难把握,更何况别人呢?你渴望荣誉加身,buffer加身,怎么不知道也会有疾病跟死亡萦绕,当下就是一个礼物,你应该好好享受它。对于目前阶段的我们,就是去敲代码,拿出你所有的勇气去学习,年轻的心应该知道自己要做什么?
六、职业规划:
谈起职业规划,就需要谈及工作,因为职业范畴是围绕工作。你有怎么样工作观,就有怎样的职业规划。拉丁文“vocare”(呼召)是职业(vocation)一词的词根,在今天,这一词仅指一份工作,然而它最初的本意是一份工作只有当人呼召你去做,而且你是为了他人而非自己的益处去做,才能被称作职业,因此只有把工作视为一份服侍的使命,而不是为了自己的益处,这才是呼召。相反,如果工作主要是为了自我满足和自我实现,那么会逐渐压垮一个人。当然这个词汇与圣经文化有很大的关系,因为在圣经中把工作跟信仰关联起来,工作也是荣神益人的方式,这给我一个提醒:工作的意义远比你所看到要丰厚的多,我之前工作了四年,一直思考工作究竟是为了什么,应该如何看待工作,如何对待每天的工作,工作是生活的全部吗?在职场上有些人三天打鱼两天晒网,有些人用加班来逃避家庭的压力,有些人是为了晋升不断努力地工作,当中有的收获了回报,有的无论怎么努力却没有收获什么。学习Java语言可以它当做去获取高薪的工具,或者纯粹是出于爱好,但爱好也可能因为繁重的工作成为苦毒,如果工作就是单单去赚钱,或者只是一个养家糊口的手段,当你如此看待它,它也会如此对待你。我们学习Java编程语言,不能简简单单地说它只是一个程序语言,不能简简单单靠它获得一份工作,市场是经常会发生变化的,如果变化,你就要放弃它,然后投入其他领域吗?java编程语言包含的内容是丰富的,如果你去看计算机发展史,计算机语言进化史,就会以不同的态度看待它。我不能说自己几年之后会成为什么,或者一名高级java工程师,或者创业,或者什么都不是,或者依然是一位码农,再或者成为软件培训师,一个人的身份总会产生变化,但是总有不变的内核在里面,它究竟是什么?或许天职会给你一份答案,无论你是否认同,都有值得探索的理由。无论你处于什么样的位置上,你应该好好地工作,但目前你的天职就是学习,深入研究你所学的东西,既然你选择Java语言,就努力去学习,尽一切可能地学习,做到最优秀,做到最卓越,不悔过去,不惧未来,因为你把握到了当下。
在今年10月份的时候,曾经听到过武汉的一位弟兄上传的关于职场方面的录音分享,可惜当时我已经来到杭州,没有机会去现场。分享的人中有一位是美国硅谷一家公司的老板,有一位是在谷歌刚刚被提升为中层(在甲骨文工作两年,后来去谷歌工作6半年),还有一位是在硅谷刚刚工作几年的职场新兵(这一份录音没有听到),他们从硅谷飞到光谷分享自己的职场经历,听完之后我觉得一个人真的很难决定自己的道路,我也不再规划职场方面应该如何走?因为未来不是白日梦,并不在你手中,但是当下是你能把握的,时机等于时间加机会,机会不是时时刻刻都有的,并不在你手中,时间能把握也只有当下,你能做的是时时刻刻地做好准备,这也是我目前的学习态度,也是今后的工作态度,机会偏爱那些有准备的人。
|