作为数据工程师,同样需要认真应对公司和业务的规模化所带来的挑战——业务更多,数据集 (Dataset)的规模也更大,所需求的数据能力和工作方式也要随之演化。 姑且做个猜测:规模越大的公司,对规模化相关的技能越加看重。是否真的如此?我们先查看查看下面的图表。 【图表:不同公司的数据工程师之间的差别】 ▲ 纵轴表示技能,横轴则表示相对偏差(Relative Difference:某一次测量的绝对偏差占平均值的百分比)。深蓝色、天蓝色、橘色分别代表三种公司规模:1-200人、200-1000人、1000人以上。越接近图表顶部,该技能越应用于较小的公司,反之,位于底部的技能更普遍地出现在 1000 人及以上的公司里。 看完表,我们可以用数据回答先前的猜测:NO。 真实情况是,在规模更大的公司,数据工程师更在意 “企业级” 相关的技能,比如 ETL(Extract-Transform-Load)、BI(Business Intelligence:商业智能)、数据仓库等,而在较小的公司,数据工程师更多的把心力花在 Python、Java 等编程语言上(编者按:Python 和 Java 作为普通的编程语言,可以用来构建产品,这对于小公司来说属于核心业务。) 专家洞见 Will Smith,MIT 的主数据工程师 / 架构师:“数据工程 @大公司 VS. 初创公司” Will 曾为 Nokia、Warner Bros Games 这种大公司打造过数据技术。在他看来,数据工程师所仰赖的技术,不那么取决于公司规模本身,而更应该从这么一种角度出发:你所负责的数据是“写时模式”(schema-on-write)还是“读时模式”(schema-on-read)? 他认为,大公司往往在处理数据工程的 BI 方面有所积累,Informatica、Oracle、SAP 都会接触和使用。这类公司往往在“写时模式”的环境里工作。 但现如今,很多打造数据科技的公司实际作业的环境是“读时模式”。“想象一下,公司交给你几个 TB 的日志数据,用的 JSON,是关于广告效果的。数据工程师不知道能从这堆数据中挖掘出什么,所以你需要开发者写代码去做数据发掘,而不是一上来就直接套用 SQL。这和大公司在 ‘写时模式’ 的环境中做事很不一样。” 2011年时,Will 正效力于诺基亚 (Nokia)。尽管当时主要经手 “企业级的数据”,但团队却选择“读时模式”的思路去开展相关工作。 “现在很多数据工程师都这么做,比较适合规模化的需求。这样设计和开发出来的东西,可以消化掉来自于各种来源的数据。传统老旧的 BI 系统就没这能耐——主要是因为以’写时模式’为基础吧,这种老技术不知道在一堆数据里都有什么,这么一来我们这些工程师也没啥头绪了。” 这个数据集体现了数据工程师与数据科学家之间的明显的技能差异,由此可以将数据工程师与数据科学家的技能构成看作一个频谱的两个对立面。 以下这张图表显示了一张数据技能频谱图,频谱图顶端的技能在数据工程师的简历中更为常见,而频谱底端的技能更常出现在数据科学家的简历中。 【图表:数据工程师与数据科学家的区别】
▲ 从图表的技能构成可以看出,数据工程师更倾向于掌握 “战术层面” 的具体数据技能,专注于使数据可用并能够在生产环境中对数据进行处理,如具体的编程语言、操作系统与数据库等;而数据科学家更倾向于“战略层面”的数据技能,如数据分析、数据挖掘、统计分析、机器学习等。 数据工程师与数据科学家之间的差异是十分明显的,那么数据工程师与软件工程师之间的技能差异又是怎样的呢?毕竟,正如我们之前所展示的那样,大部分的数据工程师都具有软件工程师的背景。 【图表:数据工程师与软件工程师之间的区别】 (责任编辑:本港台直播) |