哈伯,你好! 有趣的是,有多少程序员和开发人员发现了数据科学或数据工程,并在大数据领域建立了成功的职业生涯。
Directual的软件工程师Ilya Markin只是改用数据工程的开发人员之一。 我们谈论了团队领导角色的经验,数据工程中最喜欢的工具,Ilya谈论了会议和有趣的专业人士渠道,用户方面的Directual和技术,计算机游戏等。
-伊利亚,谢谢您抽出宝贵的时间见面。 我祝贺您最近才刚过渡到一家新公司,并祝贺女儿的出生,您有很多后顾之忧。 紧接着,第一个问题是:有什么有趣的事情让您被邀请从事Directual工作,而您离开了DCA?-大概,首先我需要告诉你我在DCA所做的事情。 完成
大数据专家计划后,我进入了DCA(以数据为中心的联盟)。 那时,我对大数据这个主题很感兴趣,并意识到这正是我要发展的领域。 毕竟,在有大量数据的地方,有很多有趣的工程问题需要解决。 该程序帮助我快速进入了大日期世界的生态系统,在那里我获得了有关Hadoop,YARN,Map-Reduce范式,HBase,Spark,Flink等以及在高负载下如何工作的必要的初步知识。
DCA的家伙邀请我来接受采访。 DCA是实时出价市场的主要参与者(
实时出价是一种广告技术,可让您在实时广告的买卖双方之间组织一次拍卖。在线拍卖的竞标对象是向特定用户展示广告的权利。实时出价基于选择目标访问者的最大准确性-约。 )。 DCA拥有大量的Runet用户:大约6亿个cookie,一个cookie不等于该用户-一个用户可以拥有多个cookie:不同的浏览器,不同的设备。 每天访问互联网页面时,我们收到数十TB的数据。 所有这些都已处理,并且cookie被标记在一组特定的细分中。 因此,例如,我们可以找出居住在莫斯科的20至25岁猫的恋人,以便进一步邀请他们为房子附近的爱猫购买食物。 这样的例子很多,有非常简单的例子,有复杂的例子。 引擎盖下有很多Java,scala和C ++。 我以开发人员的身份来到公司,六个月后,我成为团队负责人。
我在春季末离开了DCA,那时我已经厌倦了管理工作,开始研究技术职位。 原来,我一周都不能写代码。 我们与团队聚会,讨论了有趣的解决方案,思考了架构,绘制了任务。 当我从清单中拿走自己的东西时,有时我没有时间完成任务,因为团队领导案例很多。 也许问题出在我身上,我无法正确分配时间。
但是,我已经获得了有益的经验。 首先,与团队和业务部门合作:在开发和业务部门的交界处很有趣,当您收到实现某种功能的请求时,您会考虑评估可能性。 通常,您必须做出一个在这种特定情况下将更有用的决定:快速“屈膝”写一些东西,或者花费2周甚至更长的时间,但给出一个稳定,正常的解决方案。
-哪些决定最常被选择-在膝盖上还是在两周内?-内心的开发人员永远是完美主义者,他可以无休止地从事一些有趣的任务,对其进行重新制作,对其进行优化。 当然,您需要知道何时停止。 选择的决策介于两者之间。
其次,最后,我处于可以参与决策的位置,请注意公司中正在发生的事情。 我不只是坐在箱子里编码,我想知道产品的状态,产品的外观,用户的反应。
第三,可以这么说,我开始进行采访,访问了“路障的另一边”。 第一次面试非常令人兴奋,我读了简历,心想:“该死,现在这颗星星就要来了,我什至不知道他写的书的一半。 我要和他谈什么。” 在交流的过程中,您会变得清醒,并理解为什么IT人员市场的需求超过供应。 很难找到一个好的专家,大多数时候他都坐在他对一切都满意的地方。 现成的专家可以针对您的特定任务和技术进行培训,无需再培训/重新培训,不切实际的查找,而只需连接联系,询问朋友,熟人或同事。 网络在这里非常重要。 因此,例如,我将我的朋友带到了公司,我确定在那家公司和我之前曾与之一起工作过。 他们还聘用了一位刚毕业的大学毕业生,对我们的堆栈工作经验很少,但是在采访中我意识到他是一个很有前途的人。
人们通常使用框架,而不使用特定工具,我认为这是一个问题。 应聘者有两年作为Hadoop-大数据开发人员的经验,您会开始问Hadoop是如何工作的,它由哪些部分组成,一个人不知道。 由于Hadoop提供了某些接口来简化其使用,因此对于一定范围的任务就足够了。 通常,一个人甚至都不会超出这些接口的范围,也就是说,他仍然从这些接口获取代码。 打包后的代码发送到系统后会发生什么,此人不再在乎。 对于许多人来说,这就足够了,他们不想更深入地了解。 进行面试不仅是在招聘方面的绝佳经历,而且还使您对自己作为专家的信心充满信心,这非常有用。
为什么是直接的。 当我担任
数据工程师计划的协调员时,Directual的Artyom Marinov和Vasya Safronov与我们交谈。 顺便说一句,Artyom曾经在DCA采访过我(再次谈到了网络的好处),现在邀请我讲话。 他们需要一个摇滚乐手,但他们准备考虑了解jvm如何在幕后工作的javista。 所以我到了这里。
-有什么有趣的事让您可以使用Directual进行? 是什么吸引了您?-Directual是一个雄心勃勃的初创企业,可以实施所有已宣布的项目,即
按其承诺进行。 我很高兴成为该团队的一员并积极参与所有实施。 对我来说,重要的是公司要通过与客户合作来回报自己,而不要依靠投资者的钱来生活。
我将从用户端和背面讨论该项目。
Directual的口号是“让人们创造!”。 这正是主要思想-使没有编写代码知识和经验的任何人都可以在我们的可视化编辑器中进行编程。
工作原理:用户可以通过我们平台上的浏览器“滚动多维数据集”(读取-流程的功能节点)-也就是说,收集将处理传入数据的脚本。 数据可以是绝对任意的。 处理后的输出数据可能有不同的想法-从PDF报表到向多个管理员发送通知。 简而言之,任何业务流程都可以在数分钟内完成编程,而无需编写代码。 该公司在两个方向上工作-为企业客户提供盒装解决方案,以及为广泛的用户提供云选项。
为了更清楚地说明其工作原理,我将举几个例子。
在任何在线商店中,都有许多功能阶段(在我们的案例中为“立方体”)-从向客户展示产品到将产品添加到购物篮再到最终消费者安排交货。 使用该平台,我们可以收集和分析数据:购买的频率,购买的时间,用户的路线等,这将使我们能够与客户进行更紧密的互动(例如,开发季节性优惠,个人折扣)。 但是,这绝不意味着我们的平台是创建在线商店的设计师!
Directary可以很好地应对物流流程的自动化和大公司的人力资源工作,并可以创建任何其他技术解决方案-从温室农场到智能家居。 例如,在平台上,您只需单击几下即可创建一个电报机器人-几乎每个编写系统核心的员工都有自己的机器人。 有人做了一个助理图书馆员,有人是一个帮助学习英语单词的机器人。
我们部分地“剥夺”了一些程序员的工作,因为现在无需向他们寻求帮助,准备技术规格或检查工作的执行情况。 现在就足够了解您的业务运作方式,您需要了解流程本身,然后我们做剩下的事情。
-听着,但是有一个用于绿化农场的软件,例如,很长一段时间。 你有什么不同?-是的,是的,确实存在针对绿化农场的特定解决方案。 但是,您不是自己开发该软件,而是购买了现成的解决方案。 使用我们的平台,您可以为自己,业务和任务自定义软件,而无需雇用开发人员。
-你到底在做什么?-公司分为两个部分:系统核心和项目办公室的开发,实际上,这是我们的零客户。 我正在开发系统核心。
就像我说的,我们希望给任何人机会在我们的平台上工作。 为此,我们正在云上工作。 而且有很多问题。 困难是什么:例如,有1万个用户,他们有几个数据流方案,每个流有10-20个分支多维数据集。 想象一下熨斗上的负载。 而且我们需要能够清楚地区分所有内容,以便一个客户的流程不会干扰另一个客户的流程,也不会减慢工作速度。 如果一个客户遇到需要解决的问题,那么我们就不应损害另一位客户的工作。
由于用户无需考虑引擎盖下的所有功能,因此他无需选择存储。 我们支持不同的数据库-它既可以是关系数据库,也可以是NoSql。 通常,系统对它们的行为相同。 但是客户无需考虑-在创建帐户时,根据任务,系统将帮助做出最佳的存储选择。
我们的平台是高负载分布式系统的一个很好的例子,我的任务是编写良好的代码,以使它们都能正常工作。 结果,在这里我得到了想要的东西:我使用那些我感兴趣的工具。
-您是如何进入数据处理领域的?-在我的第一个工作地点,我主要在相当狭窄的部分中处理相同类型的任务(请阅读-parsil xml :)),这很快让我感到无聊。 我开始听播客,我意识到周围的世界有这么大,周围的每个人都在谈论很多技术-Hadoop,大数据,Kafka。 然后我意识到我必须学习,并且“
大数据专家 ”程序出现了。 事实证明,我并没有失败:第一个模块(处理和分析Web日志:MapReduce,Hadoop,机器学习,DMP系统-作者的注释)对我来说非常有用,我只是想学习这一点,但是第二个模块是关于推荐系统的我只是不知道在哪里申请,我从未碰过。 然后我去了DCA,与我已经感兴趣的东西一起工作。 在那里,一位同事告诉我,除了数据科学家之外,这方面还有一位数据工程师,他告诉他自己是谁以及公司将如何发挥作用。
之后,您刚刚宣布了
Data Engineer计划的试点启动,当然,我决定离开。 我已经知道程序中的某些产品,但是对我来说,这是对工具的一个很好的概览,脑海里浮现了一切,我终于明白了数据工程师应该使用什么工具。
-但是,大多数公司不会同时担任这两个职位,一个人的两个专业档案,他们试图寻找可以收集数据并准备数据的通用专家,他们将创建模型并将其用于高端生产。 您怎么看,这与什么有关系,它的正确性如何?-我真的很喜欢Pavel Klemenkov在大数据专家计划中的表现(当时他曾在Rambler&Co工作),他谈到了ML-Pipeline并提到了数学程序员。 他谈到的是这样的通用专家,他们很少,而且非常昂贵。 因此,Rambler&Co正在尝试在家中开发它们,以寻找有实力的人。 很难找到这样的专家。
我认为,如果您确实有大量数据,并且需要与它们进行彻底的合作(例如,不仅要预测一个人的性别和年龄或增加点击的可能性),那么这些人应该是两个不同的人。 此处适用20/80规则:数据科学家是80%的数据科学,20%的他-可以写一些东西并将其放入产品中,而数据工程师-80%的软件工程师和20%的他知道什么是模型,他们如何工作应用程序以及如何计数,而无需学习数学。
-告诉我们有关您在数据科学\数据工程中最重要的发现吗? 也许使用某些工具/算法会彻底改变您解决问题的方法?-可能的事实是,有了足够的数据,您可以提取很多有用的信息以备将来之用。 即使有时您不知道这些原始匿名数据是什么,您仍然可以根据它们做一些事情:分成组,找到一些特征,简单地使用数字上的数学方法得出一些规律。 没错,分析师以前也可以这样做,但是现在变得更容易使用的事实增加了铁的力量-很酷! 现在,进入数据科学的门槛已经降低;您无需了解太多,就可以尝试使用某些工具做某事。
-最大的工作档案是什么? 您从中学到了什么?-可能我会不高兴的,我以前从未有过,也许在我之前。 回想起来,我老实说,但是没有那样的东西,很无聊。 就像管理员一样:如果您没有“丢下饭菜”,没有“擦拭基地”,那么您不是真正的管理员。 好吧,我可能不是真正的开发人员。
-您最常使用哪些数据工程工具,为什么? 您最喜欢的工具是什么?-我非常喜欢Apache Kafka。 就其提供的功能以及工程设计而言,这是一个很酷的工具。 Kafka的工作细节在于程序代码与它所运行的操作系统-Linux之间的紧密联系(请阅读-“它运行迅速且性能良好”)。 也就是说,在那里使用了各种本机linux-a函数,即使在较弱的硬件上也可以使您获得出色的性能。 我认为在我们领域应该是这样-仅了解编程语言和几个框架是不够的。 如果您想创建一个非常酷的东西,不仅对您自己而且对其他人来说都是令人愉快的,那么您需要更深入地研究并知道您的代码在硬件上如何在系统中工作。
-您参加什么会议? 您会阅读哪些资料专栏\博客\ tg频道?-正如我所说,这一切都是从播客开始的,即从
Debriefing开始 -来自Java世界的家伙。
还有一个
https ://radio-t.com-关于高科技主题的很酷的俄语播客,这是我们语言中最受欢迎的(如果我没记错的话)。
我
听着JUG.ru的消息,伙计们召开了很酷的硬核会议,安排了会议。 我也尝试去圣彼得堡的莫斯科。 顶级的Java会议是莫斯科的Jpoint(圣彼得堡的Joker),我总是去Jpoint或在线观看。
我看看
Confluent在做什么-那些获得kafka公司支持并且是其主要贡献者的人。 他们还围绕Apache Kafka在开源中开发了方便的工具。 我尝试使用它们的版本。
媒体上的
Netflix技术博客是有关向用户交付视频内容的最大平台之一解决方案的不错资源。 最“我不想要”的高负载和分布式系统)
电报频道:
https :
//t.me/hadoopusers-您可以在这里以我们的语言就数据工程主题进行交流;
https://t.me/jvmchat-Java世界的人们,讨论它的问题,他们的问题等等。
“也许灵魂还有别的东西?”-我从小在电脑游戏上长大,过去玩起来很活跃,现在我没有太多时间了。 在某个时候,我想:“由于我无法玩游戏,是什么让我无法学习这一领域?” 而且,如果您突然有空闲时间,我会使用Java,C#或C ++中的某种框架,该框架可以编写游戏并执行某些操作。 所有这些很少达到最终产品,但我感到很高兴。 因此,在我的播客列表中,还有一个谈论如何创建游戏-“
如何制作游戏 ”-一个好的专业播客不是关于如何“编码您的超级大型游戏”,即关于游戏的制作过程:如何声音工程师的工作,游戏设计师的工作,2D / 3D艺术家的工作特征,他们的流程,工具,如何开发游戏,如何推广游戏。 , : , , , . , . .
-:
— Java Python?— Java, .
— Data Science Data Engineering?— Data Engineering
— ?— It depends, , , .
— ?— - , .
— ?— . , , . , , .