小码农我长期埋头搬砖,但也定期抬头跟老板吐槽各种不够人啊不够人。去年公司里发生了个有趣的人事和部门重组,本菜鸡居然开始面试开发了——这种事情当然不是重点了——重点是后来又经过了一系列神奇的项目变迁,我们开始急招数据平台相关的工程师,招平台运维招数据工程师招算法工程师各种招~本菜鸡主要面数据和算法相关的筒子啦~然后本碎碎念主要想念一念的就是,通过这段时间的工作加面试经验,我对这个职位慢慢产生的一些理解。当然这里还是粗识浅见,很不全面也不太追求全面,只说几个感触比较深刻的点,偶尔也说得比较偏激,大家随意感受多多包涵。
说起数据工程,好像是最近几年突然就火起来的一个方向。仿佛一夜之间,所有的公司都想从自己的日志里、数据库里、和各种通用社交平台上挖点钱出来——于是乎,一大票统计相关专业的盆友们就嗨起来了:不就是数据分析嘛,我在行!还有另一票的CS盆友们也露出了自信的围笑:跑代码,我们更专业!
在当下的IT浪潮中,数据分析看起来是整个行业的一大新兴主干支柱无疑了,这里统计知识自然是迫切需要,CS的基础也不可或缺;但是,也许是产业发展太快,太多的公司一口气押宝太多在这个方向,让数据工程师这个头衔不小心就沾上了水分。题图引用了一句非常非常出名的话,正说明产业里过于浮躁的一面。
一个产业浮躁的话,最直接的结果是什么?当然是工资开高了——经济学原理嘛~员工们在卖自己,当老板们来不及好好检查员工水平的时候,信息不对等就发生啦,信息不对等的时候,就出现了卖方市场啦,卖方市场的时候,售价就上去啦~有些人的技能点其实并不适合做上量级的数据工程和分析,他们在行业里做的也并不一定和传统的分析员二致,但是就有公司愿意以新兴产业的价码养着,不过估计随着行业慢慢成熟,这样的情况应该会越来越少。
为什么上来就先说这个结果呢?因为传统的分析性工作,在我个人浅见,已经到了非常成熟的阶段,一个岗位空缺开出来,面试官们对应聘者的水平,已经有相对清晰的衡量标准,可竞争的边际优势实在太少太激烈;如果这时一个应聘者只有传统统计背景的话,很可能就必需非常抢眼非常聪明,才能在好的对口岗位上脱颖而出。但是如果在这时候应聘者表示自己能编程,或能用编程方法做数据分析,那情况就大大不同了——由于产业较新,若面试官是业务背景为主的话,他可能就比较难对应聘者说的编程水平做出衡量;而若由一个程序员来面试的话,他也可能出于对团队分析能力的需要,而在应聘者的编程水平考量上降低标准。
这样的结果便造成了一种现象:一些非CS专业背景的人,在MOOC上学了一两门课之后,就可以理直气壮地说自己能编程——但是负责任地说,这样的水平下只能做非常非常简单的原型,对于任何上规模的分析,数据源和服务器给这样的人玩,至少有一个是要跪的。那换一个视角,程序员出身的领队想给自己项目里的数据分析助力,能不能让这样背景的人就只做简单原型,做出了原型再由程序员实现呢?窃以为也是不太可取的——如果真是有大量的数据要分析出点有价值的东西,小原型的一点偏差可能就是一个模型选择的方向错误。而且真要把一个原型生产化的时候,如果里面的算法细节真啃清了之后,做实现的工程师估计统计背景也差不多过关了……(贵厂场景如果真复杂到一定程度的话请忽视我的这段逼逼)
既然说到了做实现的工程师,就正好说一说另外一种背景的人——黑一黑我们CS自己人。现在的MOOC实在是太平(lan)民(da)化(jie)了,尤其拜Andrew Ng所赐,Machine Learning的理论门槛被很好地降低到了一个足够直觉的程度。这些本来都是初衷非常好的事情,但是“无意”之中,有一部分CS的童鞋,在缺少系统编程背景和基础统计背景的支持下,凭着“我会ML了”的自我优越感,大摇大摆地往数据工程师方向找工作。其实这样的选择也是非常危险的。因为本质上一个算法要被真正工程化,还有两关要过:如果结论真是跑一个标准库就出一个够好的结果,那算我没说,但是真正的调优,是要基于对整个推算和证明过程的理解,想通过盯着API文档瞎调试就把结果优化……祝好运,即使调好了也没有系统性的经验提升;另一关就是生产代码的组织和维护——想让一个代码规整习惯良好的码农,俯首贴耳地重构一个长得随性又写意的原型,提供原型的人要么得是大牛,要么得是个美女(而且码农是单身雄性),否则没两天这个代码规整习惯良好的码农可能就跑路了。
说到底我觉得大部分公司里真正招的人才应该是增长黑客,如果这个词听着陌生,可以理解成运营导向的程序员——需要具备把运营需求转化为数据细节的能力,并能有效利用代码,合理地获取数据,再用统计方法验证自己的猜想,最后还要在迭代中改进自己的算法或者系统。不论是“大数据”,或是各种新奇的算法和模型,都只是浮在半空中的噱头,说到底,真正应该在意的,是算法的效果和系统的可维护性,而这两点,正好对应了良好的统计和软件工程基础。
突然想起最近有一个同事跟我说,她以前觉得Python挺好的,Scala学习曲线太高不够亲民,直到最近才悟出原来Scala的学习曲线优势在于,真下了决心要搞数据工程这一行的人,如果连Scala都搞不定,要么是心不够决,要么是智力硬伤;如果对编程和统计都只是半桶水的话,公司业务和线上平台可能都因此而暴露在危险之中——而Python就太容易出结果,让太多人对这个行业误解了……仔细想想还真是有些道理,是我上面这么一大坨梦呓一个不错的总结。
一不小心扯了这么多,其实自己也是在这两个方面努力中的小猿猿一只。如果有人想来新加坡一起成长,或是有大牛来提携本菜鸡,带我装逼带我飞,都请给我简信哟(靠本来一开始没准备发招人广告的……我要找老板说说,跟部门HR美女分工钱)