Fork me on GitHub

要不要选择学习Python

特别声明: 非技术类文章, 闲聊略多, 个人观点仅供参考。

Choose Python?

博主本人现在对Python是真爱, 但曾几何时, 我也是一名选择困难阵患者……

时代愈发浮躁,使得处于时代漩涡中的人亦如是。尤其对于IT从业人员来说,层出不穷的新技术令人眼花缭乱,随之而来的就是选择困难症。

是的, 在你思考怎么学习这个问题之前, 你需要先确定到底该学哪个!

当然, 看标题也知道我推荐的是Python, 但这绝对不是说”XXX是世界上最好的语言”。毕竟, 具体问题还是要具体分析。


python_laptop2

目前的视野范围还处于探索阶段, 可能会有疏漏, 且当记录, 也许多年后回顾会有不同的体会吧!

IT从业者

限于行业和工作经历,我就身边最多的一群IT从业者来讨论这个问题。

a)开发和测试

看到这里可能有人会疑问, 测试和开发不是一个岗位吧, 怎么能一起说呢?
其实可以的, 在敏捷开发的最理想状态中, 涉及项目开发的各个岗位的人员职能是可以相互替换的。比如开发做测试, 测试做PM, 开发做PM等。
只不过由于实际项目开发过程中, 限于项目成员的时间、技术水平等因素, 实际只有”开发做测试”这个替换最容易实现。

(1)非专职Python开发, 更多将Python作为一种辅助语言, 比如运维会用Python写批量脚本, C++服务端开发是不是会用Python写点服务端程序等(不过最近Go作为新兴的服务端语言大有赶超Python的势头)。
毕竟Python作为有名的”胶水”语言, 其代码简洁优雅, 效率实用, 很适合做各种杂七杂八的工作。平心而论,虽然目前Python热度很高,但是国内后端开发的岗位热度实际上是Java更高,虽然是受技术发展的历史影响,但是我相信假以时日,Python一定会后来者居上。

(2)专职的Python开发的工作范围也相当广阔,如:开发Python Web, 开发爬虫, 软件自动化测试(尤其受渗透测试青睐), 自动化运维, 云计算(Openstack开发), 机器学习, 量化交易等等。每一个领域想要深入都有繁杂的知识树, 需要足够的技能点才hold得住。

(3)软件测试人员, 坊间戏称为IT民工中的底层(多为圈内人自嘲, 以后专门写个文章说说软件测试这个岗位), 选择太宽泛, 如果什么都去学, 只会得到一个”贪多嚼不烂”的结果。
这里说到需要学习编程的测试人员, 自然不是面向纯业务和功能测试了。 虽然做软件自动化的语言各种各样, 但对于测试来说, 尤其是非科班出身的, 初期只推荐学习两种语言Java和Python(原因详细说又是一大篇文章)。 因为目前开源且利用率最高的几个自动化测试框架中, 对Java和Python语言的支持都做的比较好。
至于科班出身的软件测试人员, 只要不是大学四年天天混日子的, 相信都多少有一些编程功底也学习过软件工程这门课, 如果不是个人学习能力太差, 一般来说都能很快适应软件测试的工作。
说到这里有必要提一下综合岗位测试开发(虽然本质上还是开发岗), 招聘JD上一般的必备要求是有N年Java或Python开发经验, 就算考虑面向市场的问题也得学这两种编程语言啊!

那学Java也可以啊,为什么选择Python?
Java历史悠久,语言稳定且社区资源丰富,各种扩展包功能也很强大,只要代码规范和架构设计做好,就算是初级程序员,也可以很快上手大型项目。加上Spring Boot和微服务兴起,以及市场的开发需求量,相信Java还能再战20年。
但是Java太重型,就是拿最简单的hello world都比Python、Javascript、Ruby之类多得多。在流行快速迭代、敏捷开发的互联网行业中,竞争优势就不那么明显了。
反观Python,自Python 3.5稳定版本起,Python的功能逐步稳定,且代码越发简洁优雅,灵活性高效,第三方库资源充足,如同乐高玩具一般,只要你想得到,能找到合适的模块,很快就能完成一个不错的作品。若实在没有合适的模块还可以自行开发(当然,涉及底层还是要学C语言)。

b)PO和PM

PO(Product Owner)和PM(Product Manager), 其实这两个职位大多数是经验丰富的开发转岗的,也有少部分是精通业务设计和项目管理的从业人员,但只懂业务需求完全不懂技术架构,迟早还是会遇到瓶颈。对于这两个岗位,其实不用拘泥于学习编程语言,灵活的管理手腕和对产品业务的充分理解反而更为重要。

c)架构师

一般是指系统架构师,虽然近年也出现了“测试架构师”的岗位,但万变不离其宗,都是强调对产品架构的理解要透彻。这是高级技术岗,如果让纯管理岗人才来做绝对会坏事。技术好经验丰富是准绳,如果同时精通项目管理自然是如虎添翼。到了这个阶段的技术人员,其本身的编程水平就不会低,学习新东西,贴近生产一线和市场,对他们来说更为重要。

非IT从业者

其实可以划分为一个群体,但考虑到学习上的差异,再细分一下。

a)在校学生群体

这里之所以限定在校, 是因为全日制在校学习和工作是完全不同的两种状态。全日制学生除了日常学校课程,其实有很多学习时间。而且现在网络教学资源丰富,只要是有心人,甚至能不花一分钱找到你想要的优质学习资源。当然,还是要提醒一点,找到资源后一定要认真学习,不然就只是满足了你的资源占有欲而已。
关于编程语言的选择,0基础的就从Python3开始学。有基础的就从你熟悉的编程语言入手。当然,如果你不是搞嵌入式或逆向的,却一门心思研究汇编不放手,我只能送你一句”God bless you!”

b)社会群体

社会人的学习真的很辛苦, 因为有太多因素会造成干扰,比如工作经常加班,下班后疲劳学习效率低,每周再怎么挤时间也只能挤出很少一部分。关于时间,有一本叫《暗时间》的书可以看看。时段管控推荐《番茄工作法》,两本网络上都有免费电子资源。
至于编程语言的选择,如果只是兴趣,而且不是为了做移动端开发,那0基础依然推荐Python3。对于有基础的,比如你是Java开发,那我基本不是太担心,毕竟都是面向对象的编程语言,经过起初的适应期,很快应该就能上手。

Python的热度

最近几年最火的几个IT概念是什么? 云计算、大数据、VR/AR、人工智能(其中机器学习和深度学习更为大众熟知)。
而Python就着这股势头一跃成为GitHub Octoverse 2017年度报告中第二受欢迎的语言,已经超过Java。(第一?当然还是Javascript)

Why I Choose Python?

对于总是游走于开发和测试间的博主,可以说是对Python感慨良多,博主是通过Java编程入门,虽然一开始配置环境被坑过几次,但凭借打不死的小强的精神磨练出现在强大的环境配置能力,还同时学了点Android开发,只是后来用得少,有点荒废了。后来为了更加高效的完成自动化测试任务和开发测试管理平台,逐步投入了Python的怀抱,虽然适应了好一段时间的语法,不过现在也一点兼容性问题都没有了。
博主是一个兴趣广泛的人(简言之:想太多),各种类型的IT项目都想做做看,最后不知不觉就加入了Python开发者大军,虽然期间有机缘巧合,也有自身抉择,但Python的发展前景还是我个人还是很看好的。博主身边不少的Java开发都在学习Python了。
最后,举个通俗易懂的栗子:君不见越来越多的培训机构开始办Python就业培训班了吗?博主毕业那年机构培训Java的做多,虽然现在也仍是最多的……

-------------  Fin    Thanks for reading!  -------------

本文标题:要不要选择学习Python

文章作者:TesterCC

发布时间:2015年07月29日 - 21:07

最后更新:2018年01月20日 - 21:01

原始链接:http://blog.fullstackpentest.com/要不要选择学习Python.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。