但现如今,很多打造数据科技的公司实际作业的环境是“读时模式”。“想象一下,公司交给你几个 TB 的日志数据,用的 JSON,是关于广告效果的。数据工程师不知道能从这堆数据中挖掘出什么,所以你需要开发者写代码去做数据发掘,而不是一上来就直接套用 SQL。这和大公司在 ‘写时模式’ 的环境中做事很不一样。”
2011年时,Will 正效力于诺基亚 (Nokia)。尽管当时主要经手 “企业级的数据”,但团队却选择“读时模式”的思路去开展相关工作。
“现在很多数据工程师都这么做,比较适合规模化的需求。这样设计和开发出来的东西,可以消化掉来自于各种来源的数据。传统老旧的 BI 系统就没这能耐——主要是因为以’写时模式’为基础吧,这种老技术不知道在一堆数据里都有什么,这么一来我们这些工程师也没啥头绪了。”
9、数据工程师与数据科学家的技能差异是怎样的
这个数据集体现了数据工程师与数据科学家之间的明显的技能差异,由此可以将数据工程师与数据科学家的技能构成看作一个频谱的两个对立面。
以下这张图表显示了一张数据技能频谱图,频谱图顶端的技能在数据工程师的简历中更为常见,而频谱底端的技能更常出现在数据科学家的简历中。
【图表:数据工程师与数据科学家的区别】
▲从图表的技能构成可以看出,数据工程师更倾向于掌握 “战术层面” 的具体数据技能,专注于使数据可用并能够在生产环境中对数据进行处理,如具体的编程语言、操作系统与数据库等;而数据科学家更倾向于“战略层面”的数据技能,如数据分析、数据挖掘、统计分析、机器学习等。
10、数据工程师与软件工程师的技能差异是怎样的
数据工程师与数据科学家之间的差异是十分明显的,那么数据工程师与软件工程师之间的技能差异又是怎样的呢?毕竟,正如我们之前所展示的那样,大部分的数据工程师都具有软件工程师的背景。
【图表:数据工程师与软件工程师之间的区别】
▲以数据工程师为中心的最多人选择的技能是 Hadoop,数据仓库和 BI——正如你所期望的那样。与之相反,在软件工程师端列出的所有技能几乎都与 web 前端开发相关。最大的两个例外是 C 语言和 C++ 语言,这是在现代大数据技术栈开发中不常用到的编程语言。
虽然许多数据工程师具有软件工程师背景,但他们并不是简单的为了博取加薪而转换一个新的工作头衔;他们不得不通过学习新的技能来适应新的角色。
专家洞见
Ryan Orban,Galvanize CTO:“在数据工程师和数据科学家之间建立更好的关系”
“想一想设计师和前端开发工程师之间的关系,” Ryan Orban 说,“一个角色负责通过想法完成工作,而另一个角色负责将想法付诸实施,这之间可能会导致很多的紧张对立情绪。” Ryan 认为,数据工程师和数据科学家之间的关系与之类似,因此缓解两者之间的紧张情绪的方法也是相似的。“正如设计师经常被告知需要学习编写一些代码,而前端开发工程师也经常被告知要制作一些原型,我鼓励数据科学家和数据工程师相互学习一些对方所需要掌握的数据技能。”