ホームページ > バックエンド開発 > Python チュートリアル > Python 工程师在公司工作体验如何?

Python 工程师在公司工作体验如何?

WBOY
リリース: 2016-06-06 16:10:27
オリジナル
1704 人が閲覧しました

python在公司体验如何?主要做些什么?对于初学者有什么书籍资料推荐的,有什么建议?

回复内容:

关注这个问题有些日子了,趁空闲时间来码几个字,顺带骗赞。
============================================================
说到用python工作的体验,就一个字,爽。

答主工作过两家公司,第一家公司是用c/c++的,主要还是用c,每天写代码经常和一堆指针还有五花八门的位运算过不去,调试的时候还要经常去对内存中每一位的值。没错,那时候就是搞嵌入式开发的。在某天想提升自我的时候,我决定静下心来学一学python,先是看了《Head First Python》,然后挨个栗子写过去,遇到问题强迫自己先去查官方文档,还是不能解决就百度 or Google之,大部分问题都能在stackoverflow上找到答案。这个过程保持了三四天的样子,基本已经能根据自己需求写出一个像样的python脚本了(比如spider)。

于是答主为了能更好地发挥自己算法方面的优势,离开了第一家公司(哪钱多去哪),到了一家做互联网广告的创业公司,全公司的技术开发全部为python,底层部分是用c++的。公司用python的原因主要在于创业阶段力求缩短开发期,及时将调整的方向落实下来并观察市场反馈情况,所以像BAT这样的企业为了求稳定和效率必然不会用python来做核心业务开发。我在入职之后大致上做过以下python相关的工作:

1、Spider
这个算是python的拿手绝活了,我工作上使用了scrapy开源框架,主要是针对电商数据进行抓取。必要的时候还会用到beautifulsoup辅助解析网页(scrapy自带的xpath提取内容相对更好用一些),用selenium的webdriver来模拟浏览器上的一些行为(主要用来模拟一些无法获取post包的ajax请求)。存储上用过多种数据库比如mongodb、redis、mysql。抓取这一块用的最多的是mongodb,这里具体原因就不展开了。和spider相关的工作还有分布式开发,自己做过一个spider调度架构,也是用python写的。

2、Data Mining & Machine Learning
这工作基本算是在互联网公司做算法永恒不变的主题,在答主的公司主要目的就是实现广告的精准投放。这块工作说简单来就是用决策树和item-cf模型做用户的个性化推荐,用k-means模型优化广告竞价的选词出价。虽然python有许多现成的ML库,不过这块工作我基本还是重新造了轮子,不能说我写出来的模型一定比别人好,但至少在发现bug的时候,我可以准确知道是哪行代码出了问题,而不至于出了问题要翻别人的几千行开源代码,这就真的要命了。

3、Interfaces
由于创业公司的技术开发人手有限,所以也要搞后端开发的活,主要负责和前端进行数据交互,然后和各大网站API对接(比如淘宝、百度、大众点评等等)。这块工作主要就是利用python编写多线程脚本,实现诸如消息队列这样的功能。也有一些现成的软件框架,比如我们目前用的是Thrift框架,接口转发层是python写的,然后分布式到每台服务器上的数据处理模块是c++写的。还有一部分工作就是用python的Django框架进行web开发,比如官网和各种管理台开发。

有些人总是喜欢吐槽说python性能低,内存占用高,还有糟糕的多线程。没错,这些的确都是python的缺点。但是语言毕竟只是一种工具,选择用什么语言做开发得看你自己的需求不是,至少用python处理每日几千万的PV是没问题的。Google的好多项目开发都还是用python,况且python之父也还在Google呢,你确定你们的项目一上来就堪比Google的项目规模?

===========================================================

来更新大家关注的待遇问题……

首先要说明的是,python开发工程师待遇普遍高的一个重要因素是,他们往往在C++或者Java上的成就已经比较高了,而不是光靠精通python就能获得的,所以我在面试应届生时(python开发岗位)还是会考C++相关基础知识。

下面根据地域来谈下目前python互联网开发平均薪水状况:
一线(北上广深):本科应届8k ~ 12k,硕士应届10k ~ 15k,工作两年要达到17k还是相对容易的。
二线(杭州重庆成都青岛等):本科应届7k ~ 11k,硕士应届9k ~ 14k,基本上比一线低1~2k左右。
三线城市的话再低1~2k…… 不过三线城市的python开发相关岗位基本没有了吧。
杭州由于有BAT的领头羊在,目前薪水直逼北上广,表示已经有学弟本科毕业拿到了阿里14k的offer(Java开发),不跳槽等着被倒挂。

最后泼个冷水,Python 程序员平均工资很高,但为了获得“高工资”而专门学习 Python 完全没有意义,因为水平到不了那样的程度的话学了 Python 也不能提高自己的工资的。

===========================================================

ps. 突然发现这个问题标签里有”前端开发“,这位修改问题的小哥出来一下,我保证不打你 ~ 我们用Python写洋葱圈 - 认真、有趣的体育社区的API,用Python写代码就是快,感觉用这门语言的公司和人逼格貌似比用其他语言要高,不过我还是逃脱不了屌丝命。

初学者看你是有多初级,Python教程 - 廖雪峰的官方网站,看完了可以再看你是如何自学 Python 的? - dylanninin 的回答,这个答案有很多参考链接。

建议的话,温赵轮三大百万软狗给你的建议更具有参考价值 加上大二暑假的实习,到目前为止我一共待过三家公司。

大二那年暑假,在成都天府软件园找了一份实习,一家创业公司,我做 Android 开发,一个 IM 类的 APP。当时的后台是 Python 写的,不过当时对 Python 的了解程度仅限于 「hello, world.」,所以并没有涉及到 Python 的工作。

后来回学校之后,要做一次课程设计,大家的程序都是单机版,我想做的别致一点,就打算写一个后台,放在 SAE 上。一开始打算使用 Java 写后台,后来觉得 Java 太无趣想换一门语言试试,就花了一晚上看了一下 Python 和 flask,然后就写了我的第一个可用的 Python 程序。

去年四月,在重庆找到一份 Python 方面的工作,公司做 2B 方面的业务。再此之前我基本没有想到过重庆这类二线城市有 Python 相关的工作,记得去面试的时候我还带着一份 Android 相关的简历,只是简单提了一下我会 Python。后来,就基本废弃了 Android 开发,开始转向 Python 的怀抱。

今年四月离职,到了另外一家公司,主要开发语言还是 Python,公司主要为 2C 方向。

总体来讲,Python 受到创业公司喜欢的原因(自认为)大约有以下几点:
  • 什么都能干:爬虫、Web、数据分析、运维、......
  • 出活快,可以在较短周期之内完成同样的事情。
  • 一个 Python 程序员可以干两个 Java 程序员的活,只是多费三倍机器,毕竟机器更便宜

Python 崇尚「There's Only One Way To Do It.」,但老实说 Python 并没有做到这一点,不同的人之间如果没有提前明确的约定,代码风格是几乎完全不一样的。但是我还是很喜欢 Python 的包容性的,由于其代码可以千变万化,很容易就可以区分老鸟与新手的代码,现在再去看自己刚开始的 Python 代码,自己都会脸红,说不定一年后再看现在的代码,也会有同样的感觉吧。总之 Python 的代码风格可以随着你的水平提升而变得更加成熟,相比有些设计「严谨」的语言,无论怎么写,都是一样的风格,反而无趣 。

体验如何这个问题其实与语言相关性不大,之前的公司先是自由上下班,后来打卡上班,9点半就得到。现在的公司上下班自由,还提供早餐午餐,有人甚至直接来吃午饭。在一家公司的体验如何更多看一家公司的企业文化,当然互联网公司大部分都还是非常开放自由的。唯一的建议,就是不要去那种只谈梦想的公司,比如知乎前几天热议的 「异乡好居」等。

至于工作内容,一方面与语言相关,另一方面更和工作性质相关。比如用 Python 做 Web 的人,与用 Python 做爬虫的人,工作内容肯定是不一样的,所以要了解工作内容,更多还是要从工作性质入手,而不是语言。不过计算机领域,产出是衡量你水平的唯一标准,这道线非常明确,没有水分可言。

对于建议,并不建议看视频学习,一方面视频课程会非常拖沓和遗漏,同时也会令学习进度非常慢。书籍方面可以参考《Python 核心编程》,这本书的讲解自认为还是非常适合初学者的。在此基础上,一定不要光看书,找一个自己感兴趣的方向(Web / 爬虫 / ...),找一个感兴趣的事情,比如做一个网站、做一个厉害的爬虫等等,并坚持做下去。遇到问题,通过 Google 解决之——所以,翻墙的本事是一定要有的。

对于初学者,最重要的一点就是,不要去争论 Python 2 好还是 3 好。 在业务需求明确以及没有背历史包袱的情况下,写代码就跟吃饭喝水一样自然而然搞定了,包括测试用例,接下来在发布版本那几天可以安安心心的看前端忙碌调接口,看产品不断的验证功能,我好像变成了一个无所事事的人到处晃悠。

如果功能模块需要处理历史遗留问题或者业务需求一直在变化时,我通常直接写类似于伪代码一样风格的代码,包括完整的设计和模块之间的调用以及具体的业务处理方式,有不确定的就写个空的接口甚至丢一个todo在那,前面一半的时间几乎不做正确性检查,等到最终需求稳定了,对整个代码兼容程度也摸透了之后再把之前瞎写的代码按正确的方式替换一遍基本就能跑通,这是我在用其他语言很少给我带来的体验。 当年我去了微软,以为他们会让我写C#,结果让我写python
然后我去了百度,以为他们会让我写PHP,结果让我写python

我现在想把简历上我会python这一项去掉
下个公司再让我写python我就自杀 供职的公司都是做开发的,业务逻辑,运维,乱七八糟的只要是需要写代码弄数据的都做过一些。体验是:事情很多都做了,但和程序员同行论剑的时候没什么大招可以放,因为其实也都是解决一些问题。程序员么,喜欢讨论回字四种写法,不喜欢讨论kpi。好处是只要自己腰板挺的直,也能一直认识到和top100程序员之间的巨大差距,也能活得下去。坏处就是沽名钓誉的事情做不来,也没有办法给自己抬高身价。(因人而异,同样的事情也可以变花样解释,此处不展开)

在公司里写业务的可能大家都差不多,代码质不好说,保量。东西没少做,bug没少出,班也没少加。也别太羡慕别人家用C++做业务的,其实大家都差不多。可能有人会说你个写Python连栈都不认识还敢号称全栈,你个连垃圾回收都不懂的垃圾,没关系,笑而置之就好。多学习,少争吵~

楼上有朋友提到了求职,这事一方面看自身够不够硬(问问自己是不是一个真 程序员),准备是不是充分(题都做了没?),机遇(曾经室友的老王内推你,说上学的时候你是他大哥),会不会营销自己(上家公司我是CTO,带团队,产品项目一手抓哦对我还会写Python)。反正不知道Python的前景怎么样,你的前景肯定光明 - 只要你努力(不是鸡汤)- 总之跟你用不用Python无关。只要你别简历上只写Python,只看写了Python的JD。(写上精通C/C++, Java, PHP, Go, Erlang, Scala, Lua, NodeJS...反正都是给HR看的,或者如果技术组长看到了觉得你小子很狂想灭灭你的威风,能拿到一个面试的机会,已经是成功一半啦。)

事在人为,工作以创造价值和实现自我价值为目的。Python在快速实现功能和做胶水语言方面的方便和高效是有目共睹的。用Python的时间越多,回来看这个漫画就越是笑的开心:xkcd: Python
然,Python说到底是一个工具,作为Python工程师,如果被“Python”这个词束缚住了手脚,多少显得有些无奈。就想其他朋友说的,也许一直在小公司跳来跳去和去大公司做运维、算法(这又需要很多多其他的知识积累),才能说一直作为一个“Python工程师”生存下去。其他情况的就业/生存空间真的不如只做/用Java,PHP的朋友们(此处无意冒犯,因为这两个语言生态健全、社区资源丰富、应用场景广泛且多企业级/大型应用)。总之还是通过学习Python快速做到一些事情,以实战演练在程序员的道路上多多发展吧,立志成为栈溢出工程师吧!

喜欢研究Python是用2还是用3好的朋友,当我上面都没说。

如果立志做一个只用Python的工程师,或者想要向Guido哥看齐的话。。。请多backport一些到Python2.6(7)....代表组织感谢你~ 留坑,等有空了来回答。 1,尝试用Python解决遇到的大部分问题。2,学Python之前最好先学一些编译型语言,然后感受Python的优雅与美。3,在正式用Python产出前,最好有第二条的前提,如果做不到第二条,那就从改别人的代码开始比较好! 体验上就是开发比较快,各种类库都有,只要能想到基本都能搜到。
主要做web开发还有些自动运维的东西,创业公司。
初学者主要是看官方教程,要是偏向web 可以看廖雪峰的那个小白教程,中谷教育有免费的视频,不愿意看书也可以看看。

最好是python+另外一门语言 ,只是这一门语言有些单薄,特别是东西做大了起来之后。 下面说的特指Python后台开发,ML、数据工程师之类更像是把Python当脚本用的岗位不在讨论范围内。

中小公司机会多,但是大公司的坑不好找。北京稍好些,上广深杭招Python的知名公司用一只手都数的过来,其他二三线想找得看运气。

Python程序员一般不关心性能,要求高可用的项目一般也不会用Python写,做的东西比较杂相对边缘(这点从其他回答也能看出来吧),大公司里一般是运维开发或做其他内部项目用的多。

因为做的东西不复杂,语言层面屏蔽的东西又多,Python程序员需要关注技术层面的东西自然就少,写代码时脑力基本都花在业务上了,只写Python写久了很多技能会退化的。开发中遇到的大多数问题都能从Google和栈溢出上找到答案,这个其实也能说明Python写的程序相对简单。

再说点好的。Python程序员工作强度普遍不大,我一直写Python,从我第一份实习到现在的工作都不怎么加班。现在每天在公司平均不到九小时,其中躺着午休+吃饭+健身的时间超过两个半小时,现在准备找点副业干干。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート