学习之路

学习之路

讲述了作者自己编程经历,以及写这本书的过程。写一个成功的模式需要历经许多从业者的使用、反馈、不断的修改验证,才能越来越完善。我们目前使用的编程语言、编程模式、以及读到的技术书籍,都是作者反复推敲验证过之后的成果,我们确实是站在许多人的肩膀上。在本书的一开始,作者讲述了在编程道路上,总结了大概学徒期、熟练工、师傅这三种阶段,这三个阶段不能按传统行业那么单纯的定义。处在师傅阶段的时候,在学习新的语言时,也需要经历学徒期、熟练工等等。

在编程道路上,处在不同阶段,或者不同状态下,需要采用不同的学习模式来应对。

第一部分:在学习过程中要持有空杯心态

在学习一门新的语言过程中,需要理解支撑其规则的底层因素及原理。只有了解了原理,才能适应实际使用过程中的各种情况,以不变应万变。 在实际工作中,发现问题时不要回避,寻求解决问题的方法、敢于失败、去尝试不同的解决方法,以找到最合适的解决方案。

持有空杯心态来吸收接触新的知识,领域。与身边的人沟通、交流;在这个过程中不要隐藏自己的无知,相反要正式自己的无知,多向专业的人请教问题。在工作中不要不懂装懂,不要去承诺一项自己根本无法完成的工作,来显示自己的技术能力。要让同事们看到自己的学习能力而不是已经掌握的知识。多去看一些技术厉害的人、收集她们的履历、学习的书籍、找出对自己有用的,总结出一份计划,并付出行动;以解决实际问题来学习新的知识,学习一项技能之后,做一个实际的小项目来验证自己的学习成果;养成定期把自己的履历审查一遍的习惯,整理自己的技能列表。

发现了一项技能,身边的人都了解而自己不了解。这时采取行动去掌握(看相关文献、API,然后做实际的一个小项目)来填补自己的这项技能空白,在此期间不要因为自己的学习影响了公司的工作,也不要发现了技能空白之后,不采取行动去填补它,这样只会让自己更无知。能意识到自己缺少的东西并补充它,就会向前迈进了一步,准确的自我评价,确定了自己走了多远,并记下知识中的空白,要对自己已有的能力,和即将胜任的技能以及长期感兴趣的知识都了然于胸。

如果觉得在目前的职位上如鱼得水了,没有什么挑战性的时候,尝试申请一些具有挑战性的工作,当然也不要冒失的去申请自己根本无法完成的工作,要结合自身的实际情况,这样技能得到提升,又不耽误公司的项目进度。

第二部分:编程之路是漫漫长路

要理解不是所有的人都会在编程之路上一直走下去。有的可能因为各种原因不得已选择其他的职业;有的可能对编程失去兴趣了;有的职位得到的提升,工作过程使用代码很少很少了;所以在学习过程中要明确自己的目的,明确自己要走的路。 如果确定自己要在编程之路上走下去,肯定会遇到许多状况会导致自己的意志不坚定。

1.想要在编程道路上走下去,首先先得保住饭碗,在公司工作要以工作内容为主,技能是简历在牢固的关系之上,是要解决实际问题的,不能太理想化,影响了公司的项目。

2.写下15项能力为你提供的动力的事情,再列出5项最重要的为你提供动力的事情。

3.当现实生活工作扼杀你对软件工艺的激情时,要采取措施来保护并培养自己对软件技艺的激情,做点自己喜欢的事情,从工作中找出一些感兴趣的东西。

4.为自己的职业生涯确定一个合理但又须付出努力的下一步,到达自己的下一步,然后继续制定整个过程计划,直到抵达理想的目标。(过程步骤具体化)

第三部分:准确的自我评估

在学习编程的道路上,要对自己做出准确的评估,其实的不太容易的。你可能知道你学习的起点在哪里,但你不知道学习编程的终点在哪里,尤其是处于学徒期阶段。所以要寻找办法,来帮助自己对自己做出准确的评估。 这时候就寻找优秀的人,跟优秀的团队一起工作,在团队中只求最差,即宁为狮尾、不做狐头。在团队中只求最差,这时候就会重视自己的学习技能的机会,从最后面开始一路追上去,不断找到改善的方法,不断模仿更强的开发者,知道跟同一团队处于同一水平上。跟优秀的程序员一起工作是一种更好的学习方法,能够帮助自己维持更加准确的自我评估。在学习过程中,寻求同道中人,一起学习,或者定期进行沟通交流,并记录自己学习的过程、经历。无论是正面的还是负面的。谦虚是成功学徒过程的基础之一,与自己的志向结合,谦虚能让你集中精力,并保持沿正确的方向前进,没有谦虚你很容易过早地宣告自己学徒期结束,并遗漏一些重要的课程。编程道路是一条漫漫长路,要花点时间好好利用自己的学徒期,要明白不管工作多久自己,还是一个初学者。

第四部分 恒久学习

1.在学习的前期,提高自己学习的能力是关键的一步,尽管有时候知识多的很,必须采取一些方法和技巧来高效的获取,理解、维持并应用新知识,通过多个维度来寻求新的知识和经验。比如:看技术博客、看软件大师都在做什么、看别人问的问题,并尝试回答。

2.在开始写程序时,避免不了会出错,而实际工作中是不允许出错,或者不允许频繁性的出错。为了避免这种错误,在私底下,我们需要对新学的知识进行不断的实践、敢于失败、总结经验。

3.要尝试使用源码,找别人的代码来读一读,看看人家是怎么构建项目的,为什么要这么写,试着重构代码,来理解人家这么写的原因。看代码的过程中遇到了跟自己意见不一样的情况,思考一下,作者是否考虑过你想法,也有可能是作者遗漏的部分。

最好的学习方法是阅读源代码

在软件开发领域做一名会思考的从业者。包括经常反思自己的工作状态。考虑下自己的实践是否过时。对团队中都想当然的事情,多给自己画几个句号。对工作中的出现的问题,多一些观察、思考,从而做出改变。在日志,个人wiki或者博客中为自己的行程做个记录,将自己学到的经验按时间顺序记录,这会给你所指导的那些人提供一点启发。对于我自己而言,是记录自己所学,所做。然后经常是翻看下自己写过的东西,可能会有不同的理解或者需要添加新的修改。在开始学习的时候,就要养成定期分享所学的经验的习惯。形式可以是撰写博客,或者跟你的同道中人一起开展会议,做演讲,或者为正在学习的各类技术技巧编写教程,可能一开始会很难。有时候自我评估会很片面,因为自我评估只能相对于过去拥有的能力,永远缺乏客观性,其他人会很容易歪曲自己对自身能力的判断。这时候就需要建立一些机制,定期收集关于自身绩效的相对客观的外部数据,通过今早,经常而且高效的寻求反馈,至少你可以提高知道自己不行的概率。在工作过程中,失败是不可避免的,迟早会发生在每个人身上,所以要学会失败,设法确定你常常会在哪些情况下失败并试着解决哪些需要改正的方面,这并不是要你沉溺与对过往食物的自悯,也不是一次追求完美的联系。真正的目标是让你对导致失败的模式,条件,习惯和行为有所自知。有了这种自知,你可以做有意识的选择,而且基于对自身能力边界和局限性的了解,采用自定路线模式时能使之趋于理想状态。

读完前四部分,觉得很有必要做一个自我整理,整理自己所学、想学知识,做一个自我评估。系上白色腰带,从学徒期开始,持续动力,重走慢慢长路。

第五部分 安排你的课程

学习了一段时间以后,要学会自己看书,通过别人指导、推荐、整理出一份读书列表。

用他来跟踪你准备要读的书,并记下已经读过的书。每天拿出固定的一个时间段读书,比如通勤路上,晚上回来到睡觉前的一段时间。在此期间,如果跟“找人指导”,跟“同道中人”交流,会事半功倍。在工作中,听到同事们说一些没听过的概念,要暴露自己的无知,向他人请教那些不知道的概念,以及他们的出处,并把他们加入读书清单。在读书过程中,要结合自己的实际情况去整理读书清单,读适合自己的书籍。

对工具的使用

学会深入挖掘一些工具、技术和技艺,对知识的学习达到“知其所以然”的程度,理解其原理,可以解释其原理,也能增强自己的自信心。不要靠巧合编程,需要难以解决的 Bug,愿意从一个系统从上到下层层追踪问题,愿意花时间弄清楚弄够解释这一问题的知识。时间是公平的,你花多少时间,就会收获多少。在这个过程中有一个方法那就是从第一手资料获取信息,比如看源代码、原版API。对于知识的运用,要做到不仅仅会使用,要深入理解表面知识背后隐藏的计算机原理和基础概念,这样在采用的实现中会有权衡和取舍。

未完待续…