赞
踩
分享是一种态度,学习是一种习惯,点赞是一种风格,评论是一种魄力,纠错是一种礼节,本文仅以此献给那些需要的人!!!
走进学校,接受良好教育,没有任何问题。但是如果你毕业后就停滞不前不再学习,那么你将在生活中处于非常不利的境地。事实上,如果你一直依赖他人来教你,从来没有掌握自我教育技能。这会严重限制你提升自己的知识和技能的机会。软件开发人员可以学到的最重要的一项技能就是自我教育的能力。在这个新技术发展日新月异的世界里,就连初级职位的web开发人员都需要掌握至少三种编程语言,所以自我教育是一项必不可少的技能。如果想成为最好的软件开发人员,你就必须学会如何自学。学校并不会教你自我教育这项技能。你可以轻松反驳说教育体系的设计初衷是针对群体而非个人。如论如何,学会学习是自我教育的核心技能。
1.1 剖析学习过程
你是否思考过自己是如何学习的?学习的真正含义是什么?我们几乎都是下意识地倾向于学习自己感兴趣的东西。当别人给我们讲一个精彩纷呈的故事时,我们通常不会做笔记,也不会记住确切情节;然而我们中大多数人听到故事后,不费吹灰之力就能将它复述出来。这也同样适用于我们做的事情,如果我告诉你该怎么做,你可能会忘掉,但如果你自己动手做一次,你可能就记住了。如果你能将自己所学的东西交给别人,你不仅能记住,还能理解得更深刻。尽管每个人的学习风格千差万别,但是通过动手实践和教会他人,我们能学得更好,与其他学习方式相比,主动学习是效率更高的方式。教育的首要目标并不在于"知"而在于"行"。可以换个角度思考一下这个问题,你可能看遍了教你如何正确骑车的书,也可能看过别人骑自行车的视频,我也可以给你培训正确骑车的机械原理,但是,如果你从来没有骑过自行车,那么当你第一次骑的时候你一定会摔倒。你可能对自行车无所不知,熟悉骑车的机械原理,知道哪种自行车最好,但是直到你将自己所学的东西用于实践,你才算真正学会了骑自行车。同理,许多软件开发人员拿起一本关于编程语言或框架的技术书,从头到尾地读上一遍,就想奢望他们能够吸收其中的所有信息吗?最好的情况可能是借助这种方法,你能快速积累该主题的全部信息,但你仍然没有真正学会它。
1.21 自我教育
如果你想学习一些东西,最好的方法就是付诸实践,如果你也能承担将自己所学的内容教给别人的任务,那么你会理解得更深刻。所以,你在自我教育方面的努力,应该更聚集在如何让自己切实参与,并且尽早付诸实践。我觉得学习知识的最好方式就是立即将其用于实践,即使你还不知道自己在做什么。如果关于某个主题你能够获得足够的知识能够操作,你就可以发挥自己心灵深处强大的创造力和好奇心。当我们能够在一件事情上尽情发挥的时候,我们的内心就更倾向于吸收更多的信息,思考更有意义的问题。 这似乎有些奇怪,但事实的确如此。玩耍是一项强大的学习机制,这一点我们在整个动物王国都看得到。动物的幼崽总是贪玩,通过玩耍,他们学会了许多赖以生存的重要技能。通过发挥类似这样玩的能力,玩成为一个你可以大加利用的强大武器。它不仅能激励你,还能大大加快你的学习步伐。在你阅读某个主题的书之前,大致游览后就开始实践,不用担心自己是否知道自己在做什么。乐在其中,你就会发现随着自己的实验和探索,自己在哪些方面发现了问题。一旦你已经实践过,并积累了各式各样的问题。立刻回到书本当中。当你回去重读这些参考资料的时候,你有强烈的冲动去消化吸收其中的内容。因为你已经积攒了很多想要找到答案的问题,你对哪些内容更重要早已了然于胸。然后,你可以把自己学到的新知识重新应用于实践,看看你学到的新方法是否能解决你已有的问题,你可以继续探索新领域,发现需要解决的新问题。以解决实践过程中发现的问题为目标,在向着知识前进的道路上重复这个循环,周而复始。通过这种方式获得的信息对你才是有意义的---'纸上得来终觉浅'啊。最后,你可以将自己所学的打包教给别人。这一点是画龙点睛之笔,你应该随时准备与有兴趣倾听的人分享你新学到的知识,你会为自己的发现激动不已---玩玩的力量就是这么巨大。教导他人也很容易,它可以简单到你与配偶之间就自己学到的新东西进行的一次对话,也可以是写一篇博客文章。关键在于,你要用自己的语言将这些信息组织起来,把你的思想表述给别人。本方法的关键指导原则是通过玩儿、探索以及将自己所学教给他人来学习。这一简单易行的方法更符合我们的天性----在某种程度上,抛弃了"填鸭式教学"的自主学习才是最简单和最纯粹的学习方式。
2.1 体系背后的逻辑
学习知识的主要途径就是"从封面到封底"仔细阅读专著,只有通读全书后才会将自己学到的知识应用于实践。使用这个方法,确实能学到东西,但是效率很低,经常还得回顾书的内容,来弥补自己在该学科方面存在的知识短板。当拥有足够的时间,且没有一个真实具体的目标的时候,这种学习方法很好,可以最终学会想要学会的东西,而且从头到尾地读书学东西也并不难,只是要花时间。但随着开始有更紧迫的理由需要快速学习的时候,发现原来的方法就无法凑效了。通常并没有时间通读全书,而且发现书本里的很多内容更适合作为参考资料,而不适合实际学习。于是需要迫使自己去寻找更好的自学方法,能在有限的时间内掌握所需内容,有些时候,只有一周甚至更少的时间去吸收足够的信息以教给别人。在这种情况下,很自然会明确需要掌握哪些内容,再去寻找能获得这些信息的最佳资源。同时也会忽略那些并非达成目标所必须的其他信息。为了能够掌握一门技术,需要了解以下三个要点:1 如何开始----要想开始使用自己所学的,需要掌握哪些基本知识? 2 学科范围----现在学的东西有多宏大?应该怎么做?在开始阶段,不需要了解每个细节,但是如果能对该学科的轮廓有大致的了解,那么将来就能发现更多细节。 3 基础知识----不止在开始阶段,要想使用一项特定的技术,需要了解基本的用户案例和最常见的问题。也需要知道自己学的哪20%能满足80%的日常应用。熟知了这三个关键点后,就可以高效地学习一门技术了,无需通晓全部细节。如果了解三项主题---如何开始、能做什么以及基础知识,那么你就能随着学习的深入学会所需的其他知识。如果你想提前掌握所有知识,那只是在浪费时间。因为真正重要的内容会淹没在那些细枝末节中。使用这种新方法能让你关注重点,当你确实需要了解更多细节时,你可以利用参考资料来弥补这些不足,有多少次你从头到尾仔细阅读一本技术书籍,却发现自己实际用到的也只是书里介绍的技术的一小部分。
2.2 十步学习法体系
事实证明,掌握这三大要点可不像看上去那么轻松。学会"如何开始学习一门技术"可以说是一项挑战,而且往往很难找出那些所谓的"篇幅只占20%,然而有效性却达到80%"的内容。另外,要总结出一门技术的应用广泛程度的简短描述,是很难的。通常你需要阅读一整本甚至几本不同的书籍之后才能获得此信息。"十步学习法"的基本思想是:要对自己要学的内容有个基本的了解---了解自己不知道什么就足矣。然后利用这些信息勾勒出学习的范围,即需要学哪些内容,以及学成之后又会获得什么。依靠这些知识,你可以找出各种资源(不局限于书本)来帮助自己学习。最后你可以创建自己的学习计划,列出要去学习哪些相关课程,筛选出学习材料,只保留能帮助自己达成目标的优质内容。一旦完成这些工作,你对自己要学什么和怎样学都了然于胸,你就可以把控自己的学习计划中的每个关键点。通过"学习--实践--掌握--教授"(learning,doing,learning and teaching,LDLT)的过程,获得对该学科的深刻理解,同时你也向着自己的目标前进。"十步学习法"的第一部分是研究,它是一次性完成的,但是从第7步到第10步则是重复的过程,贯穿于你的学习计划的各个模块。这个方法非常凑效,因为它迫使你提前明确自己的学习目标,也持续不断的激励你通过实践(而不仅仅是读书或听讲座)向着目标前进。这是快速学习的唯一途径吗?这是一种魔法系统吗?不,不是的,它只是通过"聚集学习氛围,让你关注重点内容"来学习的一种快速学习方法,它迫使你通过"自我探索"和"主动教学"的方式将真正重要的内容印刻在自己的大脑中
对于"十步学习法"的前六个步骤,你需要集中精力完成足够多的前期调研,确保自己明确知道要学习哪些内容,以及如何确认自己已达成目标。你还将学到如何挑选最好的资源来帮助自己实现目标/制定学习计划。前六个步骤只需要针对你想学的每个主题做一次。第7步到第10步则要针对在第5步所制定的学习计划中的每个模块循环反复。尽管第1步到第6步只需要做一次,但是他们确实最重要的步骤,因为他们将对你未来的成败起决定性作用。在这六个步骤中,你要为自己实际的学习主题做好一切准备工作。"不积跬步无以至千里",基础打得越牢固,目标越容易实现。
3.1 了解全局
学习始终是一项棘手的任务,因为在开始学习某些东西的时候,你对自己到底要学什么理解的并不透彻。美国前国防部长唐纳德。拉姆斯菲尔德曾说过"未知之未知"(unknown unknowns),即你根本不知道自己不知道。大多数开发人员在打开一本新书开始阅读的时候,他们对自己所不知的一无所知。他们将"未知之未知"留到后面去发现。这一方法的问题在于,你要么学非所需,要么力所不及。在深入研究某个主题之前至少要对其有所了解,这一点非常重要,这样你才能弄清自己到底要学什么,找出最好的学习方式。这一步你要做的就是了解自己将要学习的主题的全局。这个主题宏观上什么样?你能从中学到足够丰富的知识以了解自己所不知道的,以及自己所不知道的有多少。假设你想学习数码摄影。你可能会先在网上搜索与这个主题相关的内容,浏览与数码摄影有关的博客和文章。短短几小时之内你就能对这个主题的全局及现有的子课题有一个清晰的认识。要完成这一步,你需要对自己想要学的课题做一些基础性研究。通常你可以使用网络搜索来完成大部分研究。如果你碰巧有一本关于该主题的书,那么你就可以只读一下其中的介绍性章节,粗略浏览一下内容,但是不要在这一步上花费太多时间。记住,我们在这一步的目的不是要掌握该主题,只是对这一主题的相关内容做一个全局性的了解。
3.2 确定范围
现在,你至少对自己的学习主题及其全局有了一个大致的了解,下一步就是集中精力去明确自己到底要学什么。在任何项目中,明确项目的范围都是至关重要的,唯有这样才能了解项目的全局,做好相应的准备工作。与此相比,学习并没有什么不同。在学习过程中,大家很容易犯的一个错误就是试图解决太大的问题而把自己搞得不堪重负。例如,试图全面掌握物理学史不切实际的,因为这一主题太过庞大,也不够聚集,你不可能在有限的时间里学会与物理学有关的一切,穷尽一生也不可能。因此,你要明确自己的学习氛围,你需要运用自己在上一步中获得的信息让自己的关注点落脚到更小也可控的氛围。尽可能保持专注,一次只能学一样东西,你可以稍后在回头学习别的分支领域,但就目前而言,选择一个专注而聚集的范围,潜心学习吧。明确学习氛围的时候一定要考虑时间因素。如果你只有一周的时间,你需要本着实事求是的态度确定自己能在这段时间内学到什么。如果你有几个月的时间,你也许能攻克一个更大的主题。你的学习氛围务必大小适当,既能符合你的学习理由,又能符合你的时间限制。
3.3 定义目标
在全力以赴启动之前,明确"成功"的含义极为重要。如果不知道成功是什么样子,很难找准目标。也很难知道自己什么时候已经达到目标。在尝试学习任何东西之前,你都应该在自己脑海中清晰地描绘出成功的样子。当你知道自己的目标是什么的时候。你就可以更轻松地使用推倒的方式,明确实现目标所需的步骤。好的成功标准应该是具体的、无二义性的。不要对自己想要完成的任务进行含糊不清的描述。相反,要列出某一特定结果。或者一旦实现自己所能达到的目标你应该能够做到的事情。比如不好的成功标准:我可以用我的数码相机拍出好照片;我学习了关于C#语言的基础知识;我知道如何使用HTML去构建一个网页 。好的成功标准:我可以使用我的数码相机里的所有功能,能够清晰地描述这些功能是什么,并且知道合适何地使用各功能;我可以利用C#语言的主要功能写出一个小的应用程序;我可以使用HTML5在网上为我自己创建一个主页,展示我的简历和我的代表性工作。你想从自己的学习经历中获得什么决定了你的成功标准是什么。请确保你能借此在学习结束后评估自己是否达成了目标。好的成功标准也能让你向着既定目标不断前进。
3.4 寻找资源
还记得学生时代会针对某个特定主题写报告吗?如果你写好了报告却只有一条参考文献,譬如你所有的信息都来自一本书结果会怎样?你可能会拿到一个大大的"鸭蛋"。为什么现在很多人学东西的时候却与事实如出一辙?关于一个主题我们只读一书,或者所有的研究只使用一个资源。要尝试收集到多种多样的资源以帮助你学习,而不是只读一本关于这一主题的书。资源可以是多种多样的,不局限于书籍。事实上,如今,随着互联网的广泛应用,各种类型的内容随处可见,你几乎可以针对自己感兴趣的任何主题,找到大量的资源。这这一步中,你会想找到尽可能多的与自己所选主题相关的资源。此时你无需考虑这些资源的质量。这一步与头脑风暴类似。稍后你会对你找的这些资源进行过滤,去伪存真,但是目前还是先获得尽可能多的不同类似的资源。要做到这一点,最好的方法就是迅速打开电脑,开始搜索与自己的主题相关的信息。通常可以从亚马逊开始,看看能从中找到多少相关图书;然后用Google搜索,看看能不能找到视频、博客文章、播客和其他有用的内容、甚至可以像"老派人"那样去拜访图书馆。重点就是你要找到各种不同的资源。你不想因为单一来源的信息而产生偏见,更愿意尽可能获取各种各样的信息。通常信息来源的方式有:图书;博客文章;在线视频;专家,或者对你所想要学习的内容已经熟知的人;播客;源代码;示例项目;在线文档。
3.5 创建学习计划
大多数书籍都被分解成若干章,各章在内容上又层层推进,好的技术书都遵循这样的规律:打好基础,做好铺垫,然后逐个展开每一章的论述,如果你已经掌握了一些资源,你可以借助这些资源对自己要学什么,以什么顺序进行有了想法。对于大多数学科而言,学习是一个自然的过程,从A开始,前进到B,最后到达Z。这个顺序对你掌握随机的碎片化知识价值不大。你需要找出在最短的时间内从A到达Z的正确路径,并且到达沿途的主要地标。这这一步,你需要创建自己的学习路径,把它看作自己写书时候的大纲。事实上,当作大功告成的时候,你会发现自己的学习路径可能与一本书的目录非常相似,你基本上就是完成一系列的模块,直到最后达成目标。打造自己的学习计划,一个好方法就是观察别人是如何教你感兴趣的主题的,你可以翻看自己在第4步中找来的图书的目录。综合评估这些图书内容去制定自己的学习计划。这并不意味着你只要复制一本书的目录就可以称其为自己的学习计划了。有的书的内容超出你的需求,有的书的结构很差劲儿。通览你收集来的全部资源,你就对自己需要哪些内容以及如何组合这些内容有更清晰的认识。
3.6 筛选资源
现在,你知道自己要学什么以及什么顺序学,那么是时候决定要使用哪些资源来完成学习任务了。回到第4步,你收集了与研究主题相关的所有资源,在第5步中你使用这些资源制定了自己的个人学习计划。现在是时候对这些资源进行筛选,挑选最有价值的几项来帮你实现自己的目标。这时的你已经有了大把关于学习项目的书籍、博客文章和其他资源等,不一而足。但是,问题是你该如何利用这些资源,很多数据都是冗余,并非所有资源都适合你的学习计划。为了研究一个主题要读10本书、50篇博客文章,并不现实,并且即使你真的这么做了,其中也有很大一部分是重复的,因此很有必要对现有资源进行筛选,从中挑选出最能帮助你实现自己的目标的资源。这样想一想:在第6步中,你就是一位篮球教练,你需要精简队伍。当然,你想让所有人都去打比赛,但这显然是不可能的。你不得不将队员人数减少到自己可以管理的规模。在这一步中,把你在第4步中收集的全部资源浏览一遍,找到哪些内容能够覆盖你的学习计划,你还应当看评论,试着找出品质最高的资源。在购书时,通常可以浏览亚马逊上的评论,找出你认为最物超所值的那本书。一旦完成了这一步,你就可以准备前进道学习计划中的第一个模块。在你实现自己的目标之前,你还需要为每个模块重复第7步到第10步。
4 第7步到第10步:循环反复
现在开始最有趣的部分,接下来的四个步骤会在模拟的学习计划所定义的各个模块中循环反复。第7步到第10步的目标是通过“学习-实践-掌握-教授”(LDLT)的方式真正领会知识,你从掌握恰到好处可以开始的基础知识开始,然后通过操作来学习,同时也通过自我探索棘手问题。之后,你掌握了足够多的有用知识,最后,你能将自己学到的教给他人,以此来弥补自己在学习过程中的不足,同时通过深入思考巩固知识。
4.7 开始学习,浅尝辄止
大多数人,在学习过程中通常会犯两类错误:第一类错误是在知之不多的情况下就盲目开始,即行动太快;第二类错误是在行动之前准备过多,即行动太晚。要想在这两者之间取得平衡,你掌握的知识要恰到好处,足以能让你开始学习,但又不会多到让你无力探索,这样你的学习效果最佳。在这一步中,你的目标是获得足够多的与所学主题相关的信息,从而能让你开始学习,并在下一步中动手操作。对于编程语言或框架这样的技术,这一步还包括掌握如何创建一个基本的“Hello,World!”程序,或者设置子节点开发环境。对于摄影这个例子来说,这一步包括自己在不同的光线条件下调试光圈及其效果。这一步的关键在于过犹不及。你会很容易就失去自控力,开始消化计划学习中列出的所有资源。但是,你会发现,如果你能经受住这样的诱惑,你会取得更大的成就。你要专注于掌握自己所需的、能在下一步动手操作的最小量知识。你可以浏览参考材料,或者每章的摘要,或者各种简介,这些信息足以让你对自己要做什么有基本的认识。你买过新视频游戏吗?你是不是在把光盘塞进游戏机开始玩之前先快速浏览一下用户手册?这正是你在第7步步中要做的事情。你玩一会儿之后,会重新回来完整地阅读用户手册。现在,你只需要知道基本用法,能够正确地玩游戏就够了。
4.8 动手操作,边玩边学
这一步真是既有趣又可怕。说它有趣是因为你真的是在玩耍,说他可怕是因为这一步没有边际。这一步没有任何规则,你可以做任何你想做的事情。如何更好地实施这一步,完全由你决定。起初,你会觉得这步似乎并不重要,不过还是让我们先来考量一下其他的方式----大多数人学习的方式。大多数人会试图通过读书或观看视频来找我某个主题。他们会提前吸收很多信息,然后再付诸实践。这一方法的问题在于,在他们读书或看视频的时候,他们并不知道哪些内容是重点,他们只是因循他人设计好的学习路径。让我们继续学习数码摄影的例子。假定你要学习光线对数码的影响,所以在这一步骤,你会一直练习在不同的光照条件下拍照。你可能只是走到室外调节光圈,也可能在不同的环境下拍照;期间,你并没有意识到自己在做什么。你在探索中学习,也发现了许多问题。现在,考虑一下这里建议的方法,你无需提前了解全部内容,你要做的首要的一件事情就是亲自操作和亲身体检。采用这种方法。你通过探索和实践进行学习,在操作的过程中,你的大脑自然地产生各种问题;它是如何工作的?如果我这么做,会发生什么?我该如何解决这个问题?这些问题引导着你走向真正重要的方向,当回过头寻找问题的答案的时候,不只是这些问题迎刃而解,而且你记得的东西比你学习的东西要多得多,因为你所学到的都是对你很重要的东西。在这一步中,你要采用在第7步中学到的只是,不用担心结果,勇敢探索吧。如果你正在学一门新技术或者新的编程语言,你可以先创建一个小项目来测试这一步的效果。把那些暂时还没有答案的问题记录下来,你在下一步中会有机会找出这些问题的答案。
4.9 全面掌握,学以致用
好奇心是学习特别是自学的主要组成部分,当我们还是孩子的时候,我们就处于主要由好奇心驱动的快速学习期。我们想知道世界是如何运转的。所以我们提出问题,四处寻求答案。借此来了解我们所处的这个世界。但是,随着我们日渐长大。大部分好奇心也随之消失。我们把世界上的一切看作理所当然。结果,我们的学习放缓。我们觉得教育非常枯燥,并不令人着迷。这一步的目标就是让你找回好奇心驱动的学习。在第8步中,你通过动手操作发现了一些尚未找到答案的问题。现在,是时候来回答这些问题了。在这一步中,你要利用先前收集到的资料,进行深入学习。让我们再回到数码摄影的例子,假设你已经在调试光圈的过程中积累了一些问题,这时你可以通过阅读相关主题的资料来回答这些问题。你可以通览已有的资料,仔细查找与光线和其他通过操作发现的问题有关的内容。为了有效利用自己选择的资料,为上一步产生的问题寻求答案,阅读文字,观看视频、与他人交流都是必要手段,付出更多,因为这不仅能让你找到问题的答案,也能让你学到新东西。给自己足够多的时间去深入理解自己的主题,你可以阅读,可以实验,可以观察,也可以操作。不过清记住,你依然没有必要把收集到的所有资料全部仔细看一遍。你只需要阅读或观看与当前所学相关的部分。我们很少能有足够的时间把一本书从头读到尾。这些资料只是帮你自学,基本上你可以以解决在动手操作中发现的问题为主要目的。最后,千万不要忘了,你在第3步中定义的成功标准。试着把自己正在学习的内容与最终目标关联起来。你掌握的每个模块,都应该以某种方式推动你向着终极目标前进。
4.10 乐为人师,融会贯通
大多数人都不敢为人师,我曾经也是。当你在思考自己知道的东西(或者你认为自己知道的东西)是否值得教给别人的时候。很容易陷入自我怀疑之中。但是,如果你想深入地掌握一门学问,想对这门学问做到融会贯通,那么你必须要做到"乐为人师"。除此之外别无他法。在现实中,你只需要超前别人一步,就可以成为他们的老师。有时候,比学生超前太多的"专家"反而不能得心应手地"教",因为他们无法与学生产生共鸣。他们忘了初学者是什么样子,很容易专注于他们认为简单的细节。如果你想教别人自己学到的关于光线如何影响数码摄影的知识,你可以创建一个简单的YouTuBe视频,展示不同的光源及它们对拍摄的影响。你甚至还可以再简单一些,向朋友或同事解释光线是如何影响数码摄影效果的,我敢肯定许多人会对这个谈话很感兴趣。这一步中,我会要求你走出自己的舒适区,将自己学到的知识教给别人。要想确定你确实掌握了某些知识,这是唯一的办法;同时,在你将自己所学介绍给他人时,这也是查缺补漏的好办法。在这一过程中,你要切实剖析并理解自己所学的知识,将其内化到自己的思想;同时,你也要用能够让他人理解的方式精心组织这些信息。在开始"乐为人师"之后,不仅在职业发展和专业成长上有巨大的飞跃,理解能力也会更上一层楼。你可以用多种方式将自己所学教给他人。你可以写博客,也可以制作YouTuBe视频。你也可以跟自己的爱人探讨,将自己所学解释给她/他。重点在于你要花时间将自己学到的东西从大脑中提取出来,以别人能够理解的方式组织起来。在经历了整个过程后你会发现,你很多你以为自己明白了的知识点,其实没有摸透。于是你会将那些以前自己没有太明白的东西联系起来,并且简化自己大脑中已有的信息,将他们浓缩并经常复习。前景非常诱人。所以,不管做什么,千万不要跳过这一步。这一步对于保持信心以及深入理解知识而不仅仅知识流于表面至关重要。
教授知识的途径:撰写博客文章;创建YouTuBe视频教程;发表演讲;与朋友或爱人进行对话探讨;在在线论坛上回答问题。
4.11 最后的思考
学会自我教育需要奉献精神和辛勤工作,但是你也能从中收获无比丰厚的回报。"十步学习法"并非一个神奇公式,能够让你瞬间变得聪明伶俐,但这种方法可以将你的学习过程变得更为结构化,而不是漫无目的地一头扎进浩瀚的知识海洋之中,这种方法通过利用人的天生好奇心来帮助你吸收更多的知识,而我们中大多数人正式在好奇心的驱使下才学到很多本领的。如果此方法中有些步骤对你不起作用,或者你觉得某些形式完全没有必要,完全可以弃之不理。这些步骤本身并不重要,这一学习过程背后的理念才是真正重要的,重点就是你要开发出一套适合自己的自学体系,一套你可以持续不断地加以运用而获得丰硕成果的方法体系。
5 寻找导师:找到你的尤达
在那些伟大的史诗电影或者故事当中,英雄都要经历"成人礼"的考验,每位英雄都有一位导师,有的导师将自己的毕生智慧倾囊相授,有的导师则会在英雄的成长历程中不断地给英雄挑战。在你的软件开发生涯中,拥有一位导师可以说是一笔巨大的财富,因为一位优秀的导师能够让你无需亲身经历现实的重重考验就拥有丰富的经验,你可以从导师的成败中汲取丰富的营养,他为你照亮了前进的道路。优秀的导师可以帮助你迅速地掌握一门技术,比你自己摸索要快得多。然而,正如生活中的大多数事情一样,找到一位导游相当不易。你可能没有X翼飞船能够帮你飞向达戈巴星系找到自己的尤达大师,但是你必须要做一些事情。本章会教导你如何寻找导师的小窍门,包括寻找怎么样的导师,以及如何说服你的导师让他相信你指的她投入,从而真正实现双赢。
5.1 导师的修养
导师可以以各式各样的形态存在,令人啼笑皆非的是,我们通常会犯这样的错误---根据他人的生活来判断其是否具有帮助我们的能力。然而与此相矛盾的是许多最为成功的运动队教练并不是职业运动员,一些"名人堂"级别的教练看起来从未踏足过健身房,有的励志演说家的生活与他们所宣称的那一套大相径庭。他们只是与实际生活中的自己不一致而已。这是否意味着你应该寻找那些最古怪、最疯癫、最失败的人,央求着成为他们的学生呢?绝对不是。但是,你不应该因为某人在自己的生活中成就平平,或者看起来不过尔尔你就对他们的印象大打折扣。最好的老师往往深藏不露。如果你想找到这样的例子,可以去参加一次匿名的戒酒互助会的聚会,或者到当地教堂去转转。通常情况下,你会在这些地方发现很多导师。他们曾经命运多舛,但是在克服了这些困难后,他们学会了帮助和自己一样的人。那么你想寻找一位什么样的导师呢?你可以找一位已经成功实现你想要做的事情的人,也可以找一位曾经帮别人实现了你现在想要做到的事情的人。如果他们是自己做到的,那就太好了。但是,如果他们是帮别人做到的,那就更加有说服力,如果一个人能够对很多人产生好的影响,能够帮助他们实现目标,那么他也更有可能为你做同样的事情。我们还要将我们该如何看待这个人或者他说了什么鱼他取得的成果分开来。这不像看起来那么容易。当我们向别人寻求帮助时,我们必须要假设我们并不知道什么最好,否则我们也就没有求助的必要来。这就意味着,我们提出来的分析结果可能是错的。我们必须想想我们所想的正与真理背道而驰,并且必须想想一位导师已经实现的成果,而不是相信自己的逻辑和推理。想想我们是怎样学习游泳的,当你第一次学游泳的时候,你的大脑里充斥着关于如何游泳和水很危险的假设信息。你可能觉得自己不能漂起来,最后会被淹死。你必须要信赖你的游泳教练,对于游泳,他知道的比你多,而你对于游泳的认知都是错的。在寻找一位导师的时候,你必须要抛开自己的判断和推理,只去关注导师的成就。你可以去找那些已经实现了你所设定错目标的人做你的导师,或者水平略胜你一筹的人做你的导师,你也可以去找已经帮助别人实现你设定的目标的人,即使他自己还没有达到这个水平。
寻找导师时的检查单:1 他们做到了我想要去做的?2 他们曾经帮助他人做到来我想做的?3 他们现在取得了什么可以展示的成绩?4 你能和这个人和睦相处?他充满智慧吗?
5.2 在哪里可以找到导师
你已经知道该找什么样的人做你的导师,那现在的问题是去哪里找到自己的导师呢?你又不能径直走到"导师商店"租用一个。(好吧,其实现在可以在http://simpleprogrammer.com/ss-clarity 找到类似的服务。你可以以小时付费的方式向不同领域的导师请教问题,也可以聘请教练来对你在各个领域的问题答疑解惑)。你最好的选择就是去自己认识的人中找,自己的朋友的朋友、家人的朋友等。如果你愿意做一点儿功课,再四处打听发一下,无论你努力追求的目标是什么,你极有可能在由家人或朋友组成的关系网中找到适合做你导师的人。这种寻找导师的方式最好。因为你从自己熟悉的人或者由家人和密友推荐的人那里找到导师的概率更大。不过有时候你的人际关系没那么广,那你就需要试试别的方法。在给R2D2机器人系上安全带之前,你可以先去查看一下本地的各种社群,通常是各种各样的兴趣小组。如果你想找软件开发方面的导师,可以在Mettup这样的网站上找到本地的软件开发人员小组。你还可以找到很多本领域的创业者团体。大多数本地群组由水平参差不齐的成员组成,但通常在经验丰富的号召下聚会。这样的牛人在回馈社区的同时,也在寻找新的门徒去继承自己的衣钵。即使你不能在这样的群组里找到合适的导师,你也会遇到高人,他要么能告诉你去哪里找,要么认识你想认识的人。如果你想在一家公司里获得晋升,那么在公司内部给自己找一位导师无疑是明智之举,你的老板或者你老板的老板这样的资深人士是导师的不二人选,你很可能会提前接受晋升所需要的各种教育。此外,与高管做朋友对你职业生涯毫无害处。
5.3 虚拟导师
但是,如果你费尽周折还是没能找到一位合适的导师,这是怎么办呢?在这些情况下,你可能需要考虑去"创建"自己的导师。当我们第一次涉足房地产投资的时候,我们甚至不知道有谁已经做过我们想做的事情,我们也不认识别的房地产投资者,也不知道该去那里找到本地的房地产投资者群体,于是我们只能从书里"创建"自己的导师。我们找来一些房地产投资方面最好的书,从这些"虚拟导师"身上我们学会很多东西。除了阅读他们所写的内容吗,我们还尝试去理解他们是如何决策的以及为什么做这样的决策的。拥有一位真实的导师显然更好。当你进退两难的时候,你可以求助于生活中有可能成为你导师的人。事实上,你甚至可以通过互联网认识这样的人,获得他们的指导。在很著名的一本书---Napoleon Hill<<思考致富>>(Think and Grow Rich)[Wilder,2007]中,Hill先生讲述了自己无法找到想要的导师的时候,他通过想象拥有了导师,他阅读自己多崇拜的著名人物的传记,想象与他们交谈。他想象着他们会给他什么样的建议,他自己又将如何应付,着看起来似乎有点儿疯狂,但是Maxwell Maitz---Pxycha-Cybernetixcs([Ppcket,1989再版])一书(也是一本很经典的书)的作者,也阐述了同样的观点。
5.4 招募导师
即使你能给自己找到一位完美匹配的导师,也不能保证这位导师愿意手你为徒。事实上,越成功的人越忙,他们根本没有太多的空闲时间,那么你如何说服未来的导师自己值得他投入呢?完成这一任务的最佳途径就是交换互助。能提供的最好的交换物就是自己对学习的渴望.....还有.....免费工作。没错,拒绝免费劳动力是相当困难的。如果你愿意以单调的工作换取学习的机会,你会发现自己的导师更容易接受你的请求。但是很可能你没有时间或财力为他人免费工作,你也许只是需要在自己追求的人生领域中获得一点帮助,或者你的导师不需要你的义务帮助。你该怎么办呢?一定要有耐心!大部分人在第一次听到"不"的时候就止步不前。别做这样的人,恰恰相反,要做一个别人用棍子赶才能赶走的人----即便如此。过一会儿也还要回来。你的顽强不会总有回报。但是你可能会惊讶地发现回报来得很频繁。
拥有一位导师是非常好的,而成为导师更是好上加好。不管你可以在自己的软件开发生涯中走多远,总有人有机会得益于你的睿智和真知灼见。回馈社会是非常重要的,不仅因为这是一件正确的事,还因为它可以让你自己受益无穷。
6.1 做一名导师
许多软件开人员都认为自己没有必要成为别人的导师。或者你也身处这样的场景。或者。你可能觉得自己没有资格在别人前进路上去教导或帮助别人。我们除了知道自己会写代码,对自己并不了解,但是我们几乎可以100%地保证你一定会在领域成为别人的导师。只要在某些方面快人一步,就能帮助别人。无论你生活在那里,也无论你从事何种职业,你总有机会在某个方面领先别人一步,所以你一定可以帮到某个人。花点儿时间思考一下你会比谁领先一步。想一想自己认识的开发人员有谁正在努力学习你已经知道的东西。你怎样能帮到这些开发人员?你该如何向他们分享自己的知识,即便你还不是一位专家。身为导师并非每时每刻都要成竹在胸、永无谬误。身为一名导师,要客观地看待别人的问题并提供相应的解决方案,而对方之所以开不到这些解决方案,只因当局者迷。通常,你要结合自己的智慧和经验进行观察。但是,有时候仅仅以 “旁观者”的观察视角就足以帮助别人获得成功。我知道,我也曾经亲身经历过,有些人,其实他对我的问题一无所知,他们只是认真倾听我所叙述的,就可以看出我未曾注意到的显而易见的东西。给予我有益的指导。有时候你给别人做导师真正要做的就是给予关注。许多收入很高的生活教练其实就是这么做的。我们在生活中都需要别人的帮助以看到自己看不到的东西。因为当遇到涉及自身的问题和麻烦的时候,我们都会有些目光短浅。伟大的高尔夫手老虎伍兹也需要一位教练,虽然他技不如伍兹,但是他能带着同情心倾听他的门徒,在他们需要鼓励的时候给予支持,在他们需要动力的时候也会从后面推一把。
6.2 身为导师的好处
说实话,虽然我们自认为慷慨无私,其实还是被个人利益所驱动的。这是人之常情。我可以迎合你对社会和慈善事业的看法,告诉你身为导师能够回馈社会、造福大众,这是事实。但是我也想告诉你,身为导师不仅能够帮助他人,也能给你自己的生活带来切实可见的好处。我们将在接下来的几章中深入探讨该话题,其实我们在前面讨论"十步学习法"的时候已经谈到了这一点---教授是学习的最佳途径之一。在你担任导师的时候,你通常会比自己的学生还学得多,你会修正自己关于某个课题的观点,以全新的视角观察和思考。在你做导师的时候,你经常面对的都是最强悍的问题:为什么?为什么这样就是对的?为什么要用这种方法?当你被迫去探究这些"为什么"的时候,你会发现其实自己并不知道为什么,甚至可能完全改变你最初的想法。 当导师有时候也是要讲点儿运气的。你帮助过的每一个人,可能终有一天会超越并且回馈于你。你指导的每一个人,就好比是你埋下种子。种下的种子足够多,终有一粒会长成参天大树,为你遮风挡雨,也学很多你曾经指导过的学生现在已经为你提供来很多帮助。人们总是会记着那些为他们雪中送炭的人。现在,我想站在纯粹慈善层面上告诉你,做导师还会让你感觉良好,这件事情还是值得去了解的---你所做的能够对其他人的生活产生积极的影响,这本身就是一种报偿,特别是当此人无法报答你的时候。指导别人能让你发现人生的新目标和新意义,帮助别人可以给自己带来真正的幸福。
做导师的好处:帮助他人时的成就感;深入学习和领域知识的途径;你的徒弟有朝一日会帮到你;自身的成长。帮助别人成长的过程也就是自己成长的过程。
6.3 挑选一位"值得"指导的门徒
身为导师的一大困难就是找一位值得自己付出时间和精力的门徒,当你的职业生涯越来越成功的时候,你会发现,越来越多的人向你寻求帮助,但是并不是所有的人都是真心实意的,你很容易浪费自己的宝贵时间去帮助那些并没有真正愿意去获得帮助的人。给予这个原因,谨慎选择门徒还是很重要的---千万不要明珠暗投。在决定是否接纳新门徒的时候,需要首先查看他的基本素质(你知道可以导致成功的素质)。一个品行端正、有原则 但缺乏智慧和知识的人,如果给予正确的指引最终也会成功。反之,如果一个人缺乏这些素质,即便获得全世界的帮助,也是无济于事。要找真正有愿意去学习,并愿意为此付出努力的人做自己的门徒。那些因为懒惰不愿意付出而向你寻求帮助的人,不配做你的门徒。你可以找那些希望在你的帮助下加速前进,同时也汲取你的经验以避免犯错的人做自己的门徒。
尽管我们在前面讨论"十步学习法"时已经讲过,但这个概念相当重要。值得更详细地探讨:学习知识的一大方法,或许是唯一可以做到深入学习的方法,就是传道授业。如此深刻的真理却常常被人无视,只因大多数人对教别人心存恐惧,甚至还会觉得此做法得不偿失。本章的内容全部都是教你如何克服这一恐惧心理,理解教学的价值,并探索教学方法,从而让你在学习过程中从"教会别人"收获益处。
7.1 我不是老师
“我又不是老师”"我不知怎么去教别人"----当建议开发人员去传道授业的时候,总会听到这样的借口。是的,当下,尽管并非人人都在教学方法方面训练有素,但是每个人都有教的能力。很多情况下,真正的问题不是能力,而是信心。加入我请你给我演示你已经掌握的技能,你可能毫不犹疑地做了。但是如果我请你演示你毫无把握的技能,这一情况就很可怕了。你觉得你在某方面已然是专家了,才敢把这些东西拿出来教给别人,然而,能将自己的专业知识教授给别人,确实成为专家的一部分要求。如果在某个领域你从来没有教会别人,那么很难说明你在该领域获得了足够的专业知识。事实上,假如让你找出自己已经掌握但却从来没教给他人的一项技能,你会找出不少。我斗胆猜测你已经深刻领会了其中的大部分技能,你可能帮助过别人,促进了对这些技能的掌握。然而,有趣的是,大多数人并没意识到这正是自己在传道授业。教学通常需要正规的资源,而教学的真谛则是与他人分享知识。其实你每时每刻都在做教学这件事,知识你自己没有意识到。有多少次你向同事解释某个概念。演示如何使用某个框架或库?你可能从没带着粉笔和直尺走上讲台,但是你确实教过别人。没有学位和证书,你也可以传道授业。当然你也不说必须成为专家。你只需要比别人领先一步就能够顺利地教他们。因此,尽管你认为自己没有教的资格和能力,但事实是,人人皆为老师。
7.2 在你传道授业的时候都会发生什么
当我们初次接触某个课题的时候,我们对于自己对此了解多少往往都会高估。我们很容易自欺欺人,以为已经对某某东西了如指掌,指导我们试着去教会别人的试试,才能发现事实并非如此。你有没有被别人问过一个非常简单的问题,却震惊地发现自己不能清晰地解答。你刚开始会说:"这个,很明显.....",接下来只有"哦...."。这种情况在我们身上屡屡发生。我们自认为已经透彻理解了这个话题,实际上我们只是掌握了表面知识。这就是传道授业的价值,在你的知识集合里面。只有一部分知识你并没有理解透彻到可以向别人解释,而"教"的过程能够迫使你面对这一部分。作为人类,我们的大脑善于模式识别。我们能够识别模式,并且套用这些固定的模式去解决许多问题,而没有做到"知其然"也"知其所以然"。这种肤浅的理解方力无碍于我们完成工作,因而不易被察觉,然而一旦我们试着向别人解释某件事情的运作原理或背后的原因的时候,我们在认知上的漏洞就会暴露出来。不过这并非坏事,我们需要知道自己的弱点,然后才能对症下药。在教别人的时候,你迫使自己面对课题中的难点,深入探索,从只知皮毛变成完全理解。学习是暂时的,而理解是永久性的。我们可以背诵九九乘法表,但是一旦理解了乘法的运算原理,即使突然记性不好,我们也可以重做一张乘法表。在教别人的时候,你需要重新组织大脑中的所有数据,当我们刚开始学新东西的时候,通常都是些零散的知识点,这些素材在你被教授的时候可能都是组织得很好的,但是一旦进入你的大脑后,他们经常是以非常混乱的形式被存储起来的。你掌握的一个概念,然后又跳到下一个概念。然后又跳回到之前的概念,直到回到之前没有掌握的内容。这种在大脑中存储信息的方式非常低效且混乱。这就是当别人来问你问题的时候,你明明知道答案,但说出却是前言不搭后语的原因,你知道自己知道,却无法解释得一清二楚。在你试图教别人的时候,你强迫自己重新组织大脑中的资料,最好的思维方法就是解释某样东西并将其记录在纸上,或者记录到Word文件或者科幻片中,使你可以将这些互不连贯的信息收集起来,并以一种有效的方法重新组织起来,要想教人,你得先把自己教会以,传道授业为何是卓有成效的学习方法,原因正是如此。
7.3 入门
也许,现在,已经让你相信,传道授业是一件你可以做也应该去做的事情,尤其当你希望自己能够深刻理解已有知识的时候,那你会想知道,如何才能真正开始传道授业?要想切实迈出这一步,成为某个学科的权威并非易事,对于该学科,你也许会得心应手,也可能是忐忑不安。我们发现最好的教学方式就是一谦虚的视角来观察问题,以权威的口吻去诠释问题,当你教别人的时候,无需让自己表现得比学生更智慧、更博学,但要充满信心,坚信自己所说的一切。没人愿意跟一个对自己讲的内容毫无底气的人学习,也没有人愿意学习的过程中被人看作是愚不可及的。要把这一切做到恰到好处还需要一些练习,因为很容易从一个极端走向另一个极端。你要明白,你教的目的是为了帮助别人,而不是为了证明自己的优越性或者寻求认可。想想让你印象深刻的老师们,他们让你沉浸在学习之中,对你的生活产生来积极影响,他们拥有哪些素质?他们采用的教学方法有哪些?那么从哪里着手呢?是不是应该需要开设自己的课堂,广招学生呢?我们建议你应该从小做起,渐渐习惯去分享自己的想法。建议开发人员要开自己的博客。博客是很棒的地方,它能让你在教自己所学的知识的同时不必承受过多的压力。在你掌握一个主题之后,可以撰写博客来分享自己所学。看看自己能不能以这一简单的方式来从接收到的信息中提炼出要点。事实上,很多成功的人士就是这样开始写自己的博客,这是最初的目标也是最重要的目标,就是"化繁为简",当你开始写博客的时候,希望能将自己学到的东西进行简化,从而方便别人理解。然而你并不要止步于写博客,另一个重要方法就是在本地用户组的聚会上或者自己的工作场所进行演讲。只要记住一个原则:心态谦卑,信心满满,而不是傲慢自大。即使你可能不是最好的演讲者,你也会做得很好。视频,尤其是教程截屏,也是一种很好的教学方式,很容易上手,你可以使用Carntasia或ScreemFlow这样的录屏软件来录制你的截屏,并提供一个画外音来解释操作过程。这种教学方式能够真正给你带来挑战,破事你去思考呈现的最佳方式(音频、视频或实际演示).
关于大学学位对于软件开发人员的价值,长期以来存在各种争论,没有学位的软件开人员在职业生涯中和生活中能取得成功,又或者他们注定就是要搜遍每个角落还是找不到工作?在本章中我们会探讨高等教育的优势和弊端,当你没能走上学术之路的时候,你该如何获得成功?对此本章会给你一些提示。
8.1 获得成功必须要有学位吗?
可以肯定,你知道这是一个很棘手的问题,如果你问的是一个有学位的人他们很可能会说"是"。如果你问的是一个没有学位的人,答案可能是""不---除非他们当时正好处于失业的状态,但是,真相到底是什么?你到底是否需要一个学位?好吧,我碰巧有一个计算机科学的学位,但是我刚开始工作的时候我还没有学位,所以我刚好处于两大阵营的中间。虽然这并不能让我的答案无懈可击,但是无论如何,这种经历确实可以让我以两个阵营中任何一方的视角来看待有关求职和晋升的问题。以我的经验,我发现,拥有学位并不是成功所必需的,但它肯定是一个限制性因素,它限制了可以提供给你的职位数量,并且某种程度上也限制了你的晋升,特别是在大公司中,没有学位可能会让你的简历被过滤掉。连被人看到的机会都没有,许多公司,特别是大公司,会根据教育水平来过滤求职申请。事实上,一些公司的招聘政策中明确要求软件开发人员拥有大学学位。当然,这并不意味着你就不能从这些公司获得工作机会,总有一些例外,但是肯定会难上加难。我并不想在这里过分强调学位的重要性,但我希望你能明白,没有学位限制你的选择,在这个大前提下,我确信,学位并不是成功的必备条件。我知道有许多成功的软件开发人员并没有拿到学位,比尔盖茨就是一个很好的例子。他没有完成学业,但是看看他现在的成就。在很多成功的软件开发人员的职业生涯中的大部分时间里并没有学位,但他们也做得很好。在软件开发领域,能力最为重要。与一纸学历证明相比。如果你能写好代码,能解决问题,能证明自己有此能力,你就能走得更远。与其他行业相比,软件行业最大的不同就是:该领域总是不断变化。每天都有新的框架和技术问世。在教育机构中培养能适应真实工作环境的软件开发人员几乎是不可能的,等到教材出版、课表排好的时候,很多东西已经改变。但是,这并不意味着,在软件开发中不存在永恒不变的核心领域。许多计算机科学课程中的算法、操作系统、关系型数据库理论和其他主题都是永恒的。然而最简单的事实是,当你坐在办公桌前开始写代码的时候,你极少会用到学校学到的技能。身为软件开发人员,我们所做的大部分工作,都是如何使用新技术,学会如何用他们完成工作。我们很少需要回溯到计算机科学的本源。同样,这并不意味着基础的计算机科学教育毫无价值。能够深入挖掘问题并理解问题(而不是停留在表面上)的能力更具价值。对大多数软件开发人员来说。在工作中取得成功的更直接因素还是相关工作经验。
8.2 拥有学历的优势
我们已经讨论了拥有学历的一些优势,现在让我们更深入地探讨一下这个问题。首先,学历教育可以确保你在软件开发方面获得全面的教育。计算机科学方面的学位或者其他与软件开发相关的学位,不会给你带来成为优秀的软件开发人员所需的全部教育,但是大多数学位课程能给你打下坚实的基础。你当然也可以自学这些东西,但如果你选择自学,最终会在你的知识体系中留有漏洞,将来这些漏洞有可能会在你职业生涯中伤害到你。计算机科学或相关学位的教育让你学习高等数学,了解编程语言、操作系统和算法,以及一些并非日常工作所必需的核心主题,这能让你拥有良好的基础,能够让你深入的理解自己会做什么,以及各种工作的原理。拥有一个学位也可以帮你即使毫无经验也能踏入职场,软件开发领域很难闯入,特别是缺乏任何经验的话。在这种情况下,有个学位就大不相同。如果从来就没有从事过相关工作又没有接受正规教育,你就很难让别人相信你会写代码。学位还可以给你更多的选择。如果你没有获得过相关学位,有一些职位你是永远不会得到的,尤其是在大公司中。没有学位,做到一定的行政岗位之后就会有一个困难期。如果你决定要转到管理岗位,你可能得获得MBA学位,而这会要求你必须拥有一个较低的学位。
学位的好处:接受相关软件开发方面的全面的系统教育;无需经验就可以入手;有更多选择,更容易转到行政或管理岗位
学位的缺点:花费原本可以赚钱的时间去学习;可能会受困于思维定式,难以打破
8.3 没有学历又当如何
显然,拥有学历 不仅对你无害反而能帮到你,但是如果没有学历你该怎么做呢?如果没有学历,你就不得不更多地依靠经验来证明自己的能力,学位至少可以让雇主相信你具备了某些软件开发的知识,那么如果你没有学位的话,你就要能够证明自己有这些能力。证明自己的能力的最好的办法就是以往的工作经验,如果在过去五年中你一直从事软件开发的工作,那么即使没有学位也能说明你会写代码。但是,如果你刚刚踏入职场,那你的求职之路会很难,你不得不去证明自己确实能够做到你自己所说的那些。因此准备一份作品集是最好的办法。不管你是拥有学位还是拥有经验,都建议你将自己的工作成果总结为作品集。如果你既没有工作经验也没有学位的话,你最好能够展示一些自己写的代码。现在,做到这一点的最好的办法就是在GitHub这样的代码托管网站上创建或者参与一个开源项目。GitHub上托管着许多开源项目,人们可以通过你的GitHub页面看到你的贡献。你也可以把自己创建的网站或者应用程序整理出来,带着这些源代码去面试。我们一直推荐开发人员(特别是刚入行的开发人员)创建一个移动应用,android或iOS应用均可。这是向未来雇主展示能力的好办法--让他了解你具有开发并部署一个完整应用的能力。现在,花点时间想想:你能创建哪些应用,如何创建一套能带去面试的作品集。你有能带去面试的代码或项目吗?另一个要考虑的是,如果你目前没有学位,你是否想将来获得一个?很多人刚开始的时候并没有学位,需要花费很大的努力才会得到第一份工作,但当有了足够的经验之后,会明白一点,学位并不是那么重要的事情。尽管如此,工作了几年后,还是会决定继续完成学位,从而得到一纸文凭。在接受教育的同时,仍然坚持正常工作,所以最后他们不但比自己的同龄人多了几年的工作经验,还获得了学位。这么做唯一的缺点就是,在这几年里,他们不得不在晚上学习。因为函授大学和夜大的学费比普通大学便宜,所以费用不是问题。当你有了工作,读书的开支也少了很多,你也无需借贷。不仅如此,有些公司还会部分或全额支付你的学费。如果你目前还没有学位,你可以采用类似的路线。你就可以通过业余时间上课的方式,在工作的同时获得学位。这是一个非常好的支持计划,能在以后助你一臂之力。另一种方法就是获得专业认证。虽然不如学位那么有用,但是它们没学位那么贵,也能证明你在某领域的专业能力,如微软和Java的职业技术认证、scrum方法认证。你通常可以自学这些认证课程。通过考试获得认证。考试的费用相当便宜。
专注于自身强项,这没什么不妥,但有时候,如果弱点得不到解决,通常会成为你的职业或生活的桎梏(zhìgù)。我们每个人都有弱点,我们的知识也有使我们不能高效工作的短板。我们能发现并清除的知识短板越多,长久来看我们从中受益越多。本章的内容都是关于发现妨碍你发挥自身全部潜能的知识短板的。我们将研究这些短板为何会存在,如何找到它们,以及最终如何填补它们,从而让你不受自己所不知的限制。
9.1 为什么我们会有短板
在很长一段时间里,也许你都不明白lambda(拉姆达)表达式在C#中使如何工作的。在C#中,lambda表达式是一种基本的匿名函授,可以用来创建代理,你可以使用lambda表达式作为快捷方式来声明没有名称的函数。我们在C#代码里不断看到lambda表达式,对它的作用也略知一二,但并没有真正理解。我们知道,如果自己花点时间了解lambda表达式是如何工作的。以及它们是什么,我们的工作会更顺利,但是我们当时并没有时间。最终,它成为我们知识体系中严重的短板,没有花时间去彻底掌握lambda表达式的工作原理,结果浪费了大把时间。最后当我们下决心花时间去了解lambda表达式的时候,我们只花了几个小时阅读并实践,就领会了这一概念。观察我们的工作迅速看出我们的弱点,以及这个弱点又浪费了多少效率。然而,尽管现在这一点显而易见,但当时我们却无法了解。这就是知识上的短板造成的问题。我们总是倾向于掩饰自己的短板,而且我们也总是太忙。忙到无暇去填补它们。如果,我们那么不能真正明白自己在做什么,那么为了避开自己的短板而采取低效的方法。尽管我们最终明确了这些短板,也明白自己深受其害,但基本上依然会无动于衷---即使我们知道自己应该有所作为。这就像牙疼的时候不愿意去看牙医,因为我们并不愿意为此而烦恼。
9.2 找出你短板
你的知识短板并不全部都显而易见,事实上,大多数的知识短板,你只能隐约觉察到。对于自己不知道的,你很难清除地意识到,也很容易忽略。知识短板会阻碍你进步,准确识别它们的最佳方式之一就是看看自己在哪些工作上花费了大量时间,或者一直进行重复性劳动。通常,你会发现,自己的知识短板使工作放缓,额外需要大量的时间完成任务。由于理解得不彻底,你只能摸索着前进,这正是我们不理解lambda表达式的时候发生的情况。我们花了大量的时间去调试代码,而不是用几个小时去理解它。重复性工作也是如此。如何你所做的重复性工作都值得彻查一番,看看是否有自己不理解的地方,如果你这样做了,可能会提高你的工作效率。想想键盘快捷键。你一直重复使用某个应用。但是并没那么高效。原因是你不得不手动在屏幕上拖拽鼠标并点击,键盘快捷键可能就是你的知识短板。花点儿时间学习每天用几个小时的应用(比如你的IDE集成开发工具)的快捷键,一周能给你节约好几个小时的时间。另一种识别知识短板的方法就是,时刻都要试图了解自己不理解或不清楚的事物。你可以维护一份清单,列出自己需要去研究或者自己不清楚的所有事物,追踪有哪些主题总是不断出现在这个清单上。你会惊讶地发现这份清单的增长速度有多快,你只要对自己坦诚:如果遇到不理解的知识,不需要马上就学会,但是一定要把它添加到清单中,这样你至少可以找出自己的知识短板。假如你准备去面试,需要明确自己要学什么,这一方法最常用。尽量找出尽可能多的你在面试中可能会被问到的问题。如果你在找Java程序员的工作,你要整理出一份Java面试题的清单表,把所有题目做一遍,将自己不理解的概念和不会回答的问题整理到这个清单中。等你完成这一步,你就有了一份长长的待研究的课堂清单。这种方法看起来简单明了,但是很多准备面试的软件开发人员对要研究什么以及如何研究一头雾水。
9.3 消除短板
如果不能采取措施弥补自己的知识短板,就算明确所有的短板也无济于事。幸运的是,一旦你能明确自己的短板。那消除短板的实际工作也并非如自己想要的那么可怕了。这就是我们去看牙医很类似。真的,消除短板的关键就是定位短板。一旦你知道自己的知识短板是什么,以及他如何阻碍了你的发展,那么找出弥补它的方法就很简单了。当我们意识到自己止步不前是引文没有掌握C#的lambda表达式,我们就坐下来,花几个小时学习直到掌握它。你必须要确切知道自己需要学什么,保证焦点明确。如果你的知识短板是不擅长物理,那很难弥补这一短板。但是,如果你能确定自己因为不知道弹簧的工作原理而遇到麻烦,那就可以花时间学习胡克定律,然后就一切顺利了。通常情况下,你可以通过"提问题"来快速填补自己知识上的短板。你可能会因自己在某方面的无知而感到尴尬。但是如果你能够克服尴尬,在自己不明白的时候提问,你会发现自己可以毫不费力地填补很多知识上的短板。当你在谈话或者讨论中遇到自己不能完全理解的部分,不要掩饰它,通过提问来弄明白。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。