【云驻共创】Python工程师速成之路
Python是由Guido van Rossum开发的一门编程语言,主要应用于人工智能、爬虫、web开发等众多领域。如何能够高效的掌握它,是需要讲究方法的。
Python语言生态预览
难的不是创造一门语言,是打造对应的生态。生态是语言赖以存在的源泉,世界上编程语言有很多,但是流行的只有那么几种,正是生态让它们能够长期被使用。
谈生态的理论是很抽象的,让我们从生态的表象来看,一个完整的生态包含以下几个方面:
- 齐全的文档:包括相关教程和文档介绍
- 自己的社区:有专门的社区来让开发者进行交流,及时处理问题
- 集成的开发环境:比如python的pycharm
- 跨平台:能够支持在多个平台上运行,比如windows、linux、ubuntu等等
- 功能库齐全:python除了官方库还有丰富的第三方库资源
- 成熟的大型应用:包括pandas、sentry、tensorflow等等
- 主流工具的支持:包括kafka、apollo、Prometheus
如何规划自己的学习路线?
python有如下几个方向以及他们的相关薪资:
- 从事web开发需要学习Flask、Django等等,薪资大概在20~30k;
- 从事爬虫行业需要学习Scrapy、Requests等等,薪资在20~30k;
- 从事自动化测试需要学习Pypeeter、Selenium等等,薪资在18~35k;
- 深度学习行业需要学习pytorch、tensorflow框架等等,薪资在25~50k;
- 数据分析需要numpy、pandas等相关知识,薪资在20~30k;
除此还有自动化运维、教育等等。
学习第一件事就是要找准方向,python有很多的应用方向,不同的方向,知识也不尽相同。而我们就需要找准方向,然后专注与学习即可。学习切记广撒网,贪多嚼不烂。
从技术栈上来看,缓存Redis、数据库MySQL这些是python开发者都需要掌握的,其他的要根据自己想学的方向,比如爬虫工程师需要学Scrapy、TCP、HTTP、BeautifulSoup等等。
刚开始学习要找准方向,每个都涉及会让你学习不精,容易半途而废。定准方向,找个前辈带你,会让你事半功倍。掌握常用知识,有些知识可以等使用时,再学也足以。
从招聘信息上来看:我们可以在招聘网站上查看相关岗位对职位的不同要求,找准自己的定位,可以从薪资来判断岗位要求是中级还是高级工程师。
爬虫工程师都要求熟悉HTML、TCP、XPATH、CSS,而薪资相对低的要求相对宽松,一年开发经验和掌握一门编程语言即可,但是薪资相对高点的,还需要掌握爬虫架构、Android逆向破解等等。
python后台开发工程师,都需要掌握HTTP、TCP、算法、数据结构等等,薪资高的需要掌握MySQL、Redis数据库知识。
以web开发为例,介绍下整个的学习流程,需要首先掌握基本语法比如变量、控制流等等,做一些小应用,将数据进行存储学习MySQL,然后为小应用,添加些拓展功能,开发完成后我们要部署上线需要掌握Linux、Nginx相关知识,之后我们还要监控它的性能并进行测试,这就要求掌握Nginx VTS相关知识,我们需要优化性能比如增加进程数、Redis缓存等等,最后就是将代码工程化,需要测试用例、代码注释等等。
我们可以通过下面的方式来获取学习资料:
- 官方文档:工作上遇到使用问题,最好看官方文档
- 图文博客:官方文档看不懂时,可以找些相关知名博主的博客
- 付费课程:可以节约一些不必要的时间开支,花钱投资自己,也是个学习的好途径。
学到什么程度算是会?
对技术有整体掌握,接到一个问题,能够清楚它的类型、如何解决、需要用到哪些知识。我们对于知识要有个宏观的掌握,知道能够从哪方面着手,让自己的技术得到应用,对待问题能够举一反三。
市场是检验个人技术水平最好的方式,我们可以通过面试来检验自己的水平,多投简历,增加自己的面试经验。很多初次面试的人,难免会有点紧张,多参加面试,除了自己的技术水平得到检验,面试的心理素质也会得到提高。
写文章是个展示自己水平的好方式,很多知识可能感觉自己学会,但是写不出来,在写的过程是个大脑思考的过程,会让你对知识有更深刻的理解,写作要尽量写有深度的,对于原理的介绍等等,写文章对于面试也是有好处的。
通过做开源项目也可以让自己的水平得到检验,提高实战能力。发布自己的开源作品,别人可以给我们提出一些相关的建议和问题,有时候会让我们获得一定的进步。
如何突破学习瓶颈,百尺竿头再进一步?
学一段时间我们都会遇到瓶颈,这时候我们就需要设定个新目标,可以从性能、效率、开发、稳定性和复杂度这几个方面来入手,提高自己:
- 就效率方面来看,是否能够快速的响应,需要用到例如Redis缓存,能够更高效的传输,需要socket编程;
- 就并发方面来看,资源能否实现有效的共享和竞争,会涉及到分布式锁的应用;
- 就稳定性而言,能否减少异常的出现,能否快速定位异常问题,及时的解决掉问题;
- 就复杂度而言,包括时间复杂度和空间复杂度,设计更加高效的算法来执行;
需求推动进步,当你有了新的需求,就需要从某方向来满足它,比如你需要设计更加高效的算法,那么你就会查找更多的相关文档,这个提高的过程中,你的技术也会随之得到提高。
我们应该设立个学习目标,目标的设立能够让我明确方向,不会迷路,是指引我们前进的明灯,每个人的基础不同,学习能力也不尽相同,目标自然也不同,我们应该根据自己的实际情况,设立个切实可行的目标。比如三年掌握一门语言、熟悉一个方向、迈向一个新的领域等等。
本文整理自华为云社区内容共创活动第一期之【HDZ研习社】学 Python 不走弯路,工程师速成路线,查看活动详情:https://bbs.huaweicloud.com/forum/thread-105538-1-1.html
- 点赞
- 收藏
- 关注作者
评论(0)