高效学习编程

选择目标

前端开发或是后端开发

前端开发:HTML5+CSS3

后端开发:

编程语言: PHP:更适合小型到中型网页端应用(大型应用就需要其他语言配合使用) JAVA:更适合大型应用,企业级应用(中小型应用用JAVA就是大材小用,浪费资源) PYTHON:更适合用于爬虫,人工智能,脚本类应用

目标寻找法:

在选择学习目标时,我们要有对技术的判定能力,不要轻易听取一些片面的评价和定论而下决定。

选择目标时的决定因素:

  • 在目前最实用的——学到就能用,更容易上手也更有价值
  • 难度跨度不要太高——难度跨越越大,时间成本会越高
  • 感兴趣的——感兴趣才更能坚持,更有动力
  • 社区更大的——社区越大遇到问题时找答案的途径越多
  • 开源项目优先——开源的项目的技术更有未来

一旦锁定一个目标就要能懂、能用、能变,再扩张我的学习领域到其他的技术。

  • 能懂——能懂得技术或者知识的理论和原理
  • 能用——能把技术或者知识投入使用,用在实战项目中
  • 能变——能对学到的技术或者知识举一反三,能变通,延伸拓展

不要蜻蜓点水

这是很多初学者都会犯的错误。不要浅入浅出,得不偿失,得不到技能还失去了时间。

学习要一步一个脚印,刚开始学习编程的人往往会同时学习多个技术,其实这种学习方式不但没有效果反而还浪费时间生命。锁定一个学习目标就要专注一个点上学习,重点学习。

我要学习Python,在稳固了基础开发语言之后,选择一个框架开始深入专业实战知识。当你稳固了更专业的实战知识后,就可以开始学习这个技术的周边工具(比如IDE)让开发更高效敏捷。

专研方法:

  • 学习每一个知识或者技术,一定要深入浅出,深入学习挖掘,吸取重要的技术知识。
  • 专心、专注、专研是一个技术人才的基本素养!

先专注于会用而不是能用

很多开发者习惯性会过于专注于工具使用,写法,性能,可扩展性等等。初学者一般都会掉入工具使用和写法的坑,而资深的开发者会过于专注于性能和可扩展性。这时候往往会过度消耗学习时间,甚至忘记最初的学习目标。

用一个简单易懂的例子,”一个机械工程师不会浪费时间想怎么更好的使用TA的扳手,而是怎么可以组装好一个机器的部件” - 很多人会想,学会用更好的工具不是可以更快地安装好吗?但是现实是,你都还没有弄懂怎么安装,再好再有效的工具对你来说都是无用武之地。所以还没有学会前行,就不要先想着怎么跑。

再举例,如果你是正在学习使用Vue框架,不要太过于执着怎么使用Vue的周边工具,高级写法,性能隐患问题等等。你的目标应该是创建你的第一个首页然后直接投入开发一个小项目小应用。这样你的产出才是最高的,因为这样做更加专注于学会怎么使用Vue来实现功能,而不是更好的使用Vue框架。

在学习的时候要专注于会使用新的技术,而不是怎么用各种花式技巧来提高使用能力。

还有很多童鞋开始学一门技术时,会先开始看一大堆的知识和书籍,或者去看一些大型的项目用这个技术是怎么实现的。其实更有效的学习方式是小步快跑,学习的过程中开发一个小项目会让你更加有动力也更有趣。

约定自己在限定时间内完成小目标,如能完成就给自己一点小奖励。例如,你对你自己说“如果我下周五完成这个功能,我就让自己去看个电影”。记住奖励不需要很大,小步快跑,小奖小利,这样才能维持发自内心的动力和驱动力。不过就算没有达成小目标也不用气馁,失败是成功之母,所有成功的人都是通过在失败中总结成长壮大。

采用学习策略

建立策略

学习策略-能懂、能用、能变:

  1. 深入了解技术的原理-了解清楚才能更好地在不同场景下运用自如(可以通过看书、看文档)
  2. 通过代码理解运用方式-看懂基本原理,就可以看看别人是怎么在项目中使用的(在 github 找开源项目,看教学视频等等)
  3. 实战:做一个小项目-用自己理解的知识、学到的技术实现一个功能,做一个小项目。
  4. 发挥你的想象力-能用后如果想要进阶更高层次,就要发挥你的想象力,能举一反三,在你的小项目里面加功能。

其实上面的策略无非就是学习过程中必须有的理论、运用和变通。这三个学习维度要保持一个良好的平衡。这个平衡是非常重要的,只有理论那就是“纸上谈兵”,只有理论和运用那只是个“代码搬运工”,如果三个维度你都才是就是“大师”。

当然所说的平衡不是说1:1:1,完全平衡是很难的。对于一个初学者的话可以先3:2:1,中级就可以开始维持2:3:1,到了高级就可以维持2:2:2了。

时间管理,提高效率

番茄工作法要用起来。 小阶段,每25分钟休息5分钟。每4次小阶段休息15到20分钟。 使用这种方法后,我们会觉得在25分钟的小阶段里面,你的时间是很紧迫的,每一分钟你都觉得宝贵。你会发现你没有时间去浪费,自然而然地在25分钟内提高了效率。无形中你的学习和工作的精神集中程度就会有所改善。 除了提高效率外,我们会发现一天几个小时的学习或者工作都不觉得很疲惫。因为在25分钟的高度集中后,你合理地调整了休息,让自己非常平衡地控制好疲惫程度。所以,你会发现一天里面的学习和工作都变得轻松了。

多思考,多教学

通常我们学习时都是鲸吸似的,然后实战应用,其中还有很多细节和理论我们并没有理解透彻。所以,运用就不够自由,无法延伸一些创新的用法,或者举一反三。

在不断地学习过程中,先从小处着手,做一个小项目,后来技术水平逐渐提升,能够承接大项目、带领一个团队了,这个时候会遇到很多问题。很多问题和新知识都要通过讲解或者教学来培养组员和队员。这个过程中会遇到各种不同思维程度和学习能力的人,每个人的理解能力或者理解方式都不一样,甚至看待每一件事或者知识的角度都不一样。我们会发现自己教学或者讲解某一个知识的时候需要使用各种不同的方式和方法。往往就是这样触发了我们自己去换角度思考和理解这个知识,而启发了我们自己对这个知识新的认知。

通过教学和讲解来把我们的知识传递给另外一个人,需要重新调整思路、逻辑,切换n种方式和说法。在这个过程中,我们会挖掘出新的知识和新的观点,新的思维方式,新的理解角度和深度。这就是自我思维切换而达到的知识深度挖掘和提升的过程。这种就是我们经常听说的小黄鸭教学法。

不知道大家有没有听说过,当你思路不清晰,或者有问题无法解决的时候。你可以找一只小黄鸭,你就开始讲解你的思路,逻辑或者问题。这个过程中你开始重新整理自己的思路。如果你能让一只啥都不懂的小黄鸭学会。那这个时候你的逻辑会更加清晰,问题起码都解决了50%以上了。初级学习的时候要用鲸吸大法,进阶到高级的时候就要用小黄鸭教学法。能教会一只小黄鸭技术,你就是大神了!

记录,总结

我知道自己并不是过目不忘的那种人,所以,在看书学习的过程中,做些记录是非常有必要的。更何况有些知识即便记住了不会用不理解也是白搭。一个程序员经常面对着反复又反复的任务,记录学习进度和总结学习知识很重要。往往你学到一个知识的时候,你会使用这个知识投入实战中。你沉迷在代码海洋之中无法自拔之后,你会发现你自己不记得你入海前学到哪里了。所以,记录学习进度很重要。

记录学习的方式:

  • 把学习后的知识仅仅写成文档
  • 把知识写成博客
  • 总结重点,记录重点
  • 编写学习规划,就是所谓的ToDo规划表

在学习过程中,如果把知识记录,当你要使用它的时候能快速找到。那你就要有总结知识的习惯。把你学过的知识、技术、技巧都写成文档,写成总结。这样加强你的印象,同时也整理出了属于自己的开发手册。当你遇到了某些问题的时候就可以通过你自己的开发手册找到答案。

改掉以下习惯

  • 完美主义 初学者经常会陷入的一个坑,从一开始就追求完美,完美的写法、完美的实现方式、完美的设计模式。其实有时候这些都不是最重要的,反而导致有延迟和延后的严重情况,导致进度一直无法推进。追求完美往往把简单的事情变得复杂。不要总是为了完美而无限徘徊,为了最好的解决办法而纠结,为了对的方式而浪费时间。往往开发过程中,时间是有限的,需求是无限的,连完成都无法保证,就更没有时间追去完美。

  • 对比心态 很多行业内的新人或者准备入行的都会去和行业内顶尖的人做对比。有一句很火的话——“没有对比就没有伤害”,很多人用来对比好与坏、美与丑。其实另外一层意思是:如果对比会对你自身造成打击又何必常常带着对比之心来对待自己和事情呢?对比不一定会有伤害,反而是对比的心态造成了悲剧的开始。应该认可自己的优点,接受自己的缺点,然后去找到别人的优点、发现别人的缺点。让别人的优点和缺点给自己带来成长。优秀的人不是天生比你优秀,而是Ta们更懂得不自我透支,更懂得养成在无形之中让自己成长的习惯。

  • 复杂化 学会把复杂的问题和事情拆分成多个小问题、小事情。复杂的问题和事情就会变得更加简单。因为问题和事情往往有多个点需要突破,把每个点拆开逐个突破就会更加简单轻松。

  • 悲观心态 很多人遇到巨大难题时都会来一句“没有办法,做不到”。如果做不到,无论何事,都是自己还没有真正想做!没有做不到的事,只有自己不想做的!失败究其必有原因!成功必有方法!

  • 过度透支 学习累了就躺床上休息,吃饱喝足了就坚决不吃了。养好一种自律的习惯,不过度透支自己的时间和生命,这样才能有更好的精神和态度面对问题和困难。近年来有很多人给程序员打上的标签,”加班狗”,“无日无夜写代码”,“生活邋遢”,“衣服全是同款黑色”等等。确实,作为一个程序员,我们花了大部分时间都在想问题,编写着神乎奇幻的代码和程序。但是我们都往往忘记了自己的身体已经在一点一点透支。到了那一天你停下来了,你会发现,身体不行了,除了写代码其他个方面的能力都没有时间去提升。也没有劲学习成长了,整个人好像很颓废,生无可恋一样。所以学会不透支自己,才有更好的状态和精力学习和突破自己。

总结

无论学习技术还是学习任何其他领域的知识。在学习这条路上,都会有坑坑洼洼,各种颠簸。所以我们学习要有技巧,要有方法,才能在有效时间内收获最大化! 学习要点:

  1. 锁定目标-选择有用的、对你现阶段有价值的目标
  2. 采用学习策略-深入学习,投入实战,总结经验
  3. 管理时间提高效率-番茄工作法
  4. 多思考多总结-写博客,做教程
  5. 改掉不好的习惯和心态-有好的习惯才能更轻松地学习和成长

一个人一生是有学不完的知识和技能,然而人一生的时间是有限的。所以要把我们的时间和收益最大化才能比同年龄的人跑得更快、学得更多,能力更强!

大家一起在学习的道路上继续加油吧。

参考资料: 《如何高效学习编程》——https://tridiamond.me/2019/11/01/notes/learn-programming-more-effectively.html