个人情况
我学历不高,但与技术和 Python 相关的工作经验也就两年。今天我想跟大家分享自己转行的故事,希望能够鼓励那些跟我一样的朋友共同前行。
后面将会聊到我个人的经历和入行故事,个人的技术成就,我 2021年上半年和下半年的工作重点,讨论快速学习的方法,最后推荐一些学习资源。
01:个人简介和经历
我叫胡昂扬,是一名 Python 数据分析师,同时也正在学习 Rust 语言。我并没有什么光鲜履历,也没有太多的 IT 工作经历。
我喜欢用文章的方式向周边的人分享知识。在之前,我并不是一个分析师,工作内容甚至与技术没有太多关联。
高中念书的时候没有好好学习,没有考到好大学,导致毕业后四处碰壁。毕业后听从家里的建议,跟着当地的一家汽车修理店当学徒,修车又苦又脏又累那个时候工资还不高,学徒大冬天的还得洗车。
加上我自己对汽修又不是很感兴趣,然后就开始谋划我的跨行大计,这一脚,直接跨到了互联网。
由于当时没有计算机基础,走了不少弯路,在网上搜了一些教程,东拼西凑,感觉乱七八糟。
学习进度一直止步不前,后来在网上看到一个培训班,效果也还不错。我把此前学习的一些资料,以及一些学习路径,学习笔记做了一下整理,相比网上的免费教材而言,还是更加的全面系统。
那段时间,我还在学习群里认识了一些数据分析岗位的在职者,年龄不大。他就建议我做数据分析。
然后进入互联网企业进行数据分析工作,月薪也从原先的4k提升到12k,更好的环境、更高的薪资,让我对未来的进阶学习也充满了向往。
02:python学习之旅
我在学习的过程中,深深的觉得对于成人或者进入职场的人来说,学习一门新的知识,目的不在于积累,而在于解决问题。
所以这就要求我想明白3个问题:
1,学习python,要解决什么问题?解决这个问题,是要为了确定学习方向。
2,要学哪些东西?解决这个问题,是为了规划好学习路径,建立学习地图。
3,怎样学?解决这个问题,是为了找到高效学习的方法。
1,选择好方向
我要学习python的目的不是为了解这门语言,而是为了要学会运用这门语言来解决问题。
但python的应用方向,实在太广了。在python基础知识学完之后,如果应用方向不同,要学习的东西也会大不同。
我不能说我要做web开发,学完python基础知识,跑去学numpy,pandas等知识,也不能说我要用python做数据分析,学完python基础知识,然后就跑去学django,flask框架。这个道理,就跟我们想要去泰国旅行,肯定不会买去日本的机票一样,很简单,但是我们不得不承认,还是会有人犯迷糊,上来就开干。
我学习python,是因为在工作中慢慢了解到python在数据分析方面,基本涵盖了“数据获取→数据处理→数据分析→数据可视化”这个流程中每个环节,是数据分析的利器,话说这风骚的操作,也是没谁了。
2,规划好路径
当我确定好方向后,下一步骤就是顺着这个方向,建立好我自己的学习路径地图。
这个路径是1个系统性的逻辑主线,这个主线会让我知道每个部分需要完成的目标是什么,需要学习哪些知识点,哪些知识是暂时不必要的。然后每学习一个部分,我就能够有一些实际的成果输出,利用成果产出来形成正向刺激,激励后续的学习。
而且,如果我们身在职场,大多时候我们是没有很大块的时间来集中学习的。我们的学习时间被分割在了一些碎片化的时间里。在碎片化的时间里,系统性的学习一门知识,更需要有一个贯穿前后,系统的逻辑主线,来串联所有相关碎片化的时间的学习。
当我确定好学习python的数据分析知识,就按照数据分析的流程“数据获取→数据处理→数据分析→数据可视化”这个路径,给自己建立了学习地图:
1,python基础知识
2,爬虫基本知识+sql
3,numpy
4,pandas
5,matplotlib
6,sklearn
7,统计学与概率论
3,对基本概念建立认知
python是我学习的第一门编程语言,我在开始学习python的时候,是一个连什么是字符串都不知道小白。所以对我来说,最重要的开始是,首先对这一领域的基本概念建立认知!
事实上,对一门领域完全零基础的人,想要开始学习它的话,真正重要的工作是先对这门领域的基本概念建立认知。
举个例子,比如我在看到教程中有句话是“为变量赋值”,那我至少得知道,什么是变量?赋值是什么意思?
不知道为什么这么重要的一个开始,竟没有答案提到,更不知道是大家都天赋异禀,觉得不屑于提起这基础的步骤,还是很多人已经忘记了从小白一路走过来的痛苦和挣扎。人是会篡改记忆的,会认为现在拥有的都是轻松获得的,但真实的经历永远都是坎坷曲折的。
很多网友中有不少提到廖雪峰老师的博客,廖雪峰老师的博客当然是极好的,但说实话,对完全零基础的人还是不适合(如果我们之前有其他编程语言基础,看廖老师的博客是最好的),甚至连《python简明教程》也不适合。
我遇到的第一个坑,就是我作为一个连什么是字符串都不知道小白,就去看廖老师的教程,然后就没有然后了。后来在网上看到侯爵老师的书。
这本书用生活中常见的物品做类比和视觉化解说,用极其通俗易懂的语言,让我对python语言以及编程领域的基本概念建立了基本认知。
我想我们一定遇到不少的教程,帮我们解释概念的时候,上来就是这个概念其实可以理解成C的XXX,C#的XXX,我他么的要学过C,还他么跑过来问小白如何入门python?
这些教程典型的通病就是,教学者用一个我们不懂的概念去解释另一个我们不懂的概念,然后我们还是不懂。因为教学者提前预设了作为0基础的我们的立场:已经有其他编程语言基础,只是没有接触python。
但其实,对真正如我一样的0基础的小白来说,大多时候,python是我们学习的第一门编程语言。所以这个时候,对我们来说,学习python,不仅是学习这门语言本身,还是在借着这门语言,帮我们建立对编程世界的一些基本概念的认知。
当我入了门之后,就是顺着在第二步建立的学习路径,一路升级打怪,毕竟,我的征途是星辰大海!
4,最后,学习中需要注意的问题
A,一开始绝不陷入底层原理和细枝末节的纠缠
这个坑,是把我坑的最深的坑。
举个例子,我学到函数的时候,我在开始的时候只需要,学会怎么定义函数,怎么调用函数这些基础知识,完全不需要一开始就深入到,研究函数参数的传递规则,到底是值传递,还是引用传递。
不是说这底层知识不重要,至少在入门的时候,我们不用一上来就深入这个层面。因为知识的学习,是一个线性的,从潜入深的顺序。如果一开始,就眉毛胡子一把抓,不分主次,可能我们很快就会体会到“从入门到放弃”是一种什么样的感觉。
而且我们在后续的学习过程中,其本身就是在“运用中深入理解,在深入理解中优化应用”。相互印证理解,是一种自然而然的深入学习过程。
B,最好是按照系统性的课程或书本来学习
既然在这个领域是新手,先接受一个已经存在的系统,再在上面修修改改,是最适合的方案。作为新手,如果依靠自学来学习一门领域的知识,根据我的经验,我依然认为最好的老师,仍旧是成体系的视频教程程或书本。
Linux基础
Python基础
面向对象
项目飞机大战
我本人收集了一套比较好的教程,如果你有需要,我也可以分享给你。
网上的文章或帖子,其实非常不适合充当我们系统性的学习一门知识的教材,因为它是非常碎片化的知识,东一榔头西一棒子,不成体系。
不要指望自己能把散落的信息整合成系统的,那是高手要做的事情。不过网上的文章或帖子,可以作为我们对某些细节的查漏补缺的参考。
C,以能用起来,解决问题为指导原则
在工作中,需要的更多的是一种解决问题的工程性思维,所以很多时候,我们能掉包解决问题,就没必要自己造轮子。
举个例子,boss要去机场,那我只要会开车,驱车把boss送到目的地就行,而不需要我去研究怎么怎么造车轮,怎么造发动机,怎么造电瓶。。。。。。
当然,如果我们学有余力,能深入,肯定是只好不坏。但还是那句话,开始的时候,不眉毛胡子一把抓。
D,没有什么牛逼的事情是能够速成的,越是底层的、收益周期越长的技能越是这样。
“大道甚夷,而人好径,终为所误”。我们总会在踩了无数的坑后,才恍然大悟:捷径往往是最长的弯路。学习一门领域的知识,对于普通人人在短时间内从0到1入个门,倒是不难,但是从1到10,到100,进阶为高手,没有长时间的投入和刻意练习,无异于痴人说梦。当我理解这个道理,也知道自己资质并非属于天选之子的时候,就不会急于求成而去费尽心思想找到一条捷径:试图用3个月的时间,去完成别人用了3年才能做到的事情。
以上,只要用对方法,有一个完整的学习脉络规划和逻辑主线的贯穿,循序渐进,学Python就能很高效。
PS:既然看到这里,在收藏的同时,也请不吝啬的点个赞呗!