写点什么

作为初创公司的第一位数据工程师,我从中学到了什么

  • 2019-09-14
  • 本文字数:3354 字

    阅读完需:约 11 分钟

作为初创公司的第一位数据工程师,我从中学到了什么

一个没有数据工程经验的人成了一家初创公司的第一位数据工程师,这是一项艰巨的挑战,但回报也是很可观的。


公司在招人的时候不仅要找到合适的人,还要让他们相信加入公司是正确的选择。


当我收到 EmCasa 公司的面试邀约的时候,我是另外一家公司的数据科学家。他们想找一位可以帮助他们组织数据的人。我问他们现在已经有哪些数据了,他们真诚地回答我:“我们只有 PostgreSQL 数据库里的几张表,还尝试使用了一些 BI 工具,仅此而已”。听了他们的话,我也很诚实地告诉他们:我没有亮眼的学位,之前也没做过数据工程师,不懂 Spark,不会 Airflow,不是 ETL 方面的专家,也不懂测试和 Git 之类的东西,我也不是一名开发人员。但我见过很多东西,有一些很好,有一些还不错但仍有提升的空间,还有一些完全不行。我的想法是要尽量避免去尝试已知不可行的东西。


我不知道他们是怎么想的,总之最后我成了他们公司的第一位数据工程师。


在加入这家公司后,一切都像他们之前所说的那样。我有足够的施展空间,可以按照我认为的最好的方式去做每一件事情。第一周,我们就制定了一些季度 OKR:


  • 从 Facebook Ad、Google Ad、SalesForce 和其他第三方服务获取数据;

  • 实现一个 BI 平台;

  • 将物业估价算法准确度提高 20%;

  • 将评估模型设计成独立的 API;

  • 更新和改进 Web 爬虫。


为了从第三方服务提取数据,我们开始调研 ETL 解决方案,比如 StitchData、Fivetran、Segment、Alooma、Rivery,等等。要为每个第三方服务 API 构建自定义集成方案需要花费很多时间,但我们速度要快,而使用 ETL 服务解决方案可以为我们节省几个月的开发和维护时间。我们决定使用 Rivery,并在两周内搭建了一个 Redshift 集群,用来每天更新来自第三方服务的数据。这个时候,Luca 加入了我们,成了我们的 BI 分析师。他现在有很多数据可以玩了。我们还使用 Metabase 作为仪表盘。到目前为止,一切都很顺利。我们终于有了真正的数据,而不只是 PostgreSQL 里的几个表了!


下一步是改进物业估价模型,并将其作为一个独立的 API(之前的模型是与后端绑定在一起的)。但我们没有足够的数据来创建新模型(虽然确实有了一些数据,但还不够)。于是,我把目光投向了我们的 Web 爬虫工具。它是用 Elixir(我们的后端就是用 Elixir 开发的)开发的,但我不懂 Elixir,于是我决定用 Python 从头开始开发另一个爬虫。我创建了一个叫作 Spatula 的 Python 包,它可以从其他网站爬取数据清单,并将它们保存到 S3。这个时候,我们的数据科学家 Priscila 也加入进来,她负责处理旧数据。我在本地运行 Spatula,她就可以使用 Athena 查询数据,然后开始建模。


接下来,我开始研究 Airflow,不过我遇到了一些麻烦。一个是学习如何编写 DAG,一个是学习如何将 Airflow 可靠地部署到 AWS 上。我花了很多时间学习 Airflow、Terraform、Docker 和 AWS ECS,才顺利地在 AWS 上进行了第一次部署(https://github.com/nicor88/aws-ecs-airflow),然后又花了更多的时间按照我们的需求进行了定制。我担心这项任务会占用太多时间,所以我问经理是否可以把时间往后推一点,并换一种方式来安排任务(我知道这种方式从长远来看是行不通的)。经理的回答是:“我们在面试你的时候就知道你的情况,有些东西你也不懂,但你可以花时间去学,找到正确的方式来完成这些任务”。这种管理姿态和”做正确的事情“的承诺是我在其他公司从未见过的。随后,我们花了更多的力气部署好了 Airflow,让 Spatula 爬虫每周爬取一次数据。



收集用户信息,用来预测房产销售价格。我们会询问物业的详细信息,如有多少个房间、套房、浴室和车库。


这个时候,Priscila 的新估值模型也准备就绪,但还没有准备好用于生产环境。我开始和她结对编程,并告诉她我修改了哪些东西,以及为什么和怎么改的。然后我们一起部署了 Priceteller,这是我们的第一个机器学习模型。它是运行在 AWS Lambda 上的 Flask API 和 API 网关。在部署之前,我们还与开发团队讨论了很多与代码质量、测试和文档相关的问题。他们不想在生产环境中向不可靠的 API 发送请求——他们提出这样的高标准绝对是有道理的。当我们达到他们的标准,我们的第一个机器学习模型就可以上线了。最近,我们还部署了第二个实时模型 Selekta,它可以根据用户的偏好来推荐清单。


我们的第一个机器学习模型,从数据抓取到部署


我们的第一个机器学习模型,从数据抓取到部署


Priscila 告诉我她以前的公司是如何使用 Airflow 的。因为我之前都没有用过 Airflow,所以试着通过反复试错来学习。她提出了一个改进清单,我全盘接受了。从那时起,我们开始在 AWS Glue 上运行 Spark 作业,并用一个 Airflow 任务来触发和监控它们。我们的作业每隔一个小时从后端获取数据。我们还有其他一些负责保存用户日志事件的任务。我们还创建了一个推荐模型,每天以批次的方式运行。不知不觉地,我们现在在 S3 上有了一个数据量超过 2TB 的数据湖。


我们目前的数据基础设施


我们目前的数据基础设施


这些事情就发生在六个月内,我们用健壮的工具和技术为公司打好了数据基础。

那么,我们从中学到了什么?

如果目标明确,学习就不是个问题

对于有数据科学背景的人来说,数据工程并不复杂。作为数据科学家,我们感觉到没有可用的数据或工具来完成这项工作是多么的痛苦。但我们可以学习,Airflow、AWS、Spark、Git、Python,凡是你能想到的东西。只要你知道目标是什么,就能在短时间内学会它们。漫无目的的学习很难有成效。

了解公司

知道要做什么和动手去做是两码事。这与公司的文化有关。在面试的时候我就知道,我加入了一个可以让我拥有自主权的公司,可以用我认为正确的方式去解决问题。你可以在面试中问他们数据对公司来说有多重要。只是用于提供支持吗?还是公司发展战略的一部分?他们对你是真诚的吗?如果数据并不是公司发展战略的一部分,那么你很可能没办法花很多时间去计划和做正确的事情。

数据就是产品

将 API、模型和仪表盘作为独立的产品,这为数据团队提供了极大的灵活性。但它们必须符合某些标准,这样才能将它们打通。将数据作为一种产品,并形成文化,保护团队免受日常业务问题的困扰——可以让分析师们去回答这些问题。我们的经理可以让我们免受外界的干扰,让我们能够集中精力学习,把事情做好。

寻求帮助

有时候你需要独自完成一些工作,但有时候向那些有经验的人寻求帮助会为你节省很多时间。如果团队里有经验丰富的人,可以问问他们之前在其他公司是怎么做的。即使他们不知道该怎么做,至少也会知道什么行得通,什么行不通。寻求帮助肯定会把你引向正确的方向。

把时间花在刀刃上

有些事情可以通过第三方工具轻松搞定,比如我在本文开头所说的 ETL 解决方案。如果你的数据仓库中没有来自 Facebook 的数据,那就没有必要浪费时间学习如何连接 Facebook Insights API;如果没有运行在 EMR 上的作业,就不需要学习如何在 EC2 上搭建 Spark 集群;如果没有 Glue Job,就不需要使用 EMR;如果没有 Athena 查询,就不需要 Glue Job。


先从尝试使用最简单的解决方案(不需要花很多时间维护的解决方案)开始。当简单的解决方案不能满足需求时,再开始学习其他工具。如果从一开始就使用复杂的解决方案可能会浪费你的时间。要专注于用最简单的解决方案尽可能快地提供业务价值。

构建不需要花太多时间维护的东西

花大半天时间去修复一个有问题的东西,这是最糟糕不过的事情了。如果经常出问题,那么要么是你做事的方式错了,要么没有用对工具,或者两者兼而有之。从一开始就做对事情可能会花掉你更多的时间,但在未来会为你节省时间。

诚实

如果有什么东西是你不懂的,请说出来,但也要证明你可以以及愿意去学。这样你就可以用工作时间学习新东西。

分享你的知识

向其他团队成员分享他们不知道的东西。这样有助于你专注学习,也有助于减少不同工种之前的工作摩擦。如果数据工程师、数据科学家和机器学习工程师之间有了默契,工作就会变得更加顺畅。结对编程是一个很好的实践,可以借机分享你的知识,并获得实时反馈。花点时间分享你的知识,看看你能为别人提供些什么。

花点时间小憩

在完成一个大项目后,比如部署了一个新的 ETL 管道,就可以花点时间做一些次要的任务,比如写文档或修复遗留 bug。欲速则不达,马不停蹄地开始另一项大项目可能会让你走得更慢。


原文链接:


https://towardsdatascience.com/what-i-learned-from-being-a-startups-first-data-engineer-f19cd71d3f31


2019-09-14 16:001696
用户头像

发布了 38 篇内容, 共 31.5 次阅读, 收获喜欢 208 次。

关注

评论

发布
暂无评论
发现更多内容

数字货币交易所开发与智能合约交易系统

区块链软件开发推广运营

交易所开发 链游开发 NFT开发 公链开发 代币开发

基于 LangChain 的自动化测试用例的生成与执行

测试人

软件测试

《阿凡达》导演卡梅隆加入 Stability AI 董事会;Molmo 横空出世,开源多模态模型王座易位丨 RTE 开发者日报

声网

对 LLM 工具使用进行统一

快乐非自愿限量之名

LLM

大模型还能产生幻觉?一文讲清楚原理和解决方法

敏捷开发

AI AIGC GPT LLM 大模型幻觉

快速实现AI搜索!Fivetran 支持 Milvus 作为数据迁移目标

Zilliz

Milvus Zilliz 向量数据库 rag AI搜索

如何让Android的前端页面像iOS一样“优雅”?

阿里技术

ios 前端 异形屏 前端适配

技术干货|热门仿真平台HyperMesh CFD功能详解:几何和网格(Part 1)

Altair RapidMiner

人工智能 智能制造 altair Hypermesh 仿真设计

ETLCloud携手ClickHouse:高效的数据查询效率

RestCloud

数据库 数据处理 ETL 数据集成 Click house

想要激活孩子潜在力量,家长必做的一件事

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

环保行业怎么定义?需要用到堡垒机吗?

行云管家

等保 堡垒机 环保

人人都能手写的chrome插件,帮我省了1000多块钱

京东科技开发者

百度ARM云全栈自研方案全新升级,普惠智算助力行业数智化转型

科技大数据

云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展

阿里云大数据AI技术

大数据 阿里云 Serverless 云栖大会 EMR

Linux服务器磁盘空间占用情况分析与清理指南

EquatorCoco

Linux 运维

通信系统仿真:飞行器集群协同控制纽带

DevOps和数字孪生

【YashanDB知识库】YashanDB-OCI-快速上手

YashanDB

yashandb 崖山数据库 yashandb知识库

给Java同仁单点的AI"开胃菜"--搭建一个自己的本地问答系统

京东科技开发者

百度输入法AI请求次数累计超4亿,「超会写」全新升级

Geek_2d6073

目前东莞等保测评机构有哪些?电话多少?

行云管家

等保测评 过等保 东莞

打造未来社交:区块链社交DAO的颠覆性开发之路

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 代币开发

Kubernetes存储新动力:CSD3000与Portworx的协同效应

ScaleFlux

Kubernetes Serverless 云原生容器 应用容器化

获取淘宝商品详情API返回值的技术实现方案

代码忍者

API 测试 pinduoduo API

Mac苹果电脑视频下载软件推荐:Downie 4 for Mac 激活版

你的猪会飞吗

Downie 4 下载 Downie 4 Mac版 Downie 4 for mac

AI与大数据的结合:如何从海量数据中提取价值

天津汇柏科技有限公司

大数据‘’ AI 人工智能

DDD建模 vs 传统开发

Bruce Talk

DDD 领域驱动设计DDD

Flink CDC:新一代实时数据集成框架

Apache Flink

大数据 flink 数据集成 Flink CDC 实时处理

防御性编程:让系统坚不可摧

京东科技开发者

Spark SQL分析层优化

数新网络官方账号

构建未来电商体验:深度解析京东商品详情API的核心价值与应用

代码忍者

API 测试 pinduoduo API

仅需6步,实现虚拟物体在现实世界的精准放置

不在线第一只蜗牛

人工智能 HarmonyOS

作为初创公司的第一位数据工程师,我从中学到了什么_文化 & 方法_André Sionek_InfoQ精选文章