内部先见

一个非代码的旅程变得一种数据工程师

学习使用大数据集就像成长:开始使用电子表格,具有脆弱的函数,即在任何更改数据上打破数据。然后你开始抓取,也许学习Vlookups加入数据。您的数据可能是电子表格中的一百行,工作正常。您的电子表格可能会扩展到几千行,但它有点慢。

进入更大的数据,你有数百万行,它只是不起作用。你可能会找到一些黑客,但你想更快地去。你经过爬行舞台和走路,但你看到人们跑步。

跑步者是程序员。它们可以更快地移动,缩放,并在擅长Excel时推动限制。您可以进入两次的地方,三倍的速度,但这意味着您需要更加协调和敏捷。这是很多工作,但你的灵感了!

你决定跳上几门编程课程,说实话,这些课程很无聊。这就像在看跑步的教学视频。是啊,有点概念上的理解,但不是你怎么学跑的。你只需要去做。

你的膝盖摔了几次,肯定有一些瘀伤,但你已经执行了你的第一个脚本,它他妈的有效!去他的那几十万排,给我几百万!您开始学习SQL,现在数亿行已触手可及。你刚学会冲刺。你只是打开了一个新的体验,地方和惊人的冒险的世界。很难想象你连走路都走不动。

我刚开始的时候,它是在Excel中,有几行数据。现在,我正在用Dataflow数据管道运行Apache Beam,从云存储中拉出JSON API输出文件,让数十台机器与工人一起将这些JSON文件整合在一起,并将它们存储在bigquery中——所有这些都在App Engine的Cron作业中运行。

不知道那是什么意思?六个月前问我这个我会像看三个头一样看你。我没有从卡耐基梅隆大学获得计算机科学学位,也没有高级学位、导师或正式的编程教育,我的专业是新闻!

我不会涂上糖衣。旅程很难,令人沮丧,并且有很多次我想扔毛巾的地方。我仍然挑战,不想觉得我要猜测是什么?我和我会。

最近,我的老板问我,在我刚开始工作的时候,我希望知道什么,我一直在想这个问题。主题是这次旅行。很多人都有充满行动的编码会议图像...矩阵式3D模型在10个显示器上流动。是的...更多就像在看起来像一个30岁的DOS端子那样出错StackOverflow -一个程序员的问答网站。在答案中复制代码,查看它是否有效...冲洗并重复。

下面我在编程中列出了我希望我希望在我第一次开始数据的冒险时,我希望我能拥有。有很多失败,吨位顽固,但最终,我学会了。

2005-07:这个称为Excel的细胞矩阵是什么?

我的女朋友在大学告诉我关于Excel。她有一个简单的预算我复制并学习了如何使用SUM函数并引用其他单元格。我以为这很酷,但有点不感兴趣,因为我不是那么预算。这就是我认为Excel的所有人是:会计师。足以说,我没有进入它。

我涉足少数东西的电子表格,比如做快速计算,但没有比预算更复杂。在某些时候,我了解了Google文档,它具有相同的功能。很酷,我可以在线保存我的数据。下一个。

2008-09:哦,所以Excel可以用于超过预算

我毕业后的第一份工作是在一家咨询公司找到的。我们有一个程序员帮助建立PHP网站,但我主要是写博客和做营销活动。作为一份兼职,我被要求建立一个金融模型。为什么?我不知道为什么有人会认为一个几乎没有Excel技能或商业背景的新闻专业学生应该建立一个金融模型。

我从OL'Excel上拂去,然后去了城镇。我建立了它,但我不相信他们收到资金。希望它不是因为投资者看到了我的模特。

2010-11:回到Excel中的预算,但现在我们要处理的是真正的钱

在咨询演出之后做了门到门销售后,我降落了搜索引擎优化(SEO)的工作。咨询初创公司的一个美女是我有机会从社会媒体管理中完成所有人,以支付广告和SEO。

我被聘为作为教育的SEO领导创站点.当唯一的PPC人员离开公司时,我还被选为运营10万美元的PPC支出。就像财务建模一样,我可能也不适合做这个,因为我除了在创业时接受过一点培训外,没有接受过任何培训。但是,我还是做了,而且非常喜欢!这就是我的Excel技能在长时间的中断后恢复的地方。

谷歌和Bing的批量广告上传工具需要Excel,客户需要枢轴图进行报告。我学会了不堆叠表格以及如何清理数据。

在这一点上,我认为编程是计算机科学家的工作,而不是可以帮助我操纵数据的东西。

2011- 2013:让我们来面对Excel,等等,这很难

我曾努力的公司说过,他们为SEO系有一份工作(当时有3个团队成员),我们不得不为这份工作而战。我感到非常善于留下来,因为我是唯一知道PPC账户的人,而且再次,我不想为那些就业争夺竞争的人工作。我搬上了并申请了Seer的PPC位置。我非常困惑为什么他们在面试期间询问SEO,但意识到他们希望我成为SEO而不是PPC。有趣的采访......但他们仍然带来了我。

在我任职的六个月左右,我开始用Excel做更多的事情。我学习了宏,这让我大吃一惊。自动化!但我意识到它是脆弱的,如果程序不处于与宏被记录时完全相同的状态,它就会崩溃。

无论如何,我会学习Visual Basic(VB),编程语言电源Excel。就像我总是被告知,报名参加课程并制作它。是的,学习如何创建一个弹出窗口没有帮助我。我看不出它如何连接到我想要操纵的数据,所以我放弃了。

2013-2014:第一次尝试编程失败

我想要的SEO数据被锁定在我必须通过应用程序编程接口(API)访问的服务器上。所以我在PHP上采取了一个编纂的课程。我在个人网站上用PHP搞砸了,但第二个我崩溃了在代码中改变一行的网站,我说了它。再也不。但在这里我正试图学习它。

我用PHP创建了一些很酷的可视化效果(从SEO api中拉出),但我想进入web抓取,它似乎不是PHP的解决方案。当时,Seer雇佣了一名数据科学家,为我们的分析团队提取报告。他喜欢R,但反对它。他把我推向了Python,因为它有很多应用——从编程灯到创建网站,再到做机器学习。当我问他是否应该用PHP来抓取网站时,他笑了,然后说学习Python。

就像使用PHP一样,我注册了Codecademy,但并不关心模拟购物车来理解类的实用程序。再一次,我无法看到我所做的事情的直接应用。滚开。我发誓不再编程。太难了,对我的日常生活没有直接的帮助。

2015:笔记本电脑上数百万行

我做了我无法编程的一切,就像使用查询功能在Google文档中(巧合地使用类似SQL的语法,这将在以后帮助我),importData.importhtml.智胜很长一段时间都是我的首选,因为它是指向和点击。涉及任何编程。我很喜欢。然后我想抓取一个URL,获取那个数据,然后再抓取更多数据,以此类推。Outwit没有足够的文档和例子,所以我被困住了。一次。

我知道我必须这么做。我需要学习Python,但传统教育对我不起作用。我不关心Suzie有多少个橘子或John的家族树(通常在类继承编程示例中使用)。

在这段时间里,我是单身,读到这个人有线休息时间脱掉博士论文来刮掉Okcupid寻找日期。我读了他的书,猜猜是什么?他在Python中完成了这一切。我做出了决定,那么它,我也会变得那个奇怪的老兄。当我诚实回答时,我与任何人都没有匹配,所以要么我是一个独特的花朵,要么他们的算法并不是匹配我相处的人。我打赌它是后者。附上我情绪化的东西(向伴侣寻找合作伙伴),这是超级干燥(编程)是唯一的方法。

2016-17:数百万行,在线!

我没有导师,没有去上课,也没有做任何你通常会做的事情来学习一些非常复杂的东西。我真的在谷歌上搜索了所有的东西。在您的编程生涯中,大约2-3年的时间里,您可能不会遇到数百人都遇到过的问题。

在我的电脑上运行Python就需要6-9个小时!我完全迷路了,觉得自己像个白痴。我最初在Stack Overflow上提出的问题得到了尖刻、吓人的评论。我不愿意把我的问题发布出来,因为我不想让别人对我说话,这样我就会觉得自己更蠢。我依赖别人的“愚蠢问题”。

一旦我有Python工作,我需要连接到互联网来刮掉网页。这请求库相对来说没有痛苦。一旦我从OkCupid网页上获得了数据,我就需要提取数据。我需要一些东西来解析网页,这样我就可以很容易地提取用户信息。我学到了BeautifulSoup,它可以很容易地解析网页。尤里卡!我可以下载数据并保存到csv上。

现在,我需要登录OKCupid应用程序。我了解到你可以在加载页面上检查页面,看看是否进行了什么,并知道我可以在请求会话中存储cookie-i.e。当您登录到站点时,Cookie将附加到您的浏览器中,我可以使用请求库进行模拟。

这很好,但是我想从成千上万的个人资料中获取数据而不被屏蔽,所以我需要慢慢来。我不想让OkCupid的服务器请求过载。这意味着我需要把代码放到服务器上,因为在我的电脑上运行时间太长了。我会让我的电脑整夜开着,工作还没完成,我就不得不断开网络连接去工作。该死的!

输入:服务器。FML,我记得我在拥有我的PHP网站时崩溃的Web服务器,并且害怕再次触摸它。谢天谢地,数字海洋有一些伟大的教程。我旋转了一个web服务器,并在尝试处理数据时耗尽内存。因为我很便宜,不想花更多的钱在我的爱好上,我学习了SQL可能会更好地处理数据。

最初,我从SQLite开始,这是一个简单的文件,允许我进行SQL查询。我不需要启动SQL服务器,我只是像使用CSV一样使用它,该死的它很快,我可以做很棒的查询。还记得我在谷歌文档中提到的Query函数吗?是的,这对学习SQL确实有帮助,所以不会觉得又要翻山越岭了。

SQL服务器是存储配置文件数据的好地方。唯一的问题是让脚本每天晚上运行。我所要做的就是每天早上在服务器上执行脚本,它就会在我工作时运行。但是,是的,一位伟大的程序员曾经告诉我,最好的开发人员是最懒的。那么我如何让这个脚本每天早上运行呢?输入Cron作业。Cron将在给定的时间间隔内执行服务器命令。现在,我甚至不需要去那里。这是一个游戏规则的改变者。

在我睡觉的时候,我的书呆子觉得它很棒,而且在睡觉时也有点令人思怪,关于使用约会网站。但我专注于如何学习Python,Server命令行,刮擦,网站登录的工作原理,Cron和SQL。哦,通过我的努力,我有一个女朋友!任务完成。

(是的,我告诉她,我和其他人在一起。令人惊讶的是,他们没有为山丘跑。)

如果我可以刮掉网页,与API通信并存储大型数据集,我可以为工作中的团队构建可扩展的工具。我可以开始为团队自动化流程。我的上帝,这可能是巨大的!

我们的关键字研究过程是非常手工和成熟的自动化。我遇到了以前从未遇到过的事情:速率限制。如果你想在Yelp上查找10,000个地点,你不需要同时发送10,000个请求。这个和a很像DDOS攻击对于较小的API,它会淹没他们的服务器,API会失败。大多数(如果不是全部的话)api都有每秒、每分钟、每小时、每天或每月可以ping通的次数。

如何告诉程序减速?嗯,那就是添加睡眠功能的地方。在每个请求后,该程序将暂停一秒钟,以确保它没有被阻止。如果我同时有多个工具用户怎么办?速率限制会破裂。该死。

经过大量谷歌,我发现我需要学习芹菜芹菜是一个任务队列系统,它创建工人来提取和执行任务。

通过芹菜,我能够与数千个用户排队,每个请求后工人都会暂停。太棒了!但我被吸了,它一遍又一遍地打破了。我的编程职业的故事。

虽然这是发生的,但我意识到我需要一个用户界面,所以其他团队成员可以使用它。需要在Python中建立的Web框架。我试过烧瓶(sentex.是一个不可思议的资源)但我听说django.更健壮,可以扩展,并具有强大的安全特性。

现在我在Django学习,太棒了。FML,什么是面向对象的映射(ORM)数据库!?我不知道一个物体是什么,现在我正在看一个面向对象的数据库。是的,只是推过去,继续前进。

我使用了一些HTML和CSS技巧,这些技巧是我在2005年创建MySpace个人资料时学到的,我创建了一个用户界面(UI)。这很棒,因为推特上的人创造了一个叫做引导所有的CSS都关心,所以我的UI看起来并不像一个高中的MySpace页面。

我必须了解身份验证,将数据添加到ORM数据库中,启动Celery Workers,Cron作业等。现在一切都融合在一起。维护艰难,所以可以让我雇用来自乌克兰的自由工人,乌克兰勉强讲英语(沟通很难),并观看了我所做的相同YouTube视频。没有关于我的代码的反馈,因为它与他所做的类似。我现在回头恐怖。

2017-18:让我们通过机器学习变得更聪明

当这一切发生的时候,我是一个团队领导,是时候把我的编程和自动化技能投入到工作中去了,全职。我的角色变成了创新主管,这是一个相当模糊的头衔,意味着我可以致力于研究,并为Seer找到新的收入机会。我是通过自动关键字研究做到这一点的,这为我带来了大量的收入,所以如果我只做这些副业项目,我能做些什么呢?

大约在这个时候,我读了一篇文章waidbutwhy.这改变了我的职业轨迹。我知道人类最后的一些工作可能是机器学习工程师,所以我报名了Udacity的机器学习纳米学位(machine learning Nanodegree)。它很棒,因为所有的东西都是用Python写的。有几门课的数学内容非常重,作为一名新闻专业的学生,我对数学的热情在五年级时达到了顶峰,我确实很纠结。很多。但是有论坛和1:1的指导让一切变得不同。

再次,我不是正规教育中的一个大信徒 - 特别是在编程时 - 但纳迪格勒计划作为机器学习的概述有用。然后,我将这些学习应用于找到低质量网站我们的PPC团队向我们的SEO团队绘制和映射关键字映射到URL。

2018年至今:给我你的terabytes!

机器学习算法对一些客户非常有效。然后,Seer的首席执行官威尔问我们是否可以把我们所有的客户都加进去。我们还聘请了一个外部开发工作室,叫做kinertia..他们帮助我们将所有内容移动到谷歌云平台(GCP),并提供了疯狂的价值。

我开始思考的规模将成为一个问题。我不再可以在数字海洋上抛出我的代码,因为它会用完内存。这发生过很多当我自动关键词研究SEO团队时。我每月才会增加它,并克服了很大的票据。

分析团队使用BigQuery作为他们的数据仓库。他们还与第三方合作,将谷歌Analytics数据传输到BigQuery。因为我们的数据是定制的,我们(开发人员,创始人会和我)决定独自去它。这意味着我们需要学习如何将数据处理扩展到千兆字节和兆兆字节。

我很奇怪。我甚至怎么回事?将我连接到他的一些联系人,该联系人与真正的数据类似的实时查询鼠标的宠物数据。他们向我介绍了提取物的概念,转换,负载(ETL)。基本上,这就像试图弄清楚你应该接受哪辆车。可能不想要Smartmcar,因为你无法存储所有的用品,悍马可能太贵了。一个可靠的普锐斯或另一辆经济车是一个不错的选择。Etl也是如此。你可以在Excel中做ETL。大多数情况下,如果不是全部,人们会在PPC中这样做。 They download the data from AdWords (extract), edit the data to create or modify campaigns (transform) and then push it back to AdWords (load).

为大数据做这一点很棘手,因为您可以轻松花费数百万美元,与SAP等企业数据库,但我们正在预算中。SAP就像把火箭筒带到拳击比赛一样。因为我们已经在分析方面与BigQuery一起工作,所以我决定采取一个谷歌云平台的Coursera专业化得到一个土地。它没有帮助实施尽管是理解哪些工具杠杆和叫做什么数据管道

例如,如果我正在进行类似于将所有任务的事务存档到API,因此如果请求成功完成,我不会再调用它 - 我会使用数据存储,因为它是快速燃烧的。但如果我想存储大规模的数据集并不关心快速响应,我会使用bigquery。我也学习ML引擎可能是一个很好的工具,用于将关键字映射到最佳页面和分类低质量站点。任务队列对于API速率限制很大,因为您可以轻松更改执行任务的速率。App引擎非常适合运行Cron作业并在API中执行功能。

我们现在正在使用Apache Beam来做ETL来从Google云存储中提取原始文件,将该数据加入更大的聚合表中。我们正在使用Google的DataFlow执行云中的那些波束数据管道 - 这是惊人的!光束的文档非常稀疏,我主要依赖于几个Github发布者来了解高级功能。

我希望在我开始的时候,我希望我觉得我会有的话:

它很艰难,它糟透了,这是不可否的,但它是值得的:

能够代码感觉就像超级力量。使用Google Cloud平台,我们正在旋转30台机器,在昂贵的服务器上有1美元的价格将我们的数据转换为1美元。对我(一个大书呆子),这真的很酷。但是,我知道它是复制和粘贴的样子,并手动做到这一点,所以我可以比你的普通人更欣赏它。

你不可能在一夜之间学会如何做到这一点,如果你告诉我,我必须忍受过去几年的艰苦战斗,我会说hell no。不是这样做。一步一步来,不要野心太大,因为你会吓到自己。每个程序员都以“hello world”开头。只需谷歌“hello world”就可以开始了。在你知道基础知识之前,不要想用Swift编程你的第一个苹果应用程序会有多难。

从一个充满激情的项目开始,而不是一门课程:

令人毛骨悚然或书呆子听起来有人通过使用Python来刮掉代码来刮掉Okcupid ......猜猜是什么?我正在运行机器学习模型,建立应用程序和在睡眠中处理公制狗屎的数据!激情项目可能是任何东西,但在我正在寻找女朋友并且它被淘汰出局。我始于Susie有多少橘子,无论是什么原因,都无法进入它。

没有人会为你学习:

我们的生活大大是关于购买成功。你知道有多少人参加了一种语言课程,变得流利的对阵。通过沉浸在语言是本土的国家的人们所学到的人数?沉浸在浸没时变利更容易。

我有团队成员告诉我教他们编码和机器学习技巧。当我要求看到他们的代码时,他们就像我有三个头一样。“你的意思是?你要教我。“滚开。努力,努力。我无法学习或强迫你学习它。这就像我是个孩子的时候。我父母给我买了五年的钢琴课。我可能已经练习了十几次,最终我的钢琴老师告诉我她正在提高她的房价,推荐我不继续追求钢琴。 I was overjoyed! My parents brought me to the water but I wasn’t thirsty.

另一方面,我将把日程表上的大部分内容都移去检查别人的代码。没有什么比和别人一起检查代码更让我喜欢的了。我真希望我能在一开始就找到那个人。聚会是一个很好的方式,尤其是因为很多参加聚会的人只是刚刚开始。我建议你找一个比你稍早一点会说你的语言的人合作。专家可能不记得不知道是什么感觉。我经常遇到这种情况。他们非常聪明,有CompSci的背景,但有时就像向一只狗解释月亮是什么。有些东西我就放在桌子上,因为我还没到那一步。

知道什么时候寻求帮助:

为了非常确定,键入一个人,很容易扔一个问题。在让我意识到有时它越来越聪明,它比更好的结果更加聪明,这是一体的。我希望我曾问过帮助。编码器是惊人的,因为您可以聘请专家15分钟。我在几天工作了。天!当我雇用导师时,他们在五分钟内击倒了它。现在,我可以为团队成员做到这一点,这是令人难以置信的奖励。

现在该做什么?

两件事:

  1. 学习不应该停止
  2. 知道何时爬行,走路和跑步

1)虽然我现在知道如何做一些非常酷的大数据工程工作,但我从业内人士那里了解到,有几家公司在为AdWords API做同样的工作,我花了几十个小时进行培训。如果你的血、汗、泪都流进了这个系统,你很容易就会感到不安。

推出新产品并不总是目标。这可能听起来很老套,但旅程就是目标。我们正在考虑的一些解决方案没有我们需要的api连接器,所以猜猜会怎样?我们仍然需要数据工程。这并不是毫无意义的。

2)当我学习Pandas(一个Python库,可以帮助你像使用Excel一样可视化数据)时,我用它做了一切!但是花了更长的时间。如果我只是想替换URL中的“https://”与什么都没有,它将在谷歌表中花费两秒钟vs熊猫几分钟。

这是我看到的一个很好的视觉效果,很好地说明了这一点:

对于真正的小任务,Excel是有道理的。通过它尝试一亿行......它会在一秒钟内打破。

整个旅程的重点是,你在途中学习技能,所以你不知道如何,而是知道何时爬、走或跑。