您现在的位置是: 首页 > 创投

知乎、饿了么后端的招聘纷纷由Python渐渐转向Java

时间:2018-02-06 16:38:54 来源:

最近新起的业务后端项目都还是 python 的(python + tornado + gevent(wsgi server)),容器部署+弹性扩容。大部分项目的 qps 还没有高到非换不可的地步。有些 qps 很高的业务用 golang 写了。话说很多人被 python 惯坏了以后都懒得写其他语言了。公司在 go 和 java 后端方面的积累和实践比较少,相应基础设施不完善也是一个原因。新项目给的时间很紧,用 python 开发 mvp 产品迭代快。(现在 python,go,java 都有,python 主要在业务端,技术选型一般会考量很多因素,包括产品周期、招人成本等。核心后端业务确定会慢慢迁移到 go,节省资源)

看到有人说 python 这种动态语言不适合构架大型项目,是有一定的道理的。动态语言写起来坑比较多,太灵活,容易出错,代码写糙了后期很难维护(Rails 作者曾说过"灵活性被过分高估——约束才是解放"),我看 python 代码最头疼的就是看不出一个复杂变量的类型(最新的 tornado 代码已经给复杂数据结构加上了类型标注),重构的时候会心惊胆战。灵活性是把双刃剑,表达能力强但不好维护。动态语言在工程管理和项目维护上是有劣势的。

不过现在很多都是微服务架构,业务拆分成很多服务,不会出现一个代码仓库有很多代码的情况,保证项目是可控的。代码质量也可以通过编码规范(pep8, autopep8, editorconfig,统一开发环境),静态检测(flake8, pylint),code review(gitlab),单测(unitest, nose, py.test)等方式加强(当然最重要的还是依赖程序员的素质)。

python 能在 web 后端使用日渐广泛也是因为有 instagram, reddit, youbute, quora, pinterest, disqus, uber, Dropbox, 国内的 豆瓣、知乎、饿了么、搜狐等成功案例支撑(很多中小公司也有在用)。python 的一个好处就是很多事情都能干吧,爬虫、web、运维、科学计算啥的,学习性价比比较高,当个玩具玩玩也好。而且,如果真换技术栈也只是极少数 qps 非常高的业务,大部分 python 是能搞定的(除非冲 KPI,不然业务都做不完,更没时时间换技术栈)。业务量不大的公司也不用担心,业务量大的公司估计找投资、找牛人优化也不愁了,也不用担心。

1.饿了么在业务发展初具模型时很多项目是Python写的,更早期还存在着PHP等其他语言写的项目;

2.业务高速增长期(14~15年),项目需求短时间内招聘大量的开发人员,Python Web开发人员在国内还很小众(相比Java这样的工业级语言)。两条路,招Java进来转Python(项目进度时间不允许),或者新项目用Java写同时现有项目用Java重构。这期间大量的Java开发人员加入并且产生了很多Java项目。

3.目前,Java和Python项目并存,Java人数占优,业务项目数量占优,招聘职位数量占优。Python项目除了历史沉淀下来了的订单、结算等核心组件,还有就是偏向机器学习等基础研究项目领域。

4.近期趋势,Java会成为业务项目主力(马太效应),全面取代Python web,Python人员转向机器学习领域,或者转golang做底层的高性能中间件开发。

总结:这是个符合历史发展规律的被动选择结果。

关于我们| 联系我们| 投稿合作| 法律声明| 返回顶部

版权所有 ©2015-2017 我在网 京ICP备14056282号-1

(function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();