说说我自己的经历。211大学,光学工程研究生毕业,和程序猿完全不搭边。
毕业后进了成都某国字头研究所,在行业里摸爬滚打了四年,2018年机缘巧合在家养病,开始了编程自学。选择编程的原因很简单:成本低,一台电脑足以;见效快,没有实体行业的周期流程,马上就能看到效果。
于是乎就下定决心要学Python,想法很单纯,就是把这门语言学好。殊不知这才是一个巨坑的开始。
2017年10月,开始了Python学习。有同学要问了,为啥是Python?说来也简单,因为Python火啊:人工智能战胜那谁谁了,Python写的程序;朋友圈里有人分享Python的培训课了,号称最易学的语言;某程序猿用Python写了脚本,爬取100G的羞羞的小图片...我一个零基础自学党,哪经得住这般凶猛的攻势,只需要简单易学这一个理由,就乖乖臣服在Python的脚下了。
总有技术大神自我感觉良好,觉得Python这也不行、那也不好,不如淘汰了吧。我觉得你完全是站着说话不腰疼。一种语言能够流行,一定有它的历史定位;就好像国家要发展技术,但也不能所有人都当科学家吧,没农民伯伯你还要不要吃饭了。
开始时总是痛苦的,即便是最简单的语言。2017年8月~2018年2月,零零散散的学习了Python的语法、基础知识。把当时看过的、浏览过的、买过的资料罗列一下:
Django官方文档:官方文档有一个快速上手的实例,新手可以跟着做一做,但实际上Django的官方文档不太适合完全形态的小白,更适合一定水平之后的查阅。
廖雪峰的官方网站:廖大的教程算是我的Python启蒙了。完全为小白准备,浅显易懂,由浅入深,非常推荐新手从这里起步。
《Python基础教程》:可以反复阅读的入门书籍,但是又比廖大讲的要深,要有耐心看。
《Python核心编程》:着重点为Web编程的基础教材。是激起我Web开发兴趣的一本书。
《流畅的Python》:这本书也很厉害,非常深入的剖析了Python的关键特性、底层实现,但是毫不枯燥,甚至读起来是相当有意思的,帮助开阔视野。
《Python Cookbook》:类似新华字典一样的存在,需要用到哪个模块,像查字典一样去查阅本书就可以了,不用通读。虽然我从来没去查过。
《笨办法学Python》:英文名Learn Python the Hard Way,很多人认为是入门圣经的一本书,然而这种只顾结果,不管过程的方法我实在是欣赏不来,最后快速浏览完了。见仁见智吧。
《利用Python进行数据分析》:Pandas大佬写的,肯定对数据分析理解很到位的。稍微有些枯燥,但绝对是学习数据分析的好书。
《Python数据分析与挖掘实战》:偏重用实际项目进行学习的类型,看着比上面那本要有意思些,适合自律能力不强的同学。
《用Python写网络爬虫》:教你如何在网上爬取各种羞羞的小图片的书...还不错,需要一定基础知识。
《Python自然语言处理》:处理自然语言,相当有意思的方向,可惜我时间完全不够,就看了一点点。
《深度学习》:学习人工智能的教材书。基本都是统计学的知识,专业度很高。
那段时期我相当的迷茫,并不清楚应该用Python干什么,甚至不知道学了有没有用处。直到2018年2月的时候,看到了这本:《跟老齐学Python:Django实战》,才惊喜的发现原来Web开发才是我的菜:啥数据分析、人工智能、语言处理,我这种粗人还是不要去碰了。这本书我翻来覆去看了4个月,期间除了正常的生活耗时,几乎所有空余时间都在学习。
其他看过的相关资源在这里:
LayUI:很好用的前端框架。因为不懂前端,所以需要LayUI这种开箱即用的框架快速开发。与Bootstrap有点类似。
追梦人物的博客:这位兄弟写的Django教程非常的实用,适合零基础学习Django的同学。后来我斗胆在自己的博客上写Django教程,也是受了Django先驱们的影响。
《Bootstrap实战:从入门到精通》、《Bootstrap入门经典》:Bootstrap也是后端程序猿的神器。简单易学,你甚至可以直接在官方文档Copy代码,运用到自己的项目中,以至于书籍的作用都不太大了。
《轻量级Django》:不推荐。书中知识点很零散,新人看肯定会一头雾水,老手看又不太有用。
《Django架站的16堂课》:不推荐。和上面那本类似的问题,不如老齐那本精辟。
虽说是打算一心奔着Django开发去了,但是一整天都集中精力、只学一种东西是很难的,至少我的毅力支撑不下来。而且当时也有一种奇怪的想法,觉得现在大家都用手机上网,光学个PC端的技术行不行啊,不如学下Swift吧,做个自己的app挺有意思的。
于是我刚从Python的迷茫中爬起来,又迷茫在编程语言的汪洋大海中了。学Swift看的书有如下:
- 《IOS开发指南:从Hello World到App Store上架》:很厚的一本书,知识点讲得很细,可是我却没有耐心看完。另外Swift更新得很快,书里的有些代码在我这里跑不起来,更加打击兴趣。
- 《疯狂Swift讲义》:这本书实际是后面才买的,没来得及看,据说不错,姑且列在这里参考。
心浮气躁的结果就是Swift根本就没学好。没事儿,还有时间继续学。
好在另一方面,在2018年8月15日,我的个人网站成功上线了:
能够发布各类文章,上传并处理图片;可以微博登录,也有消息通知;能建立分享我喜欢的书籍,用到了雷达图、地图等可视化工具;甚至还捣鼓了HTTPS安全链接。老实说我是相当有成就感的,毕竟是自己的孩子一样,中间的艰辛只有自己懂。
可是当完整的架设个人网站后,才明白自己那点可怜的前端知识太不够用了。
那怎么办,试着学一学呗,学习才是程序猿的天性。但是又实在不想像学习Python一样从基础学起,可以说心态已经崩了。考察了一些流行前端框架,最后选择了Vue.js,还是老原因:比较容易上手。于是又陷入了瞎tm看资料的毅种循环:
- Vue.js官方文档:Vue的优点就是中文文档相当的顺滑,讲得也比较容易懂。英语不好的同学可以放心了。
- 《Vue.js实战》:偏实战的教材,顺带还讲了些搭建前端工程的内容。
但是前端哪有那么容易学的,尤其是我这种门外汉。曾想过用前后端分离的形式重构我的个人网站,因此还学习了Django Restful Framework,搞来搞去还是没明白如何把Django和Vue揉到一起去,作罢。好在这些知识也不是白学了,了解了前端工程、Webpack以及其他一些概念,至少能看懂大佬们在网上骂的是些啥意思了,挺好。
Django暂时够用,Vue、Swift又学不动,不学点啥又觉得浪费时间,蛋疼。2018年9月的一天清晨,我花了五分钟时间思考了一下人生:不行,怎么着还是得学一门静态语言,不能总被大佬们嘲笑吧。但是要学也得有个动力吧,于是又开始新一轮折腾:学习C#编程的Unity3d。总之还是不想学C#基础,太枯燥了我会吐的,不如直接学Unity吧,跨平台的特性又满足了我之前做手机app的追求,多好。
于是从2018年9月至今,我都在看这本:《Unity5实战:使用C#和Unity开发多平台游戏》,同样是没日没夜的学。这本书非常对我的胃口,也是偏重开发项目的,跟着学能做出一个FPS的3D游戏来,特别有意思。其他还看过、买过的资源还有:
- Unity官方教程:Unity的官方视频教程,其中的入门游戏非常值得一看,可以对Unity有基本的了解。
- 《Unity 5.x:从入门到精通》:官方工具书,印刷很精良,也是字典一样的书。
- 《Unity 3D\2D手机游戏开发》:这本刚买还在路上,好像也是侧重做项目的,姑且列着。
Unity又激起了我学习的乐趣,看着自己写的脚本居然能编程游戏运行起来,真是很有意思,如同当时Django一般初恋的感觉。所以我在想程序猿是不是都需要新知识刺激一下,才能保持兴奋的头脑。另外C#也是越写越喜欢,总有一种严谨地做工艺品的感觉。当然我这种不学基础、逆练武功的做法一定有碰壁的时候,这个时候再回过头去学习C#的基础就没有那么抵触了:
- 《零基础学C#》:非常基础的入门读物。
花了3天时间就把上面这本书看完了,这在1年前是不可想象的。我终于理解了,原来编程真的是不挑语言的,编程思想是通用的,之前所有的碰壁,终究变成了内力一样的存在。期间还顺便看了下《node深入浅出》、《了不起的node.js》,了解一下这个神奇的前后端通吃的语言。
回过头来看,1年时间这么多东西能看完吗,我是不是有毛病。但是当我真正被海量信息疯狂灌注时,甚至觉得是快乐的,总比不解渴的小水管强吧。有句话说的很对:程序猿就像好奇的猫,追着毛球的线头玩,最后一个毛球在脑袋里搅浆糊。可是根据我的亲身经历,当猫也没什么不好。
时代变了。编程语言终究只是一个工具,而工具一定要备全才行。先学锤子还是先学剪刀,真的没有那么重要。
重要的是你必须时刻保持前行。