学会合理安排和利用时间
时间是有限的,每个人都拥有着一天24小时的时间。但是否会合理分配时间和利用时间,将时间的利用效率提到最高,就是一个学霸和学渣(一个比喻而已)之间的差距所在了。学霸将每天除了吃饭、睡觉外的时间都早早安排妥当,将每个时间段要完成的目标都铭记在心,这样一来,学霸的学习效率就达到了一个令人吃惊的地步。反观学渣,一天的时间毫无计划可言,更不知道自己要完成的目标是什么,看一会这个,又看一会那个的,就算再努力也毫无效率可言。那么,问题来了?每个人都是想当学霸的,想要获取更多的知识,我们该怎么去成为一个学霸。
学会合理和利用安排时间
对于我来说,我一直都希望把自己的学习效率提到最高。虽然我们可能不如一些天资聪颖的人每天随便学一学就会了,但是我们可以通过充分、合理的安排、利用时间来拉近我们和这些牛人的距离,提高自己的学习效率。那么应该如何去充分、合理的安排时间呢?
首先我们要有决心和毅力,一定能够学会决心、坚持不懈的毅力。只有拥有了这两个我们才能事半功倍。然后我们开始思考如何分配时间,把每一天多余的时间都利用起来,具体分配好需要完成的任务,并强迫自己必须尽快、按时完成。可以这样:
- 一个月内学完C语言基础(一个月)
- 第1-?天了解什么是C语言
- 开始学习C语言,第?-?天了解数据类型。。
- 以此类推,语句、算法、关键词等等
有一个具体的学习计划
一个明确的、具体的学习计划能让我们感到目标就在前方。所以,在开始学习之前先制定一个学习计划是非常有必要性的,而且这份学习计划应该是尽量具体的,这样我们在学习的时候就可以清楚的知道我们该学什么,为什么要学了。一份好的学习计划应该包括以下几点:
- 总体学习目标(例如可以是一门计算机语言)
- 具体学习计划(例如这一门语言的关键字、语句、以及算法、数据结构、变量命名、代码书写规格等等,如果可以,应该加上通过什么方式,用多少时间学习)
学会放松自己
身为一个程序员,每天工作的时间和面对电脑的时间都是比较长的,拿我举个例子,现在大二,2016年这一年经历了由大一小鲜肉到大二老油条的转换,而这一年我是如何学习的呢?周一至周五除了上课、吃饭这些其他时间都泡在学校实验室里,早上八点到晚上十点,这个时间是很多的,一天最少也有八个小时的时间在连续面对着电脑,或许三四天是没有问题的,但时间长了,难免造成眼睛疲劳和大脑的不灵活。所以,我们需要适当的放松自己,这不是浪费时间,相反,适当放松自己可以时间利用率更高,让学习和工作效率更高,这是我的一点体验。 那么我们该如何去放松自己,让自己在学习和工作的时候都处于最佳的状态呢?我觉得无非是三点。一是保持充足的睡眠,让自己在新的每一天都处于最佳状态,早餐一定要吃,而且最好吃一些营养丰富的食品。二是在感到疲劳时停止工作,听听音乐或者看看周边植物可以让自己尽快的放松。
给程序员的一些学习建议
树立一个正确的价值观(学习目的)
你为什么而学习?找到好的工作,将来更好的创业,和家人还有爱人过上欢乐的生活,能够带着喜欢的人一起走遍那些独美的风景,然后结婚找个地方过上安安静静、幸福的生活。这就是我学习的目标,很简单,却也是我最大、最美好的心愿。
一个正确的价值观是完成任何一件事的前提,一个程序员首先要保证拥有一个正确的价值观。一个正确的价值观可以是我喜欢编程,我想要成为一个程序员;当然也可以是我想要学多一下技术,想要借此获取一份好的工作,让自己的生活品质提高,也是正确的。总的来说,学习编程主要不危害他人利益就都是好的。树立一个正确的价值观可以让我们充满动力,为之努力、奋斗,让我们无形之中多了一股精神追求。
找一个良好的学习环境
一个良好的学习环境也是必需的,环境可以于无形之中影响一个人,使之失去斗志、甘于平凡,无数的事实已经证明了这一点。如果一个人周围的环境都是不思上取,甚至自甘堕落的话,再优秀的一个人也会默默无闻。但如果一个人拥有着良好的学习环境,耳濡目染之下,自然也会自觉的学习,也就变得不凡了。那么,到哪里去寻找这样的学习环境呢?身为学生的我们很幸运,学校的图书馆、实验室,甚至一些学校会有一些研究组织,例如我的学校叫电子协会。这些都是最好、一流的学习环境啊。有如此优秀的环境,出来的人还会平凡没?我觉得肯定至少要比其他人要强很多。
学会自学
我们一个都知道一个人的学习能力直接取决于他的自学能力,无论是对学生还是已经工作的人,自学能力都直接决定着你的学习能力。我个人认为一个学习能力强的人和一个某项技术强的人我肯定会选择学习能力强的人。为什么呢?因为科技每时每刻都在进步,说不定下一秒就又有一项新的技术发布。面对科学技术发展如此迅速的年代,即使是各种语言,数据库都在不断、快速的更新,甚至踊跃出了许多新的优秀语言。程序员也是如此,应该及时了解、掌握新技术。所以,良好的自学能力无疑是一个优秀程序员应该具备的。良好的自学能力可以保证一个程序员跟上时代的步伐,及时掌握新技术。
反思、交流和总结
学习之余进行反思是很有必要的,不然的话一昧依赖于书本、教学视频的程序,照搬照抄程序是没有任何作用的,只是成为了一个代码的搬运工。所以,在学习时,带着一颗找问题的心态,带着好奇的心态去看问题,发现问题,然后通过实践来得出结果,看看是否如自己所想,这样无疑是最好的学习方法。时常反思所学可以让我们更好的理解技术难点,解决问题,所以一个程序员应该学会反思。
技术交流和分享也是一个总结、积累技术的过程,而且和他人交流,或许可以获得不一样的理解方式,促使你从另一个角度去考虑、解决问题,这也是一个技术提升的过程。我时常和我师兄聊天,也很喜欢和他聊天,因为每一次我都能收获巨大。,从他口中可以得知很多“新”东西,然后我也会掌握这些新东西。这也是一种技术交流。
至于总结,更不用多少了,从小学开始老师就说要学会总结,一直到大学也是如此。总结是梳理一个人所学知识的最好方法,至于如何总结,有很多方式,通过写学习笔记、博客都是不错的方式。相信两者间的区别大家都很清楚,就是在于是否分享?我觉得博客是一个不错的总结和分享方式,因为一篇好的博客你需要深思熟虑的去总结所展示内容的特性,要把它完整的展示在学习者的面前。而且,博客可以让全世界所有的技术人员都看到。看了你的博客的技术人员如果发现问题肯定会h给你留下他发现的问题或许还会留下他的想法。这样一来,不仅发现了问题还可以解决问题,发现并学习更多知识。至于那些害怕技术水平不够,写出来的博客会被吐槽什么的,这重要没?重要的是你能够从中发现问题,并有所收获,每一个大神都是和我们一样一步一步过来,才站在现在的高度的。
多看书
初学的时候看一下视频还是很好的,但是如果配套书籍效果更好。视频比较直接,但也比较拖拉,时间较长,因为讲师都希望能够尽量讲解清楚,而且可能会偶尔聊一下其他,比较浪费时间;而书则比较方便,也直指本质,我个人认为看书更能考验一个人的自学能力,而且入门以后看书应该由浅入深。像徐宜生老师《Android群英传》和郭霖老师的《第一行代码》两本书而言,个人觉得郭霖老师的《第一行代码》写的很详细,比较适合入门;而徐宜生老师的《Android群英传》则更适合进阶了。所以个人建议是视频和书籍配套学习,以书本为主,遇到实在难以理解的问题时再去各大网站看对应的教学视频。而且书本一些内容比较羞涩难懂,有利于锻炼和提升自学能力。
团队共同成长
身为一个程序员,每天敲代码是不现实的,谁也不喜欢一整天到晚对着一台机器无言中度过,那样很无趣,而且代码质量肯定不高,我们也需要一些激情来激发我们的活力,或许这就是为什么程序员鼓励师会出现甚至兴起的原因吧。当然,我接下来要说的和程序员鼓励师无关,我想说一说团队的重要性。
既然一个人敲代码,一个人学习很容易奔溃,那么我们为什么不找一些人一起学习,一起探讨,一起进步,一起合作,一起成长呢?而且通常一个人的力量和思维是有限的,偏偏许多问题和工作都不是一个人可以完成的,这个时候团队的重要性就显示出来了。如果从一开始就有一伙人一起学习,一起奋斗,一起成长,并肩作战着,有问题一起解决,有项目和想法一起完成。那么这一伙人肯定会成长为一个不错的团队。而且团队共同学习,有小伙伴一起工作,也就不会那么无聊了不是吗?起码可以有人聊聊天,即使意见不同发生争吵也可以解决问题,有说有笑有伙伴,有团队,遇到问题也就不怕了,因为我们背后还有一个团队啊。
对技术保持好奇心,探索精神
是否对技术保持好奇心和探索精神这一点决定了你适不适合做技术。我觉得一个工科生,如果对技术失去了好奇心了。就好比一个男生,已经对女生失去探索的兴趣了。这是很不正常的!!!所以保持对技术的好奇心是非常重要的。
关注互联网行业,关注新技术
这一点是比较容易实现的,我们可以通过一些知名技术网站、应用、公众号、微博来获取最新的技术咨询。
一些网站比如:
CSDN
慕课网
极客学院
推酷
应用比如知乎,简书等
公众号例如:
除此之外,还有一些Android大神的公众号,这些大神也是时刻关注着最新技术的发展动态,并且会在第一时间分享。还有一些大神的微博,这些都是获取科技知识和信息的不错选择。
根据自身兴趣尽早选择学习方向
至于发展和学习方向问题,当然是越早选择越早决定约好了,不过必须是在有足够了解的基础上。因为越早选择学习方向,留给我们学习的时间就越多,我们能够学习的知识也就越多,未来为了工作,也有更大的优势,而且学习时间越长,所接触的知识就越多,学习能力也能于无形之中提高,对于我们来说是百利而无一害的。所以,如果对某一项技术有了一定了解的话,不妨早点确定自己的学习方向,并坚定的走下去。
形成程序员思维
《道德经》中说“治大国若烹小鲜”,其实编写一个计算机程序、煮一道菜或者治理一个国家,本质上都具有某些相同或者至少相似的逻辑。编程过程中所涉及到的思维方法林林总总,可以肯定,这些思维方法和我们在其他领域所使用到的思维方法有不少重叠之处。那么,在面对“编程思维”这样一个新鲜的名词时,其实我们更应该关注的是这样一个问题:编程思维和传统思维(即我们在解决编程之外的其他事务时所用到的思维)有什么区别?编程思维为传统思维注入了何种新鲜血液?我相信,这才是“编程思维”这个被生造出来的概念赖以存在的基础。
以下的思维当然是一个程序员需要具备的:
- 框架思维
写一个软件,需要搭架构;写一段程序,需要有一个大体框架。如同建一栋楼,需要首先搭脚手架。显然,框架思维不是程序员独有的。
- 拆解思维
一个复杂的问题,看起来千头万绪没有思路,这时需要将复杂的问题拆解成一个个简单的问题,再各个击破。显然,拆解思维也不是程序员独有的。
- 函数思维
许多会被重复使用到的运算过程被储存为标准化的函数,下次再有需要就直接调用,只需要改动输入的自变量即可。这就是函数思维,但这也不是程序员的专利。工厂里的流水生产线往往被划分成若干个工位,每一个工位执行标准化、程序化的动作,这不就是工业生产中的函数思维(或者说自动化思维)吗?
- 算法思维
算法是一个程序的灵魂,几乎每一个高级程序都会使用到形形色色的算法,了解算法,学会使用算法,形成算法思维是很重要的。
突破程序员思维
上面刚刚说完编程思维的重要性,在这里我就说上了突破程序员思维,为什么呢?没错,程序员思维的确很重要,形成程序员思维可以让我们在进行程序设计的时候事半功倍。但是固守程序员思维却容易让我们固执己见,阻止我们从另一个方向去思考、解决问题。因此,在遇到问题时,我们不妨先用熟悉的程序员思维去认真思考,尝试解决问题。如果实在是不能解决,我们不妨跳出程序员思维,从其他角度去看待这个问题,或许会另有一番想法。
将技术用于实践
正所谓“技术源于实践,用于实践”,学习技术的最终目标就是实践。“实践是检验真理的唯一标准”是不会错的,无论你学了多少,掌握了多少,不实践,你怎么知道你学的是可以应用的。因此,将技术应用于实践是学习的最终目的。实践可以通过做一些小项目,参加比赛来完成。小项目、小作品无疑是最好的实践,可以是自己或者别人的突发奇想,也可以是一些火热的开源项目。总之,实践是实现技术价值的唯一标准和真理。学习之后,实践吧!
致我的2016踩坑之旅