编程书籍看不进去咋办?

#自己学编程的心路历程#(复制于我其他的回答)哇,想学编程的好多……不知道题主是是基于什么样的目的,是听说薪资高?还是听说门槛低?这里先波一波冷水吧,编程行业与其说门槛低不如说入门简单,只考虑入门根本不需要什么数学,英语。只需要高昂的兴趣,最多一个月时间你可以写出不错的程序出来……可是……入了门以后你就会发现,程序为什么能跑起来?以前听说的二进制01在哪?为什么自己什么都不会?为什么要学的东西这么多?产品经理的需求为什么这么多?设计师怎么总觉得差1像素?这代码昨天还好好的?不生气,杀人犯法……我是一个普通双非本科大四狗,目前在一家创业公司做安卓,拿过小米offer,但最后选择在现在这家创业公司转正。为什么?从大三暑假出来实习,就在这家公司。公司企业文化,团队氛围,那种凝聚力的感觉非常好……换句话说…………人家给的多,还有双休……笑哭.png扯了些题外话,接下来就是关于我自己在大学生涯,如何一步步走上编程这条路的心路历程。------如果不想看这些瞎逼逼的过程,可以直接翻到后面,有关于学编程的建议------因为大学生涯,自学编程的这一路都是自己一个坑一个坑从零基础踩过来的,所以对想入门编程的这种话题特别有感触。有时总在感慨如果当年有人指导,没有走弯路那么现在的自己会是什么样子。自己当年因为家里的原因选择了和计算机相关的专业。不过当时的自己真的零基础,没有任何编程的概念。唯一可能扯上点小关系的是自己曾经高中的时候在war3地图编辑器上做过地图……做游戏,我猜是每个男生都有过的想法吧,笑哭.png。进入大学,第一门语言如果不出所料都是c语言。学习的过程中发现自己着实有点兴趣。寒假的时候开始入坑java。至于为什么选java只是因为下学期开java课,算是提前了解了解。那时候差不多15年初,恰巧又是安卓手机特别火的阶段,而且当时的自己也还非单身……也是突然的起意,想给自己的女朋友写个app,碰巧主流安卓开发用的是java。然后安卓这个大坑,我就义无反顾的跳了进s去……之后……就没女朋友了……编程这么好玩,要什么女朋友!要什么对象?new不就行了?new不出来就反射呗……笑哭.png真正开始全身心的学习编程,就是在入坑安卓的时候,说起来真是一系列的巧合。因为自己的学校实在不怎么样,学校整体学习氛围很差,也没有大神。是真的差,差到我们都没有学长给我们指点。也有可能他们隐藏的太深吧……有时我们这届搞编程的,私下吹逼时,都在感慨:我们这一届算是为我们学院、我们专业踩出了第一条路。(圈子里有校招进腾讯、网易的大佬)当时的自己最开始是在慕课网上看基础视频,那个时候还是eclipse的年代,照着视频敲。苦逼的经历了:妈的,代码一样怎么跑不起来?报的什么错?编译怎么还过不了?……后来错犯多了,也就习惯了;习惯久了,也就放弃了(开玩笑的)……大概一到俩个月的时候,当时边学安卓边补java基础。俩个月的时间算是彻底入了门,说实话中间浪费了很多时间。入门之后,就会发现看视频真的很慢,接受知识很费时间……这个时候自己开始看书,看博客。因为什么都不会,所以这个时候是进步最快的时候。当自己自信爆棚感觉学会安卓的时候,就想着自己写个app。这个时候遇到了卡住我许久的问题,那就是:app的数据从哪来,怎么存?现在看来多么幼稚的问题,当然是放 后台 里……然而当时的自己被这个问题困住了许久,直到自己学习了皮毛的后台技术,才豁然开朗原来是这么回事(如果有前辈指点根本不会浪费这么长时间,不过自己摸索,印象也更为深刻。塞翁失马,焉知非福。)……有了这个基础,自己真的开始去写属于自己的app。从那之后自己便进入了一个写代码熟练程度突飞猛进的阶段。不过问题也逐步展现出来,那就是基本功不扎实。很多框架并不能看懂,设计模式?反射注解?动态代理?也正是这些疑问,接下来的时光里,我进入了自己看书最频繁的时期。大概一年的时间,看了不下四十本书,其中包括一些经典书籍《java编程思想》《数据结构》《计算机组成原理》《图解http》《计算机科学导论》(当然这些都是计算机相关专业必修书籍……不过说实话大学的课程,听不听,怎么听大家都懂得……)等等……其实看的最多的还是一些闲书,因为那个阶段经历了失败的恋爱。然后觉得有必要去反思自身的问题,所以闲书里有不少关于两性心理的书。笑哭.png……这段时间的大量阅读,我觉得对我后期的影响还是比较大,无论是逻辑上还是理解上。当时不得不承认对当时的自己并没有特别大的提升。毕竟内功这东西看不见摸不着……后来大三结束的时候,自己只身来到了北京实习。当时这家公司面试官(也就是我现在的leader)在面我的时候,给我唯一的印象就是,卧槽我怎么什么都不会?……后来入职才知道,他是原360的资深开发,360浏览器就是他一手带人写出来的。入职到现在差不多小半年的时间,期间也很迷茫。但每次都能被leader发现。先无情的diss一波,说我怎么成长这么慢……然后再仔细的给我分析应该怎么怎么样。庆幸自己的选择,遇到了这么负责的头。这差不多就是我大学生涯,入坑编程的故事。接下来的回答便是关于如何自学编程。#认真回答问题#首先来说关于入门教程,这一步可以随便百度,因为这个东西又不是生病了,搜不到莆田系……所以只需要稍稍留意,别点进去培训机构的广告即可……(这里对培训机构不做评价,大家自行去了解吧)入门教程太多了,所以不要考虑什么怕没人教。这年头,不是没人教而是教的太多了。这可能也是编程给人感觉门槛低的原因吧。但是记住,天下教程一般抄,教程教的是语法,而语言的核心是思想。一旦理解了思想,你会发现这一切都tm是套路,所有东西抽象出来都是tm是套路。事实证明单纯去学习一门语言是很枯燥的,为什么?因为你根本不知道它能干什么。所以,我个人认为之所以很多人认为编程难学,不是因为没有兴趣,而是提前过度的把兴趣透支。我们被编程吸引,大概是因为酷炫的手机app,多彩的web网页,刺激的pc游戏。我们学编程前也幻想着做这么一款产品出来!可学的东西为什么是一些莫名奇妙的代码?这一行行代码怎么组成程序恐怕是大多数同学最开始的疑问。然而终其整本编程语言教程书籍,都没有讲这门语言怎么做一个程序!所以这个时候我们可能觉得太难了!事实是这样么?是书籍有问题,还是我们太笨?都没错!错的是不应该这么学!如果我们在最前期全部消耗在学习语言上,我们的兴趣会很快的消失殆尽!如果殆尽前还没有找到兴趣的补充点,那我们的编程巅峰便至于此……所以我个人推荐想入坑编程先这样:我们应该明确自己学编程为了做什么?是想写web前端(网站),还是安卓/ios(app);还是后台(为网站,app提供数据支持),亦或者其他。比如最近很火的人工智能,区块链等等。说这些的意思是,题主要先知道,学什么方向。不知道没关系,搜索引擎呐!因此学习编程之前先了解,自己学编程去做什么,不然纯粹为了学而学真的很枯燥。当我们确定学编程去做什么,那我们就可以去搜怎么去写这个东西,那么这样的编程教程就便的有趣的多!当自己选择了一项自己喜欢的东西,比如我,机缘巧合选择了安卓。那么这里就出现了学习路线上的技巧或者说差异,是夯实语言基础再去学习具体业务,还是同步去学习。(与上边个人觉得编程为什么难有点重复,看官们可以选择性看)个人的建议是同步学习,然后再根据业务上的问题回来补基础。因为编程需要持续的兴趣,但是无论我们开始堆积了多大量的兴趣,都会随时间的推移去消耗殆尽,再殆尽之前找到兴趣的补充点才能持续保持自学的热情。(当然你如果有强大的自制力,怎么学都无所谓……摊手)因此我推荐先学习语言的语法,比如java语言。这一步,随便百度教程书籍。在学语法的基础同时去理解面向对象思想,理解不了思想也无所谓,多写就会豁然开朗。当你觉得基础语法都掌握了的时候,可以尝试去开始具体你喜欢的东西。比如:安卓或者后台去写业务。遇到不了解的东西外回过头继续补基础。至于怎么评判语言的掌握程度。我个人的评判标准是,当你去看别人代码时,虽然你不知道这些clas s,api是做什么的,但是你能看懂整体的脉络就行。都这一步你便可以驶上快速学习编程的高速路。不要以为上了高速路就可以无所欲为。别忘了还有收费站,记得要花时间去看经典书籍,他们之所以经典是因为拥有潜移默化的影响力!###附上自己的学习安卓的路线###最开始是自己稍稍学了一些java基础(当时是什么水平,这么说吧,都不知道反射和注解能干啥),然后直接跳进安卓这个坑。最开始是在慕课上看关于安卓的基础视频,现在应该也有,不过是基于eclipse的,不过无所谓,只是ide的差距而已(但是的确需要了解一下eclipse和androidstudio在构建工程上的区别)。这里我个人认为这一步也可以选择不看视频,可以直接看书,因为《第一行代码》第二版是基于androidstudio的。(开发工具一定要用androidstudio,一定要用,一定要用……不要因为网络教程都是eclipse就用eclipse……)这里必须要提一句,关于看官方文档的问题,我个人来说,零基础刚开始就去看文档并不友好。不过有一定基础之后,还是要多看看文档,因为毕竟官方文档才是最佳的学习资料。入门安卓,无非是那几个基础UI控件的使用,对于初学来说,有些难度的应该是RecyclerView/ListView。这些控件能熟练使用。可以尝试网络请求结合这些控件做一些简单的应用。有了网络请求,那么就会考虑缓存,这里就去了解了本地数据库,也就是sqlite,本地写sql语句太麻烦,这时就考虑使用这类的框架去简化这个操作。这一系列过程你一定会遇到Service,Broadcast的使用,那么这个时候借助使用的机会,好好学一学四大组件。这部过后就会考虑到更炫的动画更酷的UI这时就要学自定义控件。为了更方便的请求网络,当时用了很多框架比如最早的volley,到现在的okhttp,retrofit等,那么这个过程,我发现我在java基础上的不足,这时反过头去了解注解和反射的时候就会发现原本语法的东西就会变得特别形象。后来做音乐播放器的时候,需要跨进程。这里又开始跨进程通讯的当时,比如最常用的aidl。再往下对我来说,我也是再摸索中学习,以后有我认为可以总结的内容再补充吧……---------------------just do it.祝你在编程里找到快乐。
■网友


推荐阅读