今天给大家分享一个小伙伴自学Python找到工作的文章。
先简单介绍一下小伙伴的情况。是非科班出身的,虽然高中读的是理科,但是进入大学学了一个文科专业,之后就再没接触过理工科的东西。对计算机也是一窍不通,大学才刚开始接触电脑,打字保存文件都不会。
后来有了自己的电脑,就开始瞎捣鼓,至于编程课程还是大二的时候学过一学期的VB,之后再没接触过。就这样的一个背景,我是从来没想过自己以后会从事一份编程的工作。
2015年毕业后,我和一位朋友合伙运营一个非营利性机构。那时候逛知乎的时候,不知道咋就看到了一些介绍爬虫的文章,很有趣的样子,我好像就突然来了兴趣,想着要不就学习一门编程语言吧,也算是个业余的爱好。之后就开始接触Python,而且还跟一个程序员朋友一些做过一个爬虫的项目,不过之后就不了了之了。然而,就是这次的尝试,让我走上了程序猿的道路。
之后,就是看书学习了。因为当时我也没想着要找一份相关的工作,只是单纯地认为有趣就学了。由于当时工作也比较忙,所以也是隔一段时间学习学习。
大概2015年8月——2016年3月左右,我什么都比较好奇,接触的比较杂,看了一些Python的语法,跟着一些初级的教程学了一段时间。后来想着做数据分析也不错,就看了一些教程。
在这期间,我的朋友跟我讲过说是不是可以考虑为我们的机构做一个官网来提高影响力,我还看了看一些Wordpress的东西,不过后来就放弃了。还看过一些C语言的书,当时就是啥都想看的一个状态,属于自己瞎乐。
之后了解到使用Python有很多的方向,也知道了有Flask这么一个框架,发现可以用来做web应用,那正好之前朋友提过要做官网,所以就想着要不使用Flask框架做个网站吧。
然后就照猫画虎,按照教程花费了一两个月时间,做出了一个很丑的网站。在做的过程中,我开始想不能像以前一样那样分散地看东西了,还是抓住一门技术深入下去吧,而且既然现在接触web比较久了也比较顺手,要不就选择web开发的方向吧。定了方向以后,就还是想深入地学习Flask。
看了很多大神的回答,说可以看Flask的源码。那就看吧,说看就看。可是一接触到源码,直接看不懂啊,虽然Flask 0.1版本只有700多行代码,但是刚接触下来完全不懂了。
看了几天后实在看不下去了就放弃了。而且那段时间我是处于一个比较焦躁的状态中,因为学习了那么长时间了,之前都是当做兴趣的,但是一旦觉得自己掌握一点东西后,就萌生了换工作的想法。然而我是知道转行还是存在很大的困难的,毕竟没啥基础,啥都不会,所以比较当时纠结。
纠结了一段时间后,自己还是放弃了找工作的想法,可能一个比较稳定的环境中呆的太久了就不想动了。之后,反正还是把学习编程当做是一个兴趣爱好,有时间就看看,没时间了就放一放。到2016年年底的时候,我和合伙的朋友出现了一些矛盾(其实这个矛盾在我们合伙之初就已经存在了),当时虽然还没辞职,但是心已经不在那里了,我开始考虑换工作了。不过由于之前看东西都是东一锤头,西一榔头的,完全没有静下心来学习,压力还是蛮大的。不过我想自己自学问题应该还是不大,我准备给自己几个月时间。
2016年12月31日,我正式辞职,制定了几条计划开始学习:
-
看Flask源码。之前Flask的源码看过,可惜当时看不懂,可能后来深入地了解了Python的一些基础,所以这次看起来好像也不是很难。为了了解一个web应用在运行了经历了哪些流程,我用debug的功能,一个请求一个请求地观察从用户在浏览器中输入一个URL,到最后呈现一个页面,中间到底经历了什么。这个学习的过程我觉得收获很多。
-
看Werkzeug库。由于Flask依赖于底层的Werkzeug库,很多网络协议处理的东西都封装在其中,这也可能是之前我看不懂源码的原因之一吧。看了这部分的内容后,结合着WSGI的一些东西,我算是对客户端、服务器、WSGI、Web应用有了一个大致的认知,也明白了它们之间到底是怎样的关系。
这一个收获我觉得很重要,因为对于web开发的整个流程而言,我目前浅薄的认知认为其实也就是处理客户端、服务器、网关接口、Web应用之前的关系,而我们的所使用的web框架注重于Web应用这一层面,所以只要理解了以上的一些知识,选择哪种框架开发都是没啥问题的。
-
简单过了一遍TCP/IP、HTTP的知识,至少知道了它们是怎么一回事情。
-
了解了一些Linux相关的知识。因为我想以后自己要从事后端开发,那Linux是绕不掉的。针对这一块,学些一些Linux相关的命令是一方面,其实最重要的是我想看看网络编程的知识,所以看了一些UNIX网络编程的内容,但是由于时间比较紧,所以后来就先搁置下了。
-
重新看了Python的语法和一些基础的库,特别是网络编程的库。虽然之前也看过Python的语法和一些教程,不过当时有些概念没办法深入理解,现在看了Flask、Werkzeug等后,觉得似乎对Python的理解加深了一些,所以又重新看了一些书籍,加深了对Python的认识。在这个过程中,还重点看了Python的一些库,特别是网络编程的库。
之后,时间过去了有三个多月,其实我当时心里还是蛮焦虑的,就开始投简历看能否找到。
当时的想法很简单,先试试水看看自己学习的到底到哪个阶段了,如果有不足的地方就可以补起来了。投了一些简历,由于没啥项目经验,很多公司直接连面试机会都不给。
最后,终于有一个公司打电话邀请面试。
我记得当时第一次面试面了四轮,有一个笔试不是很难,第一轮重点问了数据库、Linux服务器相关的知识,现在回想起来回答的真是差劲,后面第二轮问了Python相关的一些知识点,勉强答了一些,第三轮技术问题比较少,面试官了解了一些基本情况后,问了还记不记得排列组合的公式,当时我说好多年了忘记了,不过基本的原理记得,就直接现场推了一番。后来HR面试过后就让我回去等消息。
我当时其实心里特没底,因为就面试的总体状况而言,我表现的不是很好。过了一周后,这家公司通知我复试,说领导要面试。复试时,我是直接懵的,因为一上来让我做五道算法题,我一道都不会,没办法了就直接写了一些思路。当时我觉得肯定没戏了,很绝望。
之后,又面试了一家,这家刚面试完,之前面试的公司说可以给我offer,我还是比较吃惊的,没想到居然要我了。当时我内心还是比较激动的,但压制住这股冲动,傲娇地说我考虑考虑,之后再给答复。过了几天,第二家公司打电话过来说复试,复试结束的下午就给我说可以给offer。
反正最后比较了一下,选择了第一家公司,5月22日入职。
现在,我已经在新公司两个多月了。新入职后,公司使用的是web.py做敏捷开发,我负责一个项目的后端。这两个月以来,分配给我的任务还可以接受,也不是很困难。不过经过之前的面试,我还有很多不足的地方,基础很薄弱,这些都得以后补起来,任重而道远啊。
可以说小伙伴的经历还是蛮丰富的,其实无论做什么,一定要找好一个属于自己的方向,这样学起来才会有力量,师兄也在这里向大家推荐自学团,自制力差的小伙伴,或者没有学习资料的都可以进,如果想要学习python可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。