最近的工作,变成了Python全栈工程师
大家好我是蚂蚁,本文不是广告^_^
实在是没想到,工作快8年了,最近的工作变成了一个Python全栈工程师。
Python在我8年工作经历中,一直都在使用,不过从来都不是主语言,我的主语言是JAVA,用Python会做不少"辅助"的事情,比如数据处理、定时任务、报表计算、Web页面等等。
半年前我跳槽到了当前的新公司,是一名推荐系统架构工程师。
我的工作围绕推荐系统工程架构展开,大团队的编程语言用到了3个,分别是C++用于底层推荐引擎、JAVA用于业务对接、Python用于机器学习和模型部署。
因为我所在的小组是推荐中台,更加偏重部署流程化的事情,Pythong更适合这个场景,因此是主语言,而同时我也需要了解团队其他的技术也得掌握C++/JAVA,但它俩现在是副语言。
从来没想到,副语言竟然转正了,每天写的最多的代码,变成了Python。
而用Python开发的首要技术模块,是Flask的Web服务,这个服务会提供给公司的推荐算法使用,可以自动化的配置模型、发起上线部署流程,是一个公用的平台。
## 分割线
相对于Java/C++,Python在开发一个Web部署类产品上,有明显的优势:
^_^,不由自主的又开始推销Python,不过这次结合下我的工作
1、开发非常快速
相比JAVA/C++的语法,Python真的是简洁明了,不用考虑类型适配,有大量的强大类库支持,比如用Python实现下载、解压、移动文件、上传等等
2、调试DEBUG方便
如果要调试C++程序,即使一点点代码,恐怕得花至少5分钟去编译、替换二进制,并且只能通过打印日志的方式调试。
JAVA其实在小项目DEBUG调试很方便,然而我们基础架构的JAVA是给第三方用的,结果也导致出问题DEBUG很麻烦。
而用Python,哪里有问题,Pycharm打个断点,几分钟就能揪出罪魁祸首,有几个写C++的同学用过几次Python,简直大呼过瘾。
3、一门语言搞定很多场景
Python在我这里主要用于Flask Web开发,但是它也承担其他的事情,比如配合Pandas/Seaborn做数据分析可视化、同时用于tensorflow机器学习模型的训练代码开发,相对来说更加多能。
## 分割线
然而,用Python开发Web项目,也会遇到一些问题:
1、代码难以规范、复杂模块凌乱
JAVA是代码规范+结构组织的典范,C++我敢说比Python更烂。
而Python这门语言,入门特别容易,并且能快速参与项目开发,很容易大家各自为政写出不规范的烂代码。
最近在研读谷歌的Python代码规范,就是想建议大家把代码写的规范,别人更易读和维护。
谷歌Python规范文档:
https://google.github.io/styleguide/pyguide.html
2、会遇到性能问题
很多性能问题,其实是和编程语言无关的,而是和代码本身的逻辑有关。
然而,Python好像更容易出现这类问题。
遇到了问题,需要通过阅读代码、性能分析等手段找到问题,然后解决。
如果是并发问题,还要更多的深究多线程、多进程、协程等机制。
不过我反而也觉得这是个机遇,说明Python是可以深挖的、有能长期积累的技术方向。
## 分割线
最后分享下,我现在工作用的Pythn用于Web的技术栈:
网关:Ngnix
前端:vue.js
后端:Flask,gevent.pyuwsgi,requests
存储:MySQL、本地文件
分析:Pandas、Seaborn、Jupyter notebook
模型:Tensorflow
## 分割线
最后,谢谢大家订阅我的公众号。