前言
生于忧患,死于安乐
有个上大学的的文科小妹妹想学编程问我有什么好的建议,我问她为什么想学编程?她说:“想法很简单,就是不能太落伍,而且听说编程能改变人的思考方式。”大多数同龄人都在享乐玩耍,而她居然有忧患意识想要充电,牛逼,佩服。本人在这之前自学了大半年的编程,今天就把自学过程中遇到问题和经验分享出来,希望可以帮其他人可以少走点弯路。
做好心里准备
自学编程的弯路多得数不完,坑多得踩不完。如果你决定要自学编程,就意味着踏上了一条面对困难、挫折和失败的无尽之路,要想清楚自己能不能承受这些挫折,自己能不能坚持走到最后。
自学编程过程中总会遇到这样一些问题:
- 编程环境?不会搭建
- 知识点好多,定义概念,格式规则,缺点优点。。。
- 刚学的知识怎么又忘了,怎么这也不会那也不会
- 这个语法是什么逻辑,搞不懂
- 教程这样做可以,我这样做怎么就不行?
- 敲了半天代码,一运行怎么全是错误?
- 错误解决不了,想放弃,狗带
- 学了这么久,感觉还没入门
- 教程内容都是旧的,学起来费力
- 技术更新了,旧知识不管用,又要重新学
如果没有一颗能战胜这些苦恼的勇敢的心,我劝你还是尽早放弃,免得心灰意冷,身负重伤。而如果你喜欢挑战艰难险阻,能直面失败,并能在失败与痛苦中砥砺前行,那么恭喜你可以踏上编程之路,努力的去追寻自己的梦想吧。
选定方向
有了方向,努力才会有意义
编程的世界是多元纷繁的,大的方向就分前端开发、后端开发、移动开发、云计算、数据处理、智能硬件、物联网、虚拟现实等等,光编程语言都几十种。如果没有做过功课,贸然进入只会分分钟懵逼。所以最好是根据自己的兴趣爱好再结合市场前景,先选定一个方向,再选择一门语言,然后头也不回的深深扎进去。
我当初开始自学编程的时候,因为工作时学了点Linux,就准备学Linux。Linux没学几天,发现游戏编程的Unity 3D挺好玩的,就转学Unity 3D。Unity 3D学了段时间又觉得大数据很火,感觉接下来是大数据的时代,要跟上时代的脚步,然后又去学习Python。后面才意识到自己在移动应用上面有极大的兴趣并有一些自己的想法,再加上本人很喜欢Google,遂最终决定好好学习Android移动开发。
如果自己对自己兴趣爱好没有深刻的认识,没有明确的学习目标,只是一味茫然的去尝试,最终只会像猴子掰玉米一样,不但浪费了自己宝贵的时间,还会一无所获。
制定学习目标计划
选定了方向之后,剩下的就是朝着目的努力前进了。自学的过程是枯燥乏味的,也没有人陪伴督促,所以要想自学有一定成果,除了要有清晰明确的目标计划,还要有很强的自我约束能力,还要善于自我及激励。不然很容易自由涣散,三天打鱼两天晒网,看起来花了不少时间,实际上没学到什么。
我开始的时候就是凭兴趣漫无目的的学习,结果发现收效甚微,于是才制定学习计划,开始系统的学习。我先是学习了JAVA基础语法,然后将整个Android开发涉及到的所有知识面简单快速的学习一遍,这样对整个体系框架有一个全面大概的认识,然后在详细具体的学习每一部分,尽量搞明白其中的实现逻辑和原理,以达到掌握知识的目的。最后开发练习的时候再根据自己要实现什么功能,去查相关的资料。
优化学习方式
一、做好笔记,记录经验
我们大多数人并没有过目不忘的神技,很多时候我们学了也不一定马上掌握,需要过后花时间慢慢领悟,而且还有忘掉的风险,所以对于重要的知识点都要做好笔记。
编程的过程中总会遇到各种各样的问题,比如编程环境的配置,常用的快捷键,编程过程中的错误、异常,软件更新问题等等。这些问题往往会不只一次出现,所以我们面对这些问题都是如何解决的,一定要记录下来,一是增加自己解决问题的经验,而是以防下次出现。
我做笔记记录的方式:
- 截图
- 拍照
- 思维导图
- 写Word文档
除了最初用纸质笔记本做过笔记,后面都是用上面的方式。用电子的方式方便快捷易于分享,而且我还能传到手机上,利用其它时间随时随地阅读。
二、认认真真敲代码
二、认认真真敲代码
二、认认真真敲代码
编程没有捷径,只有勤奋努力。
三、多看官方文档,外文资料
互联网是一个更新迭代很快的行业,所有编程语言都会不断的更新新功能和修复旧Bug,网上查的资料很有可能是旧的解决方案,现在已经不适用了。所以最好最快的方法就是查看官方文档。
毕竟互联网技术还是国外发展起来的,所以在很多技术问题方面,人家还是有优势的。有些问题在国内不一定能找到答案就去外网找。
四、进入行业圈子
只有进入行业圈子与其他人交流,你才了解最新的行业动态,才知道自己需要更新哪些技能。最重要的是有了这群人,自己遇到问题解决起来嗖嗖的,那速度才叫“倍爽儿”。
进入行业圈子的方式:
- 混迹各行业网站论坛个人技术博客
一般在搜问题时很容易就搜到这些网站 - 关注各种行业话题和人
比如知乎、微博、微信公众号等 - QQ群、微信群
交流基地,技术后援团 - Github
互联网圣地,行业大圈子就在这。
五、动手做项目
我们学习编程的最终目的就是用所学的做出具有一定功能的项目,而做项目又是最好的学习和巩固知识的方式。如果前期能力不足就先做一些简单的功能模块,一步一步慢慢来,不要一开始就要实现各种酷炫炸天功能,遇到不会的就在网上查, 现在互联网这么发达,获取资源也及其方便。而且开发前也最好在网上查一下有没有已经成型的框架或模板,编程界有一句很流行的话“不要重复造轮子”,什么都自己做一是很耗费时间,二是自己技术能力不足还可能留下不少坑。
收获回报
自学编程说起来到处都是苦,但也并不是完全一无是处。客观地看,自学编程还是有很多好处的。
- 培养自学能力
- 掌握一门技术
- 锻炼毅力和独处能力
- 提高解决问题能力
- 提高面对挫折失败的承受能力
- 改变思维方式
- 享受沉浸专注的快乐
- 享受创造的快乐
资源分享
自学视频网站:
慕课网 本人主要学习网站,课程全部免费而且视频比较新,有课程计划和在线编程。
极客学院 课程全多,部分课程需要VIP,有的课程比较旧。
麦子学院 大多要报线上培训班,不过好像有免费入口,反正我看的Android全部免费。
51CTO学院 没用过
网易云课堂 只用过网易公开课,没用过云课堂。
咪咕学院 没用过
MOOC学院 果壳慕课网,比较杂,没用过。手机应用
SegmentFault 专业互联网问答,有PC版。
开发者头条 程序员学习分享平台。
掘金 高质量技术分享平台
码云 OSChina旗下云端开发者服务平台
涂书笔记 有道云笔记、印象笔记这些大家都知道了,图书笔记的特点是可以上传照片并识别照片中文字。主要针对读书人群。
Mindjet Maps 思维导图,大名鼎鼎MindManager的Android版,免费
极品思维导图 Android版,功能齐全
奇妙清单 待办事项清单
种子习惯 习惯养成应用- 翻墙软件
shadowsocks - 浏览器
Chrome浏览器 各种开发工具,各种插件,开发者大多都用Chrome浏览器(去广告,翻译轻轻松松)
写在最后
这是我在简书上的第一篇文章,不足的地方请大家批评指正,大家共同学习进步,加油!