我是如何学习编程的

我是如何学编程的

    • 前世因
    • 今世果
    • 一轮回
    • 一回眸
      • 理论基础
      • 资源选择
      • 编程没有捷径
      • 合格程度
      • 兴趣培养
      • 学习时长
      • 解决问题
      • 推荐资源

  • 学习资源推荐

  • 微信扫码关注公众号 :前端前端大前端,追求更精致的阅读体验 ,一起来学习啊
  • 关注后发送关键资料,免费获取一整套前端系统学习资料和老男孩python系列课程
    在这里插入图片描述

前世因

不管你信不信,反正我自己是信了,学习对我而言是一件用来消磨时间的事,仅此而已。

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

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

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

  • 说来你可能会有些意外,甚至我自己也觉得意外,大一对编程恶心到极点,现在竟然成了自认为极其重要的东西。

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

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

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

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

今世果

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

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

  • 嗯,我是信的,初学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,MDN,

  • 个人推荐的解决问题途径

csdn,博客园,谷歌,百度,掘金

  • 聊一聊学习方法

  • 程序猿的自我修养

你可能感兴趣的:(资源分享)