内外兼修:程序员的成长之路(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-02 23:33:40

点击下载

作者:罗飞,伍星

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

内外兼修:程序员的成长之路

内外兼修:程序员的成长之路试读:

版权信息书名:内外兼修:程序员的成长之路作者:罗飞;伍星设计:上官雅弘排版:郝禾出版社:机械工业出版社出版时间:2016-08-01ISBN:9787111546405本书由北京华章图文信息有限公司授权北京当当科文电子商务有限公司制作与发行。— · 版权所有 侵权必究 · —序 一

程序员是在幕后推动互联网发展、社会进步的重要群体,对于年轻人,程序员工作也是一份令人向往的职业。我本人也是程序员出身,对程序员有着特殊的感情,创新工场的每个项目背后都有程序员的努力和付出,甚至不少项目团队的负责人就是程序员出身。

但是在国内,程序员往往被认为是吃“青春饭”、卖苦力的,所以导致社会对程序员这个职业的认识误解,其中鲜明的例子就是过去很少有女性选择程序员作为职业。这个局面需要更多的努力来改变。本书会让大家正确地认识程序员这个群体,告诉大家如何成为一个程序员。同时我们也可喜地看到,时下热门的HTML5前端工程师这个品类上,有了越来越多的女程序员。互联网的发展需要更多的程序员,程序员也将会成为一个真正令人向往和尊敬的职业。

本书的两位作者罗飞、伍星,都是程序员出身,他们都从普通的程序员成长为架构师和项目团队的负责人。罗飞曾经是工场所投资团队的CTO,伍星是工场系优才学院的CEO。正像很多程序员一样,罗飞是自学成才的典范,而伍星则是科班出身,通过大型产品研发逐步成长到今天。他们的成长、经历、思考,会对国内程序员的发展有很好的帮助和借鉴作用,所以在此推荐给大家。李开复创新工场董事长兼首席执行官序 二

程序员可能会更在意技术成长,而对自己的职业规划考虑得不多。以我对很多PHP开发人员的了解,其中不少人因为PHP入门简单快速、功能完备、出活迅速而很快进入了这个行业。同时,这也使得PHP成为目前国内互联网领域热门的服务端编程语言。在这个快速成长的过程中,很多人忽视了对自己职业发展规划的思考。不少PHP开发人员在工作1~2年以后会陷入一个迷茫期,不知道该如何进一步提升自己。这明显是对职业发展规划考虑不够所致。我高兴地看到,业内两位较资深的从业者——罗飞和伍星在这方面做了很有意义的工作,以自身经验和思考为出发点,从行业的高度、哲学的深度来规划程序员的成长,给大家尤其是初级程序员及未入行的同学们提供有价值的参考。我将本书推荐给大家,期待大家开卷有益,希望本书能帮助到大家。PHP技术专家,PHP开发组核心成员前 言

本书适合程序员和想了解程序员的人阅读。程序员会遇到很多问题,经历很多苦难,本书中我将分享自己在做程序员的路上的一些经验。本书分为“程序篇”和“人生篇”:“程序篇”,会介绍程序员要经历哪几个阶段,每个阶段要做什么,程序员遇到问题该如何解决,本书另一位作者伍星老师也会在这部分介绍程序员要学什么、要看哪些开源程序;“人生篇”,会介绍我的人生态度。程序员大多内向、缺乏自信,只有内心强大了,才能勇敢面对困难,解决程序和生活上的问题。

很多大公司的工作氛围是这样的:员工每天上班来打卡,然后坐在自己的工位上开始做事,很少和同事交流。公司为了减少同事之间的交流甚至在工位之间用板子隔开,即使和同事交流也只谈工作上的事情。公司没事的时候很闲,甚至能让你闲半年。在闲的时候和同事的交流更少,每天只是上班打卡,然后虚度一天,下班打卡走人。这样的工作方式是以工资驱动的。大公司认为,只要把工资给足了,就不会有人轻易地走,为了防止人走,他们还可能会押半个月工资。

这是过去的工作方式,不是未来的工作方式,这样的工作方式60后、70后能适应,但不适合80后、90后。

20世纪六七十年代的人,他们生活在物质匮乏的时代,需要解决的核心问题是生存问题。所以,他们追求有份稳定的工作就可以了。而20世纪八九十年代的人,他们生活在物质丰富的时代,是打游戏、看电视、玩手机长大的,从小没有感受过生活的压力。对于他们来说,生存不再是核心问题,干得不爽,可以不要工资立即走人。他们越来越多地思考人生,对他们来说核心问题是“人生的意义”。他们不再是简单地寻求一份稳定的工作,而是要做一份有意义的工作。

程序员会遇到很多困难,需要有强大的内心才能走得更远,需要向内寻找,找回自己的本体。本书的“人生篇”在文字上虽然不如“程序篇”多,但是我经历了十年的思考,每个观点都是好几年思考的结果,而在文字表述上只能总结为几句话,无法把思考过程呈现给大家。又因为我不是专门从事哲学、心理工作,没有接触很多案例,所以对每个观点没有列举出大量的实例,只能举我自己的例子。可能你现在无法深入理解我的一些观点,但本书能给大家指明一个方向——对人生的思考不是向外的寻找,而是向内的。

为什么现在企业招程序员难?是学编程的人少吗?其实学编程的人并不少,很多人都因为程序员工资高而选择计算机专业。我们也发现并不是没有人应聘程序员职位,而是因为找不到合适的技术人员。程序员难招是因为程序员的流失太严重了。大部分计算机专业毕业的学生,面试中遇到困难就放弃了做程序员,转为其他行业;有一些人工作了几个月,在工作中遇到问题解决不了,从而心灰意冷不再做程序员;再加上国内程序员被赋予了IT民工形象,又经常加班,导致一些人干几年就不想再干了。实际上,只要坚持从事程序员工作五年,基本上都能成为资深的程序员。然而很多人坚持不下来,所以程序员更需要强大的内心,能克服困难。

程序员要比其他职业付出更多,需要学习很多技术,后端、前端、移动端、服务端都要有所了解。一个刚入门的程序员往往会感到迷茫,不知道应该学什么,也不知道应该先学什么再学什么,本书将为大家指出一条针对程序员的清晰学习路线。

程序员会遇到各种困难。写的程序会经常出现bug,然而很多人没有掌握解决问题的方法,遇到bug就问人,问人时还描述不清楚问题,一个bug甚至需要几天才能解决。本书将系统介绍一些解决问题的方法,让大家遇到bug也知道解决方向。

程序员要经历多个阶段,每个阶段都是我们的一个瓶颈。有的程序员才工作一两年就感觉自己什么都会了,觉得做程序员没有挑战了。要知道那只是我们遇到的第一个瓶颈,你还只是处于第一个阶段。要冲破瓶颈,进入下一阶段,必须不断提升自己。本书将为你介绍程序员需要经历哪几个阶段,以及每个阶段我们应该做什么事,自身适合在哪种公司工作,以帮助你制定比较清晰的职业规划路线。

我高中辍学,程序都是自学的,在学习和工作过程中遇到过很多困难,也曾经差点放弃。但在掌握了良好的编程学习方法及解决问题的方法之后,我的职业生涯就比较顺利了。我是优伯立信的CEO,曾就职于新浪云计算;在创新工场创业过,是国内流行的PHP框架ThinkPHP的核心开发者之一;申请过多个专利,撰写过编程书,制作过一些视频教程,是优才网全栈工程师讲师。我想通过此书分享我的学习方法和解决问题的方法,以及我的人生态度,让阅读此书的人知道如何学习程序,而不是遇到问题就轻易放弃程序员的工作。本书的另一位作者伍星老师,是优才学院的CEO,有十多年技术开发经验,是开心网创始团队成员,处理过亿级高并发的情况,亲手部署了开心网从两台机器到数千台机器的架构,在开心网培养了数十名优秀人才——他们现在已经是各大互联网公司的资深工程师、创业公司CTO了。他为大家制定的学习路线非常有说服力。罗飞程序篇本篇将给大家介绍技术要经历的三个阶段,以及每个阶段要做什么。我会给大家介绍自己的学习方法,解决程序问题的方法和管理技术团队的方法;伍星老师会告诉大家程序员要学什么,如何成为全栈工程师与架构师,如何利用卡宴程序快速开发。技术的三个阶段

我认为程序员一般会经历三个阶段:实现→借鉴→优化,每一个阶段都会遇到瓶颈。

第一个阶段:实现

在这个阶段我们只在乎功能的实现,不会考虑性能优化。我们会觉得有些功能不会做,有些功能自己没做过,那么只要实现了这些功能,就会觉得很有成就感。类比我们人类在原始社会时的居住条件,那时候不在乎住得舒不舒服,只要能找个遮风避雨的山洞就行。

这个阶段一般会持续2~3年,期间经常会遇到程序问题,为了解决这些问题会经常熬夜,但如果过了2~3年还经常熬夜就不正常了。此阶段,我们要多去接触,没有做过什么就做什么,后端、前端、服务器等都要有所了解。这个阶段也会遇到很多困难,但遇到困难证明自己还有东西不会,学会以后就简单了,所以遇到困难不应该放弃而要继续学习。实现阶段要学习的东西很多,需要掌握科学的学习方法,本书后面会详细介绍一些学习方法。

第二个阶段:借鉴

当我们觉得基本上所有功能自己都能够实现的时候,不要自满,这时候会遇到自己的第一个瓶颈,要知道这只是第一个瓶颈,自己的提升空间还很大。这时候建议大家多借鉴一些别人的代码,多看一些开源程序的源码。读别人的程序能学到很多东西,能学到很多编程思想,能看到很多自己以前没有用过的类、函数等。或许有人认为别人能实现的自己也能实现,不屑于看别人的东西,美国大师Matt Zandstra说过这样一句话:“我们正在努力开发的功能,或许已经被其他程序员实现过无数次,我们怎么不借鉴他们的,把重心放在自己特有的业务逻辑上?”

这个阶段同样类比人类的居住条件,人类不满足于只住山洞,可能是借鉴了鸟搭鸟窝的方式,也学会搭建茅草屋了。

在这个阶段需要掌握分析开源程序的方法,要学会看别人的程序,本书后面会详细介绍一些分析程序的方法。

借鉴阶段一般会持续1~2年,也会遇到瓶颈,开源程序看多了之后,会发现再看任何开源程序已经看不出新的思想了,很多编程思想都是相通的,好像都是已经见过的。这时候我们就要把重心放到优化自己的代码上面。

第三个阶段:优化

当我们能将功能都实现了,也借鉴了许多别人的东西时,重心就应放在思考如何优化代码上,考虑代码的可读性、安全性、可扩展性以及服务器的优化。这时候建议大家看一些设计模式、编程思想、网站安全方面的书。

这个阶段再类比人类的居住条件,我们不断优化,通过盖建楼房让自己居住得更加舒适。

这三个阶段并不是顺序出现的,有时候我们可能既在实现阶段又在借鉴阶段,也同时在优化阶段。但由于工作年限不同偏重的阶段会不一样,如果是刚开始工作,肯定偏重实现阶段会多一些。

若从程序员的职业发展方向来分析,图1-1可以表示出一个程序员可能的发展路线。

我们刚开始还只是一个初级开发人员的时候,只能把自己先变成高级开发人员,然后才能有更多的选择:管理线、专家线或小老板线。

我们学习知识的路线是:技术→技术+管理→技术+管理+商业。

随着阶段不一样,我们学习的知识也有不同。刚开始我们只做开发,只需要学习技术知识就行了;后面我们做到了管理职位,不仅要懂技术还要学习管理知识;然后我们想要成为CTO、CEO或小老板,这必须要学习一些商业知识才行。图1-1 程序员的发展路线

作为技术人员,拥有3年以上工作经验就可能开始带人了,肯定也要学一些管理知识,本书在后面章节会介绍“技术团队的管理”。第一阶段:实现

在这一阶段我们要多接触、多学习,掌握良好的学习方法;期间会遇到很多程序问题,需要掌握解决程序问题的方法;伍星老师还会告诉大家编程要学什么,给大家规划出一条清晰的学习路线。我的学习经历

我高中辍学,高三只读了20天,然后离开学校,开始自学编程。

我看的第一本书叫《PHP+MySQL网站开发》,那个时候什么都不懂,不知道数据库是什么,基本的HTML也不会,我买这本书只是因为书名有“网站开发”几个字。其实,这本书90%的内容我都看不懂,但我还是把书看完了。看完后根本没有学会PHP和MySQL,但我从书里得到了一个信息,开发网站最基础的是要学会HTML,所以应该先买HTML的书看。

很多人如果和我一样一开始就看《PHP+MySQL网站开发》应该是读不下去的。人们学习知识往往总想一下子把所有东西都弄懂,有一两处不懂就觉得难,然后想放弃。而我看书有个习惯,先看自己看得懂的,不懂的先不管它,等把整本书看完后再去看前面不懂的地方往往就能看懂了;如果还不懂,证明自己对这块知识还缺乏了解,需要阅读更多的相关书籍。建议你在阅读本书时如果遇到不懂的地方,不要放弃,继续往下读。

我学了HTML和CSS,能制作简单的静态页面了,当时我认为自己能做网站了,就在淘宝上面开店,接网站建设业务。我的第一个客户要求我做一个论坛,具有文章发布和评论功能,是一个动态网站,我一下子懵了,根本不知道怎么做。但那个客户很好,鼓励我,对我说:“事情对于会的人来说简单,对于不会的人来说难。你觉得难,那是因为你现在还不会,相信学会以后就简单了,遇到困难不应该放弃而是应该去学习。”这句话对我的影响很大,从此以后不管遇到任何困难我都没有放弃而是去学习。

我不知道制作动态网站要学什么,当时就找了一个空间商的客服,询问他要学什么,他告诉我做动态网站可以学ASP和Access数据库,然后我就买了这方面的书来学习。后来,我学会了ASP,用ASP做了半年的网站,之后PHP流行起来又学了PHP,虽然后面陆续学过各种编程语言,但最熟悉的还是PHP。本书针对编程的例子也大多用PHP代码演示,编程语言都是相通的,原理对其他语言也适用。

我在重庆做了两年的网站建设工作室,这两年我处于实现阶段,一个网站项目从谈业务到制作设计图,再到后端、前端的编程都由我一个人完成。这两年是我学得最多的两年,什么不会就学什么。现在很多人见我玩Photoshop很惊讶,奇怪我怎么会做设计。

后来我去了上海,参与了ThinkPHP开发,这段时间我处于借鉴阶段,因为要开发框架,需要借鉴其他框架,期间看过很多开源程序。

然后我来到北京,进了新浪,这期间应该是处于优化阶段,接触了云计算、高并发、大数据,知道了如何进行代码的优化、服务器的优化,以及如何处理安全方面的问题。

从新浪出来我又踏上了创业之路,我一个高中生能走到现在和我的人生态度有很大关系,内心强大了才能走得更远,我会在“人生篇”分享一些对人生的思考。

编程我都是自学的,自己总结了一套学习方法,后来我了解到大脑原理,发现我的学习方法是符合大脑原理的,后文将详细介绍。

大脑学习知识的原理

我们在第一个阶段——实现阶段时,经常会遇到困难,需要学习很多新知识。然而很多人接触新知识的第一反应是恐惧,排斥学习新知识。为什么学新知识这么困难?这和我们人类的大脑结构有关系。

认识缘脑

所有信息在进入大脑前都要先经过缘脑这个地方,缘脑对陌生信息有阻碍的作用,这是保证我们生命安全的一个机制。比如,当有个陌生物体向我们的眼球飞来时,我们的第一反应是什么呢?逃避!缘脑会觉得陌生物体是不安全的,阻碍信息进入大脑,因为信息进入大脑后再思考,时间上已经来不及,因此,缘脑发出的第一反应就是逃避,让我们立马躲开。缘脑和脑干是连接在一起的,脑干负责指挥四肢的动作,缘脑向脑干发送危险信号,脑干再指挥我们的四肢做出逃避动作,这样就保证了我们的生命安全。

然而,如果向我们眼球飞来的物体是朋友踢过来的足球,我们就不会逃避了,还会用头去顶一下。这是因为这个东西我们不陌生,不会触发缘脑的阻碍机制。

我们要学习新知识,第一步其实是要说服缘脑,让缘脑觉得知识不那么陌生,减少缘脑的阻碍,这样学习新知识就不觉得那么困难了。

接下来让我们一起来了解缘脑的工作原理。

一般人都知道人脑分为左右脑,我们也可以根据大脑的不同分区在进化过程中出现的先后顺序来进行划分,并且以此来分析不同区域的特点。

所有脑部分区中最为原始的部分叫作脑干,负责指挥人体的四肢和其他器官履行最基本的功能。许多低级脊椎类动物(乌龟与蜥蜴等)、爬虫类及鱼类也有脑干,所以这个分区又被称为“爬虫类脑”。脑干这个原始的脑部分区是完全没有学习功能的,它主要是辅助人类的本能冲动做出反应。我们一旦察觉到有异物向自己飞来,就会本能地抬起双手保护头部,这就是缘脑指挥脑干发出命令的结果。

从进化的角度来看,比脑干稍先进一级的脑部分区是缘脑。猴子、奶牛及海豚等哺乳类动物也有缘脑。

如图1-2所示,在人脑的各个分区中,最晚进化形成的是大脑皮层,也就是我们平时所说的大脑,它是人类特有的脑部分区。这个区域的功能十分强大,其中最重要的功能包括语言、逻辑分析、分类整合、推理辩论、创新发明、执行策略与决策等。有了这样一系列的能力,人类才能拥有自己的思想,而不只是一味地服从或执行命令。图1-2 大脑的分类

每当人脑接收到一条新信息时,缘脑就会首先被激活。人脑的所有分区从本质上来说只有一个功能,那就是确保生命安全。因此,缘脑必须充当信息过滤器,将新的信息与既有经验进行分析比较。如果得出的结论是正面的,也就是说同类的信息曾经给我们带来积极的影响,那么缘脑就会开绿灯,允许这条信息传递到大脑皮层,等待进一步深度处理,我们也会从主观上感到愉悦,产生处理这条信息的动力。比如,你曾经成功地完成过一次产品展示,那么你在今后的工作中也自然会更加乐意接受此类任务。但如果你曾经有过一次失败的经历,那么缘脑在下次接收到同类信息时,或许就会亮起红灯,试图拦截这一信息,从而保护心理不再受到同样的负面影响。毕竟,心理上的稳定对于生存的意义也是不可小觑的。最后一种情况,如果人脑接收到的信息没有太大的倾向性,既不是特别积极的,亦非完全消极的,那么它仍然能够通过缘脑的过滤与监控,顺利进入大脑皮层,但在这种情况下,大脑皮层无法得到强烈的刺激。这就意味着,这条信息不会给我们留下很深的印象,自然也无法进入长期记忆区域。

从上面的分析中我们不难看出,缘脑是严格依照既定的模式来完成工作的。只要成功过一次,就相当于获得了长期的通行证,因为心理上的积极反应对人类生存来说无疑是不可或缺的。

但从另一个角度来说,如果我们一直墨守成规,始终遵循既定的工作与学习模式,那么我们就永远学不到新知识,无法取得进步。我相信,每个人都曾经体验过改变有多么难。因此,每个人其实都在时刻与自己的习惯做斗争,试图挣脱惯性的束缚。

回到学习的话题上来,缘脑的这种工作原理会使得我们越来越抗拒学习。小时候在学校里的种种不愉快经历已经让许多人在潜意识中把学习和消极情绪联系在一起了,这使得我们的缘脑在接收到新信息时,自动屏蔽了许多至关重要的内容,加大了我们工作与学习的难度。

每一种新的学习技巧从本质上来说都是一种新的行为模式,因此这些技巧对于缘脑来说无一例外都是一种挑战。不管我们至今惯用的学习方法多么低效,缘脑都会固执地认为:反正我一直都用这种方式学习和思考,而且我至今都活得好好的,因此自然没有必要冒险去改变。

这个逻辑听上去或许有点滑稽,但却十分直观地体现了缘脑的工作模式,它并不懂得我们要尝试学习的新方法是百益而无一害的。在面临生命危险的时候,比如遇到老虎,这种过滤机制确实是非常有益的,它能够让我们停止无谓的思考,直接做出本能的反应,要么冲上去制伏眼前这只老虎,要么撒腿逃跑。如果没有这种过滤机制,我们的大脑就会不由自主地胡思乱想:“如果我心平气和地跟这个‘大猫’谈一谈,说不定它就不想吃我了。哦,对了!我还可以把刚采的果子给它吃,说不定它以后就改吃素了呢……”

虽然新的学习技巧能够让我们学得更快、更好、更轻松,进而将学习所引发的情绪从消极转为积极,但首先我们必须说服自己的缘脑。所以,在起步的时候,困难始终是难免的,难怪俗话说“万事开头难”。刚开始是比较困难的,如图1-3所示。图1-3 新的行为模式对原有习惯的挑战

只要我们亲身体会到新的行为模式对自己有益无害,缘脑就会做出相应的反应,逐渐将这种新习惯定位为积极情绪的催化剂。这样一来,它就会转而支持这种新习惯的发展,而非总是屏蔽了。随着练习次数的增多,原有习惯将会逐渐改变其原有的方向,新的行为模式就会轻而易举地融入其中了,如图1-4所示。图1-4 新的行为模式发展成新习惯

在学习流程的每个阶段,我们都需要用同样的方法赢得缘脑的支持。有两种十分有效的说服缘脑的方法:“宏观定位”和“了解整体”,下面分别详细说明。

宏观定位

当我们学习一个新知识的时候,先要找出这个新知识和以前已经学过知识的关联,让缘脑觉得新知识不是完全陌生的,而是和以前的知识有关联,这样缘脑的阻碍作用就不会太大。

如图1-5所示,比如我们即将学习SQL注入,需要知道SQL注入是属于安全问题,而以前已经学过了XSS、CSRF等安全问题,安全又属于“优化”这个阶段重点考虑的问题。这样就能将要学习的知识在以前的知识体系中找准定位,减少缘脑对新知识的陌生感。图1-5 对新知识的宏观定位

了解整体

对要学的新知识我们要先了解其整体知识结构,对整体有了印象之后再去仔细学习。如果我们是看一本书,先花5分钟时间快速浏览全书,这一步就好比在拼拼图的时候先拼完四条边,由此得来的粗略的整体印象能够给我们的缘脑发出积极的信息,让它感觉更加安全,也能让你看清你拼到了什么位置。此外,这种做法还能有效地激活你的右脑。右脑在我们的学习过程中也扮演着重要角色,后文将详细介绍右脑的作用。

对待新知识的态度

我们要去接触新知识,尤其是开发者。每年都会有新技术出现,也许过几年你现在用的技术就落后了。我的建议是不管什么时候都要不断地学习。

关于接触新知识的态度,我是这样看的:(1)不要觉得对自己没有用,要看对社会有没有价值,如果有社会价值,就是一个好的新事物,学习它以后会给你带来商业价值。(2)不要觉得和以前知道的东西一样,要和以前知道的东西做比较。(3)不要觉得没有足够的时间去学习,你可以先了解,了解一样东西最多花1个小时时间。如果实在没时间学习,你可以先了解,等到需要用时再仔细学习。

缘脑的其他应用

我们明白缘脑的原理后,不仅可以用到学习上面,还可以用到与人沟通、讲课等方面。

我们在与人沟通时怎样打消对方的防备心?

你需要先用一两句话说清楚沟通的大概内容和沟通的目的,让对方的缘脑对你后面要说的事情有个大概的了解,到具体详说的时候,便可减少缘脑的阻碍,从而降低对方的防备心。

讲课也是一样,讲课时如果先说服了学生的缘脑,然后再讲具体内容,学生听着会更容易接受。听我讲过课的同学都知道我有个习惯,我在讲课的PPT上总会有一个目录页,在目录页给大家说清楚我要讲哪几大部分,各部分的关系是什么,也会说说新学的知识与以前学过的知识的关联,这都是在说服大家的缘脑,让大家不要对下面讲的新知识太排斥。

其实,缘脑的原理可以用到生活中的方方面面,大家自己还可以再想想能用到哪儿。

理解—记忆—练习

做好说服缘脑的工作,知识顺畅地进入了我们的大脑,下一步要对知识进行加工处理。

我们要明白理解不等于记忆,记忆也不等于掌握。我们上学的时候,经常会觉得课堂上老师讲的时候好像都懂、都能理解,但是到第二天可能就忘记了前一天老师上课讲的内容,可见理解了不等于记忆了。即使记忆了也不等于就掌握这个知识了,就像开车,把开车的步骤要领都记住了,但是不实际去练习开车,其实自己还是不会。所以,我们要真正掌握一个知识,需要理解→记忆→练习。

理解

初中的时候,语文老师要求我们背诵课文,我一字不差地在老师面前把一篇课文背了下来。我当时还觉得很自豪,以为老师会夸奖我,可老师却跟我说:“书上的知识是别人的,知识要经过自己的处理才是自己的。”我当时不理解老师为什么要跟我说这句话,但我还是把这句话记了下来,日后真正地理解其含义后对我的学习起到了很大的作用。

也许是因为老师当时觉得我背书的时候毫无情感,只是一字一字顺序地背出来,所以才对我说了那句话。后来我明白了,学习知识要加入自己的理解,只有经过自己处理的知识才是自己的知识。

学习物理电流知识的时候,我发现把电流想象成水流,很多现象就都能解释通了,知识也很容易被记住了。但课本上面并没有说电流就像水流,我能不能这样理解呢?

我认为只要大家的理解能解释现象或能帮助自己记忆,就可以认为自己的理解是对的,不用管书上有没有这样的解释,这样的理解就是自己对知识的处理。

我在学习CSS的时候,感觉CSS有好多属性很难记忆,后来发现把CSS样式比作容器很好记忆,所有的属性都能串联到一起了。不管是p标签还是div标签,所有的标签都可以看作一个方块容器,它们都有宽、高、边框、背景等属性,不同的标签只是属性的默认值不一样。我看的第一本CSS方面的书并没有提出容器这个概念,但我发现把元素理解为容器后CSS很好学(见图1-6),这是我自己对知识的处理,后来我发现很多书都提出了CSS的容器概念。容器是一种对CSS的处理,CSS的作者可能也没有想到有人会用容器来理解CSS。图1-6 CSS容器模型

再举一个例子,因为我是ThinkPHP框架的核心开发者之一,很多不会技术的朋友经常会问我框架是什么。我如果去百度百科搜索“框架”的标准定义,然后讲给他们听,他们肯定会听晕。我会告诉他们ThinkPHP框架是PHP的框架,ThinkPHP和PHP的关系就好像砖和土的关系,砖是土做的,ThinkPHP是PHP写的,但建房子用砖比用土更快,做网站用ThinkPHP也比直接用PHP快。我这样一说,不会技术的朋友也对框架有了大致的理解。而把框架理解成砖,大家可能在别处也没有听说过,这是我自己对知识的处理。

大家大胆地对知识加入自己的处理吧,不要害怕自己理解得不对,只要你的理解能说明现象、帮助记忆就行。

如何才能形成自己的理解?

我一般对一个知识会看三个不同作者的观点,每一个作者的角度和看法都不一样。综合多个人的不同观点才能形成自己的理解。

我在优才学院讲课时,也是把知识点加入自己的理解后再讲给学生听,所以我讲的课是独一无二的,不是那种在其他地方能学到的千篇一律的知识。

记忆

我们小时候的记忆力很好,长大后发现记忆力不如小时候,那是因为小时候多用右脑,长大后人们慢慢习惯左脑思维,用右脑的时候越来越少。要增强对一个知识的记忆,需要刻意地多用右脑。我们先简单了解一下左脑和右脑。

人脑的构造就像半颗核桃仁,有左右两个半脑之分,这两个分区之间通过神经束(也就是所谓的脑胼胝体)彼此相连。

20世纪70年代,人们普遍认为人的左右脑有着严格的功能划分(见图1-7)。左脑主要负责所谓的学习功能,也就是我们在读书与进行职业培训时最需要的思维能力,具体来说就是逻辑思维、语言功能、数字概念、有序列举、因果认知与逻辑分析。左脑在处理信息时采取线性方式,即按照信息出现的先后顺序逐一进行运算处理,类似我们今天常说的数字化。因此,信息出现的先后顺序和具体时间就显得格外重要。由于左脑相对来说比较关注细节,所以我们可以形象地说,左脑只能看到一棵一棵的树,无法看到整片森林。图1-7 左右脑的分工

与之相反,右脑则主要关注整体信息。人们曾经认为,右脑主管人类思维中充满幻想和创意的部分,图像、色彩、节奏、空间是其中最显著的部分。因此,如果说对于左脑最重要的是时间,那么在右脑中最重要的则是对空间的感知与处理。如果说左脑主要处理数字信号,那么右脑负责的就是模拟信号。右脑关注的焦点是事物的全貌,而不是任何具体的细节。换言之,右脑看到的是整片森林,而不是其中的每一棵树。

我们在说服缘脑时用的“了解整体”的方法,比如花5分钟时间快速预览全书,这时候不仅起到说服缘脑的作用,还激发了右脑。

随着近几十年来科学的迅猛发展,这种对左右脑功能的严格划分已经不再适用了。在某些特定的情况下,左脑甚至可以完全代理右脑的工作,反之亦然。换言之,“左脑”和“右脑”这一对概念也只是不科学的称谓而已。人脑中其实存在着数千个不同的功能中心,它们彼此之间紧密协作才保证了人类思维的正常运行。虽然图1–7这一简化模型在医学领域已经过时,但不可否认的是,人类确实拥有上述两种极端的思维模式。因此,对于非专业人士来说,上述理论不失为一种通俗易懂的解释,可以简化某些复杂的脑部活动现象的分析工作。在此,我想特别说明一下:本书中凡是提到“左脑思维”都是指分析思维,而“右脑思维”则是指富有想象力和创造性的空间与形象思维。

在当前这个阶段,大家只需要明确一点:只有当我们同时调动自己的左脑与右脑,激活两种思维模式时,才能达到最佳的学习效果。小孩子在学习的时候通常都会不自觉地更多地使用右脑,这是我们在年纪小的时候特别容易学习新知识和新技能的重要原因之一。可惜的是,一旦进入小学,开始接受课堂教育,我们就会越来越偏重左脑思维,毕竟左脑主要负责学习。随着这种一边倒的思维方式不断发展,我们就越来越难吸收新知识了。从这时起,学习会变得越来越困难,越来越没有乐趣。

现在,让我们通过一个小实验来体会一下左右脑两种思维方式的差别。请大家一边阅读下面这篇小文章,一边试着记住故事的具体内容。

有一天,“两条腿”拿着“一条腿”坐在“三条腿”上。突然,“四条腿”跑了进来,一下子抢过“一条腿”。“两条腿”情急之下,就抡起“三条腿”朝“四条腿”砸了过去。

对于一个习惯左脑思维的人来说,最有用的学习方法就是不断进行机械式的重复阅读,现在让我们再来看一遍这个故事。

有一天,“两条腿”拿着“一条腿”坐在“三条腿”上。突然,“四条腿”跑了进来,一下子抢过“一条腿”。“两条腿”情急之下,就抡起“三条腿”朝“四条腿”砸了过去。

怎么样?反复读过几遍以后你是否记住了故事的内容?这种死记硬背的机械式方法不仅耗费大量时间,还无法保证长期记忆。一个星期甚至一天以后,你或许就会把这个“一堆腿”的故事忘得一干二净了。因为在机械式重复阅读的过程中,我们难免会产生越来越强烈的抵触心理,获取信息的效率也会直线下降。长此以往,我们只好听天由命,承认自己的脑子天生不好使,一辈子都没办法跟那些聪明的同学竞争了。可是,大多数有着这种想法的人都不知道,自己之所以不擅长读书并不是天赋问题,而是不懂得如何正确使用自己的大脑。

那么,用右脑思维是否就会好些呢?既然大家已经知道右脑思维代表着形象思维,那现在就让我们一起来把这些乱七八糟的腿变成生动的图像。“一条腿”我们可以暂且把它想象成一块炸鸡腿,“两条腿”当然就是一个人,而三条腿不就是可以用来当凳子坐的东西吗?我首先想到的是挤奶用的小板凳。“四条腿”的动物有很多,最常见的应该就是狗了。经过一系列的替换,这个故事就完全符合人脑的形象思维和记忆模式了。

一个挤奶女工坐在三条腿的小板凳上休息,手里拿着一块炸鸡腿。她刚想咬一口,一只土狗冲了进来,把鸡腿叼跑了。女工一气之下,抡起小板凳就朝土狗砸了过去。

现在,你可以闭上眼睛,靠在椅背上稍微放松一下,在脑海里把整个故事的情景从头到尾回放一遍。只要你再稍微添一点油加一点醋,充分调动自己的所有感官和想象力,我相信几天甚至几周以后你也一定可以毫不费力地回忆起整个故事的来龙去脉。

我们要多使用自己的感官来激发右脑。

由于人体是通过五大感官来接收外界信息的,可以说,因此学习总共有五大渠道。在这五大渠道之中,首先是视觉渠道,每个人都在不断地通过双眼接收来自外界的图像信息。其次是听觉,平时上课或者听讲座时,听觉渠道是我们吸收知识最重要的途径。如果我们大声朗读书本上的内容,或者在看见某个情景的同时听见了各种各样的背景声,那我们的听觉就会受到刺激,大脑会将这些来自不同渠道的信息联系在一起。第三大感官就是所谓的触觉,人体无时无刻不在感知周围环境给自身带来的影响。此外,体验和我们平时所说的触觉都属于这一类功能范围。小孩子在拼积木或体验某种新的活动时,触觉同样会得到集中刺激。最后,当然还有味觉和嗅觉,这两大渠道虽然没有前三种那么重要,但是只要运用恰当,它们同样可以为我们服务,加深大脑对新信息的印象。

我们之前说过,要记住某条信息,必须将其与既有的知识网络结合在一起。现在,我要向大家介绍第二条学习原则:要想记住某条信息,必须充分调动自己的五大感官。这种“五管齐下”的方法就是专业术语所说的“共感”,也就是尽量通过五大渠道同时接收信息,并且让这些信息整合在一起,加深大脑对这些知识的印象。

编程其实是很抽象的,人们总想把它形象化,比如Docker技术被解释为集装箱后就让人很好理解。编程类的很多术语其实来源于建筑学(如框架、模型、模块、设计模式)也是想让抽象的编程形象化。编程之所以要形象化也是想调动大家的右脑,让大家更好地理解编程。平时可以通过多训练自己的五大感官来调动右脑。

下面介绍一下训练五大感官的瀑布练习。

在瀑布练习中,我们需要分别训练自己的五大感官,再将其结合起来,达到最佳效果。此外,这个练习也是一种锻炼注意力非常有效的练习。记忆力和注意力往往是密不可分的,这个练习也可以帮助我们放松。由此可见,瀑布练习绝对是我们训练计划中必不可少的一个部分。每当你在学习的过程中感到疲倦或是发现自己脑子不好使的时候,就可以闭上眼睛,靠在椅背上,花上两分钟的时间来完成这个练习。如果你觉得疲惫不堪,甚至出现腰酸背痛或是头痛的症状,那就说明你的学习方式确实出现了问题,你的身体已经不堪重负、表示抗议了,长此以往,你很可能再也找不回那种正常、健康的学习状态了。因此,我提醒大家一定要留意类似的现象,只要发现一点蛛丝马迹就要及时采取措施,改变身体上的不适。每当你进行这个练习的时候,你都会为自己赢得更清醒、更健康的学习状态。千万不要给自己找借口,用“没时间”这类老掉牙的借口来试图推脱。找到了最佳状态,我们自然可以事半功倍,赢回花在练习上的时间。图1-8 瀑布练习

请大家想象自己正在热带的某个岛屿上度假,你身穿鲜艳的泳衣,浸在清凉的湖水中。现在,请你朝着湖边的小瀑布游去。在前两分钟的时间里,重点是要激活自己的视觉渠道。因此,请你集中精力想象一下自己看到的景象。当你站在瀑布下面时,你看见了什么?湖水是什么颜色的?在想象这个细节的过程中,我们可以暂时忘记其他感官。不过,刚开始练习的时候我们一般很难将其中一种感官与其他感官完全分开。要么我们会突然想起皮肤接触湖水时的感觉,要么会想到哗啦啦的水声,我们的思绪甚至飘到毫不相干的地方,想起其他与瀑布无关的事情。不过这都不要紧,它反而能够让我们很好地判断自己当前的记忆力程度和注意力集中的程度。好的,现在请大家一起来尝试一下吧!怎么样?你大概花了多长时间才能通过想象看到瀑布的景象?

大概两分钟以后,请你重新回到刚才的学习上去,继续阅读。如果过了一段时间以后,你又感觉到集中注意力有困难或者身体有了轻微的压力,那就暂停一下,用两分钟时间完成第二遍瀑布练习。这次,请大家将注意力集中在听觉渠道上。你站在瀑布下面时能够听到什么声音?与上一次相同,请大家尽力屏蔽其他感官的感觉。同理,下一次练习时就要重点关注触觉,想象一下站在瀑布下面的感觉。

这个练习我们可以连续几天反复做。刚开始的时候,练习的重点在于适应这种无中生有的想象。只要我们能够控制自己的想象一直停留在瀑布这个主题或者同一感官渠道上面,那就成功地达到练习的目的了。练习几遍以后,我们的记忆力和注意力应该已经初步得到改善,我们能十分轻松地开始自己的想象。从这个时候开始,我们要在每次练习的两分钟内,同时关注两个不同的感官渠道,比如我们同时练习视觉和听觉,在想象具体图像的同时,也关注耳朵可能听见的声响。水声究竟有多大?是否能够听见风吹过树林的声音?此外,你可以将视觉和触觉,或者听觉和嗅觉相结合。等两两结合没有难度以后,再试着选择任意三种感官来进行练习。你会发现,调用的感官越多,我们的主观体验越丰富。在这个练习中,我们强调从单一渠道开始,逐渐适应,因为如果急功近利的话,感觉就会大不一样。我们将无法集中注意力锻炼每个单独的感官,导致每一种感觉都不够强烈,最终结合的效果也不会那么真实。所以,请大家耐心一点。最后,大家还可以尝试加入嗅觉和味觉,这样体验也会十分有趣。

等到瀑布练习很熟练,你能清晰地结合多个感官时,再重复瀑布练习已经没有难度且感觉没有新鲜感时,可以换一些主题,如“沙漠”、“森林”、“冰川”等。训练方式和瀑布练习一样,先只练习一个感官,再结合多个感官,每次练习两分钟左右,注意力要集中在自己定义的主题上。

随时随地训练自己的感官。

既然我们在学习时,大部分人是通过阅读来获取知识的,那么在刚开始练习的时候,强化视觉渠道自然是重中之重了。此外,视觉渠道从本质上来说也是获取信息最高效的渠道。其实,我们可以随时随地训练自己的视觉渠道,尤其是在等车或等人的时候,我们更应该充分利用这些零散的时间,仔细观察一下周围的事物。车站的大幅海报、街对面的某栋大厦都是很好的练习素材。你可以给自己限定一两分钟的观察时间,然后闭上眼睛,在脑海里尽可能地回忆刚才看到的每一个细节。然后睁开眼睛,稍微比较一下,再闭上眼睛,补充第一次回忆时遗漏的细节,循环往复,直到几分钟后真实的画像与自己的想象完全一致。对于有些人来说,这种闭上眼睛重现某一场景的练习做起来多少会有点困难。不过对于任何一种能力而言,关键都在于持续不断地练习。当脑海中头一次出现一幅清晰的画面时,你一定会感觉到由衷的快乐和满足。

眼球的运动有助于激活五大感官。

在关于记忆技巧的书里,我们经常会读到这样的内容:通过阅读而获取的信息,大脑大约能记住10%;通过听获取的信息,大脑大约能记住20%;从图片或图标上面获取的信息,大脑大约能记住30%;边听边看的话,大脑大约能记住50%;如果在被动接收以后,又向其他人主动讲述过一遍,大脑大约可以记住70%;如果经过实际应用,大脑大约能记住90%。图1-9 记忆百分比

在我看来,这些量化的数字完全没有意义,但从中总结出来的理念却值得参考。一个人在接收与处理信息时调用的感官渠道越多,最终牢固记忆的内容也就越多。从根本上来说,这是因为每一类信息在大脑中的存储位置不同。由此可见,当我们用多个感官来认知同一个事物时,调用的感官渠道越多,最终牢固记忆的内容也就越多。当我们用多个感官来认知同一个事物时,相当于在大脑的不同分区重复储存了同一条信息。在学知识看书时,除了把读到的文字信息储存在视觉区域,还在听觉、触觉、嗅觉和味觉区域都有了一套备份。等到需要提取信息的时候,我们就有五个不同却又相通的渠道,回忆起来自然容易多了。

很多人都不知道,自己大脑中的这些分区其实是可以借助眼球的不同运动来激活的。20世纪70年代的一项大规模调查研究发现,当被问及自己家沙发的样子时,被调查者往往都会不自觉地往左上方看,这是因为人可以通过这样一个微小的眼球运动来激活自己大脑里存储的图像信息。而且几乎所有人都从未意识到自己有这种习惯。如果研究人员继续请实验对象想象给他们自己家的沙发换个颜色,比如变成带有粉红色圆点、薄荷绿底色的会不会好看,他们多数都会稍微往右上方看。这说明,眼球向右上方运动能够激活大脑的想象力,改变大脑中既有的图像信息。如果某个实验对象在听到这个问题时不是往右上方看,而是往左上方看,那说明他家的沙发很可能就是薄荷绿底色,而且带有粉红色圆点。

如果需要回忆某个朋友的声音,眼球会向左转动,高度与耳朵平齐,因为这个位置与听觉记忆有关。同样的道理,如果要想象某个朋友有米老鼠的声音,那眼睛会向右转,高度也是与耳朵平齐,因为正右方的眼球运动能够刺激大脑想象有关听觉的信息。同样属于听觉范畴的部位还有左下方,每当我们自言自语或打电话的时候,眼睛经常会不自觉地往这个地方转动。

此外,如果事情涉及某些特定的感觉,人往往会朝右下方看,因为这个方向与触觉有关。大家可以回想一下,每当我们遇到学习问题或是情绪低落时,都会习惯低头往下看。但越是摆出这么一副消沉的架势,我们越是打不起精神来。其实,只要我们抬起头,有意识地将眼球向上转动,同时回想一些积极的经历,很快就能摆脱消极情绪的影响,跳出郁闷的氛围。图1-10展示出了眼球朝不同方向运行所触发的人体感官渠道。

根据眼球的特征,我们可以把知识手绘成思维导图,思维导图有助于我们激发视觉通道。我们在记忆知识时,需要加入视觉的一些想象,可以刻意让眼球向右上方转;在回忆知识时,可以刻意让眼球向左上方转。下面详细讲解手绘思维导图的方法。图1-10 眼球朝不同方向运动所触发的人体感官渠道

手绘思维导图可以增强记忆。新的知识点必须要和既有的知识网络结合在一起。知识点如果不能互相联系在一起,再多的信息也只能在我们脑海里毫无方向地飘来飘去,用在学习上的时间也就白白浪费了。

这个方法归根结底还是来源于人脑运动的规律。每个人的大脑都有上千亿个神经元(见图1-11),也就是我们平时所说的脑细胞,每个神经元上都有上万个神经树突,与其他细胞相连。至于脑细胞之间究竟是如何沟通、如何协同完成复杂的思维过程的则是极为复杂的生物过程,科学家至今仍未能给出透彻的分析。图1-11 神经元

虽然这些脑细胞的数量极其庞大,但一个人的思维能力与神经元的绝对数量并无直接关系,起决定性作用的反而是神经元之间连接的密集程度。可以说,人体哪处的神经网络最密集,哪个器官就最聪明。如果某个部位只有很少的神经联系,那就说明神经反射的途径还没有得到充分的发展,神经无法足够高效地传导信息。最值得一提的是,新的神经联系只能建立在既有网络的基础上,凭空长出一个孤立的神经元是不可能的。

类似神经元的互相连接,知识也要互相连接在一起。思维导图是一个很好的整理知识与知识之间联系的方法。

在电脑上制作思维导图的软件很多,比如XMind,但电脑做的思维导图太规矩了,没有突出特点,所以我偏向于手绘思维导图,这样能更好地增强视觉通道、激活右脑。如图1-12所示,是一张AngularJS的手绘思维导图。图1-12 手绘思维导图

手绘思维导图有一点难度,不可能一下子画好,需要分几个步骤。

1.提取关键词

先用一张大小合适的白纸(可以用A4纸)横向摆放,画两条竖线将白纸分为三个区域。左边第一个区域记大的要点以起到目录作用,中间区域记录每个要点下所有关键词,右边一栏做补充笔记。

把白纸横着放也是为了激发我们的视觉通道,就像我们小时候画画的纸张总是横着放的。在记录关键词的时候,切勿整段摘抄,而是要提炼为关键词。

2.摆放关键词

再用第二张白纸,白纸的中心写最核心的主题,然后在核心主题周围摆放第二级关键词,在第二级关键词周围再摆放第三级关键词,根据关键词的多少分配好空间。

3.连线关键词

摆放好关键词后整体结构就出来了,再连上线就大功告成了。

手绘思维导图不会像软件做得那么规矩,关键词的疏密不一样,连线长短也不一致。我们还可以在纸上用不同的颜色,在一些地方画点图案,这样更能激发我们的视觉通道,增强我们的记忆。在记忆思维导图的时候可以让眼球向右上角转动,以增强我们的视觉想象。

复习增加记忆。我们整理好知识后还要制定复习计划,需要多复习几次知识才能记牢,而我们之前整理的思维导图是一个很好的复习材料,只要看一页纸就可以把整本书的知识都想起来。

第一次复习时间应该在10分钟后,也就是整理完思维导图过10分钟后再看看自己能否回忆起整张思维导图,回忆的时候眼球向左上角转动,以帮助我们激活回忆的视觉通道。第二次复习时间应该在第二天,第三次在一周后,第四次在一个月后,经过这四次复习,我们可以将基本知识记得很牢。

我们可以用印象笔记等软件提醒自己复习时间。当思维导图做好后,可以用印象笔记拍照,然后设置提醒时间。刚开始设置的提醒时间是一天后,第二天印象笔记会提示我们复习,复习完后再将闹铃设置为一周后,一周后再将闹铃设置为一个月后。

我们可以用一个文件夹来存放思维导图的图纸,以便偶尔翻开看看。等图纸积累得多了,一个文件夹就是几十本书的总结,让人很有成就感。

练习

记住了不等于就会了,比如编程,虽然记住了语法但如果不上机实际操作一下,其实还是属于不会。当我们实际操作的时候会发现有很多细节问题需要注意,比如PHP可能经常忘记句尾写逗号,比如Linux编译安装软件有许多依赖问题需要解决。另外,建议大家养成写博客的习惯,把自己遇到的问题写成博客文章。

我们在反复练习的时候要注意平台期,大家看图1-13这个学习曲线,它代表的是能力与练习时间之间的关系。我们看到它并不是一条圆滑向上的曲线。我们会经历一个又一个不规律的平台期,必须经过一段时间,才会突然向上跳一个台阶。这种能力发展的模式出现在日常生活中的方方面面,例如学习一种新的乐器或是练习一个新的体育项目,都会出现类似的情况。图1-13 练习的平台期

就以学钢琴为例吧。上完前几节课,你终于可以弹出旋律了,或许还学会了弹奏第一首简单的儿歌,这说明你已经实现了零的突破,登上了第一个台阶。接下来,你迫不及待地想要尝试难度更大的曲子,可手指却偏偏不听话,怎么弹都弹不好。究其原因,是因为你的能力还停留在第一个台阶上,并且正在像蜗牛一样慢慢地向前挪动。不管是学习一种新的乐器、新的体育项目还是新的阅读技巧,飞跃本身都不是重点。最难熬却最关键的其实是在同一个水平层次上停滞不前的那段时间,也就是所谓的平台期。我们会逐渐感到灰心丧气,抱怨自己的努力没有换来应得的回报,要是平台期的持续时间太长,我们甚至会彻底失去动力、半途而废、不了了之。这就解释了为什么那么多人都曾经试图学习一门乐器,但能够真正坚持到底的却少之又少。

所以,我在这里要特别强调一下这个痛苦的过程。我们必须认识到,尽管我们在主观上会觉得自己毫无进步,但平台期却正是大脑建立新的神经联系的过程。我们之所以尚未感觉到切实的变化,是因为大脑还在进行下一步的隐性工作,那就是生物学上所说的“包鞘”。每当脑细胞,也就是神经元之间建立了新的连接,其表面就会生成一种新的叫作髓磷脂的物质。形象地说就是光有裸露的电线还不成,必须再裹上一层绝缘橡胶才能正常使用。必须等到这个生物过程结束了,大脑才能获得一条崭新的思维路径,我们的能力才能再上一个台阶。

因此,当你下次感觉自己又开始停止进步时,请回想一下上面所说的这个生理过程。暂时看不到进步恰恰说明你的大脑正代替你完成最重要的一个步骤,帮助你完成量的积累,很快你就会感受到质的飞跃。你会发现,了解事物背后的运作原理是一种非常美妙的体验,仿佛给自己找到了一个合情合理的交代,进而能够心甘情愿地接受整个等待的过程。

每个人从头开始学习一项新的技能时,都必须经历四个阶段(见图1-14)。图1-14 学习的四个阶段

以开车为例。刚出生的婴儿显然不具备开车的能力,可这是因为他们还没到琢磨这件事情的年龄,所以不会开车既不会给他们的生活带来不便,也不会使他们产生任何心理上的不安。这就是第一阶段的特征,虽无能力,却也尚未萌生明确的意识,即“不知己不能”。随着年龄的增长,我们总有一天会发现:为什么别人都会开车而我却不会呢?一旦提出了这个问题,我们就进入了第二个阶段:意识到自己某种能力的缺乏,即“知己不能之”。由于我们已经体会到了不会开车带来的种种不便,而且因此感到不安,所以我们理所当然会主动采取措施改变现状。刚高中毕业的女生或许会缠着爸爸带自己去找个空旷的地方练车,爸爸或许会让她去驾校学习。不管通过哪种途径,重点是我们已经迈出了第一步,找到机会开始学习这种新的技能了。这就是第三个阶段:有能力,也意识到了,即“知己已能之”。在这个阶段,我们明明已经学会了所有操作,背熟了所有交规,可每次把手放在方向盘上的时候,心里还是难免会有点紧张。我们必须时刻留心手部动作和脚下换挡的配合,遇到比较复杂的路况也会略微有点犯怵。总而言之,我们必须把自己的系统内存全部用在开车上面,根本顾不上别的事情。直到有一天,我们突然发现自己再也不会操作紧张,离合换挡、停车起步也已习惯成自然了。我们的大脑终于可以放松下来,一边开车一边听听音乐。这就说明我们已经到了最后一个阶段:意识不到自己有能力,即“不知己能之”。

在练习过程中,大家会遇到平台期,发现自己没什么进展而容易放弃,在学习技巧这一领域,我们的能力发展也同样遵循这种自然的发展规律。所以我们要不断练习,总有一天这种新的技能会习惯成自然,变成我们潜意识的行为方式。这时,尽管我们不再刻意关注某个特定的技巧,我们的大脑也会在潜意识里指挥相关的器官照常完成任务。我们的大脑会拥有更多空闲的空间,可以把全部精力都集中到学习上。

就像我们刚开始学习PHP,可能会经常忘记写句末分号,这是正常的,等练习多了,分号不用我们想就会很自然地写上了。

如何解决程序问题

在实现阶段的程序员,会经常遇到写的程序出现错误束手无策、不知道怎么去查找程序问题的情况。我总结了一些查找程序问题的方法,希望能帮到大家。

不要像小白用户那样提问

很多人一遇到问题就问人,而且描述不清楚问题,只说简单的问题现象。比如问:“网站访问不了怎么回事?”“连接不上服务器怎么办?”“程序启动不了怎么办?”“程序在本地运行没有问题,上传到服务器运行就有问题,怎么回事?”这些问题让人无法回答,哪位技术大牛能回答这些问题?

要知道你是程序员不是小白用户。不懂程序的小白用户看见网站访问不了,只能反馈给你网站访问不了。但作为一名程序员,拿这样的现象去问人,技术大牛也不知道怎么解答,因为造成网站访问不了的原因太多了。作为程序员,你是可以提供更多信息的,比如程序的错误信息、错误码、是在运行哪行代码时出错的,有了这些信息别人解答问题就更容易了。

我们在学校时,老师引导我们有问题就问;然而在编程时,有问题马上问,只看见个别现象就问,反而沟通效率低,自己成长也慢。有问题要先自己找解决方案。

重现问题

如果同事给你反馈产品有bug,不要光靠猜测改代码,哪儿可能有问题就去哪儿改代码,并且改后自己不经过测试就告诉同事改好了,结果同事测试后告诉你“还是有问题呀!”,你回复同事说“哦,我知道是哪儿的问题了,我再改改”,然后还是靠猜测去改代码,改好后还是让同事测试。如此往复几次都没改好,同事就会不耐烦,而且这样靠猜测修改代码很容易引起更多的bug。

大家在找问题上不要偷懒,先问一下同事是怎么操作出现的问题,自己也按照他的步骤把问题重新显现一次,这一步我们简称为“重现”。这样能帮助自己更了解问题,知道是在什么情况下、在运行什么程序时出的问题,从而找出导致程序报错的信息、错误码以及报警的文件地址和行数,之后再解决bug就很容易了。我们在解决完bug后一定要自己测试一下,确认问题真的解决了再告诉同事。

查找程序报错信息

每种编程语言查看错误信息的方法都不一样,我们要知道怎么看错误信息。比如,PHP语言需要开启报错才会显示错误,将配置文件php.ini中的设置配置项display_errors设置为on时才会把错误信息显示在页面中,否则,有错误也是显示500错误的空白页面。

如果是正式环境,开启报错并不安全,黑客可以通过报错信息猜测程序哪里可能有漏洞,从而攻击我们的程序。正式环境下我们不开启报错,可以通过查看错误日志文件知道错误信息。PHP的错误日志文件,可以通过php.ini配置设置

log_errors = On

error_log = /var/log/php-error.log

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载