我是如何学习编程的

前世因

无论你信不信,反正我本身是信了,学习对我而言是一件用来消磨时间的事,仅此而已。php

  • 大一刚来的时候,听别人说学习二字,更多的是一个玩笑,什么不学习就不能作朋友之类的话,听到如今大三,不学习依旧是不学习,说到底,学习这件事真的是因人而异的。css

  • 我自认为性格不算孤僻,最可能是喜欢独处而已。爱好很少很多,喜欢听歌,写东西,古风,跑步,日语,汲取新的东西。未必是专业上的,新闻也能够。html

  • 都说兴趣是最好的老师,这话我以为没毛病,但我更倾向另外一句话,兴趣是能够后天培养的。就像,我对编程的热爱,对代码的诉求。前端

  • 说来你可能会有些意外,甚至我本身也以为意外,大一对编程恶心到极点,如今居然成了自认为极其重要的东西。java

  • 凡事有因,一定有果。说来惭愧,从高中到大学,上来就干编程,又没什么编程基础的我,对入门的编程语言C恶心到冒泡泡,因此上完第一堂课内心已经放弃编程了,以为本身可能不适合软件工程这个行业。node

  • 因此,大一整个学期,我基本都耗在了日语上,我热爱的日语啊,真正让我领会到了什么是学习能力的培养,什么是独立学习。git

  • 学东西,学的本质不是知识自己,而是学习过程当中对能力的培养。若是你只为了学而学,没有本身的独立分析和看法,只是照猫画虎,意义不大。github

  • 自认为个人学习能力是在一年多的日语学习中培养出来的,这也为我后来学习第二门编程语言java打下了良好基础(说来惭愧,我如今c依然很差。)web

今世果

一直到如今,我也并不以为本身编程水平有多高,学无止境。当你进入到一个新的层次,你会发现你自认为的高大,眇小而又卑微,只有无知者才会以为本身什么都会,单凭helloworld就敢一刀闯江湖。和大一入学,对编程一无所知的本身相比,我以为仍是成长了很多的。ajax

  • 学东西须要受点刺激,信否?

  • 嗯,我是信的,初学java一学期,其实毛毛也没学会,问题可能是在本身身上。当时依然处于恶心编程的阶段,看到代码就烦。

  • 就这样,一学期结束了,老师要求作一个管家婆的项目,而后要答辩,打分,一个个过。是的,当时咱就慌了,固然,也仅仅是慌了一瞬间。闭眼,回想当初的c语言答辩,深呼吸以后,分分钟有了底气。

  • 咱当初c语言毛毛都不会,临近答辩一天预习了一本书,最后答辩过了。这点和学数据结构基本同样,一天预习一本书,没错,就是预习。固然,不推荐这样,后遗症明显,瞬时记忆理解不是特别深,容易忘了。

  • 你可能会好奇,我是怎么作到的?这里举一个关于seo的例子来讲明。补充下,这东西全称是搜索引擎优化,有兴趣的能够查查。一个网站离开seo能不能跑??能,固然能够,丝毫没问题,不影响你查阅。可是为何不少网站,或者说几乎全部网站都要考虑seo呢?很简单,提高搜索引擎排名,扩大知名度,提升商业价值。

  • 说白了,就是学习能力的培养。这是一个日积月累的过程,是真的能够创造价值的,不会一天两天见效,速成的那些在我看来等同于商业竞价,拿钱看效果。

  • 日语学习过程当中就培养了个人这种学习能力,早读,预习,分析,复习和长久的坚持。这种方式已经成了一种习惯,大一六点左右起床去日语早读,虽然如今大三了,再也不去日语早读,但仍是会这个点左右醒,起来敲敲代码。

  • 因此,java项目答辩前夕,我把项目需求文档和总体设计思路,基本的业务逻辑,层次结构,都背下来了,并加以理解。说来惭愧,直到当时答辩结束,我依旧分不清什么是接口,什么是类,我懂的只是理论,拿出代码基本凉,那会儿一学期写的代码不到100行。

  • 最终结果如何??我理论的掌握确实获得了老师承认,对项目的理解成了加分项。固然,也让我找代码,那确定是找不到啊,当时灵机一动,扯了一句软件需求分析中一个重要思想,推迟实现。也就是不要急于编码,老师一副啼笑皆非的样子说了句行吧,而后让我本身说给多少分,当时脸比较大,要了80,结果老师也真就给了。

  • 整个过程当中明明毛毛不会,愣是一副大神的样子,咱假装的确实不错,也就是从这个时候开始,我意识到,不能这样了,必须真的会点东西。这是主要刺激,还有其余的刺激,小学弟学妹问我程序代码,咱也很差意思直接说不会,又很差误人子弟,因此习惯性的推荐给我认识的大神,一来二去感受好尴尬。

  • 不在一个层次聊天真的没毛毛意思,大一来我还问一位大佬怎么压缩,如今,真想一砖头………有问题不知道问百度,谷歌吗?垃圾问题问出来是浪费双方时间。固然,这都是受过无数刺激以后获得的结论。

一轮回

巴拉巴拉到如今,说点实际性的东西,我如今java的掌握程度,能够独立作些小东西,好比oa自动化办公系统,汽车租赁系统,搭建我的博客等基础项目。用ssm框架,或者javaweb系列,servlet+jsp。固然,这些我都处于会用的层次,调用原理,执行流程也知道一些,太底层的好比什么框架底层原理,jvm运行,垃圾回收机制,线程安全等太深的,没研究过。我的仍是比较喜欢前端,java如今热度持续降,市场基本饱和,又是我自认为学的不太好的语言,暂时没有深度学习的打算,我更想把精力放在前端上。

  • 在这里交个底,能用java写的东西,理论上我均可以用php和node写出来,语言上的差别在我看来就是api和语法的区别,业务逻辑都是同样的。对于前端,基本一套系统走完,从html+css+js到三大框架,组件开发,构建工具,版本控制。这些掌握程度有深有浅,如今正在查漏补缺的复习。

  • 语言是有相通之处的,多而不精是真理,但多学并无错。我java的面向对象仍是经过前端js高级阶段面向对象设计学的,这之中也受到了php面向对象的影响,相辅相成,只要你心不乱,api哪怕乱了,查就完了。php内置几千个函数,都背下来,闹呢?学的过程哪些该记住,哪些不用刻意记,真的很重要。

一回眸

写到这里,也许才是你真的想看的部分,那以前的都是废话??因人而异吧。咱也是写过网文累计字数将近两百万的人,废话在所不免。好啦,下面说重点。

理论基础

  • 一直到如今,我也同样重视理论。一个东西你都不知道它是什么,那你学个毛?不知道什么是封装继承多态能玩面向对象才是真的见了鬼。
  • 我对每个概念的理解,习惯性的找一段代码来解释。固然并非都有代码,没有就找图文,只有你真的理解了,才能会用。
  • 理论不是独立玩的,若是你自认为分清了,那就本身写一个程序,能跑通那种,检测一下。
  • 对理论的理解不要只知足于教程demo,没有本身的扩展,你写一万个demo你最多也就是一个大demo写手,算不上什么程序猿。

资源选择

  • 因人而异吧,建议你们根据语言特色来选资源。我在学java基础的时候,用的是传智播客的课件还有配套练习题,一步步将理论转成代码,不懂的看视频,百度,论坛,博客,总之用尽一切手段把它搞明白。学完java基础我用了国庆七天,天天从六点到晚上十点,不是敲代码就是在敲代码的路上。javaweb的时候,我更多的就是看视频,黑马49,市面最广,热度最高的一期资源。
  • 等到了php,我是对着w3c手册大体撸了一遍,而后是一个叫php全栈的视频,源码+笔记+视频,也是传智的,时间问题,我没学完,好比框架。那个时候前端恰好学到ajax,和php配合感受贼爽。果断把java扔一边开始玩php和ajax的数据交互,巩固后台业务逻辑。
  • 后来到了node,对这个感兴趣多半是由于邵山欢老师,具体很少说了,反正贼拉喜欢这门语言。当时先看了传智李鹏周老师的node,懂了五成。等差很少半个月吧,又学了一波邵山欢老师的两套视频课,那会儿php和java理解也加深了不少,同为后台语言,再杀回来作node项目,感受路由啊,express啊,npm啊,芒果啊,都有了深层次理解,作项目也就驾轻就熟了许多。

编程没有捷径

  • 若是说有,就是多敲代码,概括总结频回顾。还有,多敲代码不是让你反复helloworld,那是沙雕,会的你反复个毛?让你反复是指的那些理解不是特别透彻,感受会又不太会的东西,将中层知识拿下,算不得大牛,也不至于去搬砖。

合格程度

  • 写到什么程度算合格?你一看某个功能能够张口就来它的业务逻辑,api说不上来不要紧,知道这部分怎么用就行,到时候百度查api就行了。
  • 好比java文件上传,须要对应的jar包,你忘了包是什么了,不要紧,百度。
  • 好比你想用js实现一个弹窗,可是你忘了alert这个小家伙了,不要紧,百度。
  • 好比你想用php读取文件,忘了函数是什么了,不要紧,百度。
  • 好比你想用node处理原生不支持的post请求,须要第三方插件,但具体是什么忘了,不要紧,百度。
  • 但你好好想一想,若是你都不知道java文件上传须要jar包,js能够实现弹窗,php有内置文件读取函数,node天生不支持post请求。那玩个毛?怎么查?你还不如说谷歌浏览器已是成熟的浏览器了,能够本身编程。

兴趣培养

  • 若是有一天你真的对代码感兴趣了,我想大可能是程序一把跑通带来的温馨感。或者说,是本身按照本身的理解写出符合预期的程序的成就感。一开始写代码就是慢,但不要紧,一切都是一步步过来的,我从基础的helloworld开始,基本不用提示,反复熟练到必定程度再用提示,由于这个时候,再手写就是浪费时间。

学习时长

  • 一门语言学多久算学通?我以为这个问题没标准答案,真正精通的,太少太少,编程界的鬼才我最服tj,高产到爆,基本写个东西就火爆。你可能据说过这样一句话,一切用js实现的东西最终都会用js实现。在node界,一切你使用的东西,直接或间接引用的,都来自tj。是的,一切。就是这么优秀,固然,他如今已经去玩go了,但对node的贡献依旧极大。编程每一个人理解程度不同,接受能力也不一样,用时间衡量不太规范。拿我本身来讲,我学java和前端一年半,php和node差很少一年,日语大一至今,依旧乐在其中,学习自己就是一种乐趣。

解决问题

  • 我是怎么查资料,解决问题的?自认为百度能解决八成你遇到的问题,前提是你会搜索,我说的是高效搜索。

  • 举个例子,实现购物车功能。你直接百度,看看会出什么?我没试,猜的,不免有一堆不相关的东西,也许什么京东淘宝的广告都会跑出来,这样你一个个找贼费时间,还未必找的到。

  • 快捷方法,高度凝练,关键词匹配。java,session,购物车。这三个关键词就比你直接输入实现购物车功能精确高效的多,甚至结尾能够加你想要的出处,好比csdn,博客园等

  • 每次我打开本身的博客就是直接输入csdn 冷月心,百度搜索引擎第一条,直接完事。
    若是你要找一些指定格式的资源,能够这样 : 深刻浅出node.js pdf,这样查找的结果就是一堆pdf相关,限定了格式

  • 查找百度网盘资源,xxx前端视频 百度网盘(百度云盘),这样检索效率很高。在云系列未出现的时候,百度网盘和百度云没啥区别,到如今二者有本质区别,不要乱了。

推荐资源

  • 我的推荐的代码托管平台

github,新浪云sea,腾讯云开发者平台

  • 我的推荐的入门资源

菜鸟教程,w3c教程,官方demo

  • 我的推荐的解决问题途径

csdn,博客园,谷歌,百度

  • 翻墙问题

这个能够去参考我写过的博客,有解决方法,

  • 互动

有问题能够评论区留言,好比须要的资源,看到我会回复的。