Algolia 的 Sarah Dayan 谈什么让高级工程师与众不同

已发表: 2022-08-19

虽然良好的编码技能总是受到赞赏,但作为一名员工和工程师,需要的不仅仅是你的技术实力。 实现目标需要什么,更重要的是,您可以在哪里对您的组织产生最大的影响?

当您在工程轨道上达到高级水平时,您的硬技能应该是最佳的。 你是自主的,你的代码是完美的,你对构建和交付软件有深刻的理解。 但是进入员工和角色完全是另一回事。 有项目管理、指导和教学、决策制定、建立关系,你为公司带来的价值不再以代码行的质量来衡量,而是通过推动工程组织向前发展。

今天的客人就是这样经历的。 Sarah Dayan 是 Algolia 的一名高级工程师,这是一个“搜索即服务”平台,可帮助开发人员通过 API 在他们自己的平台中构建索引和搜索功能,并主持两个技术播客:Developer Experience 和 Entre Devs。 她创建了前端库,鉴于她对用户体验、设计和构建事物的终生热情,这个角色非常适合她。 事实上,自从她的父母在她的地下室安装了宽带互联网后,莎拉就一直痴迷于创建网站。 这是第一次点击的爱。 她在 15 岁建立了她的第一个 phpBB 论坛,此后不久就编写了她的第一个 HTML 页面,并且从那时起就没有停止过构建东西。

尽管没有接受过正规的工程教育,Sarah 还是在法国顾问 Grand Manitou 找到了一份开发人员的工作。 然后,四年前,也就是 2018 年,她在 Algolia 找到了一份软件工程师的工作。 她努力晋升,最终成长为一名参谋工程师的个人贡献者角色。 突然之间,她过去几年所关心的一切——成为一名更好的工程师,编写更好的代码——都为新的挑战让路了。 她将如何为公司提供正确的技术方向? 畅通瓶颈? 像其他人为她所做的那样指导和帮助其他工程师?

在这一集中,我们与莎拉坐下来讨论了员工和工程师角色的许多细微差别、熟练程度和期望。

以下是我们最喜欢的谈话内容:

  • 如果你不想落后,那就继续学习。 讨论想法并从具有不同观点和背景的其他工程师那里获得反馈。
  • 作为一名参谋工程师,您的很多精力都用于跨团队协作以实现愿景和战略。 五年后公司将走向何方? 你怎么去那里?
  • 让员工工程师担任导师可以让更多初级人员清楚地了解要采取哪些步骤来担任这些角色,并且您可以快速跟踪创建工程领导者的过程。
  • 与普遍的看法相反,工程师并不是解决结构问题的快速解决方案。 在接受一份新工作之前,问问你对你的期望是什么,以避免误解。
  • 员工工程师必须了解公司的需求,才能帮助公司实现目标。 入职时,阅读尽可能多的文档并与尽可能多的人交谈。

如果您喜欢我们的讨论,请查看我们播客的更多剧集。 您可以关注 iTunes、Spotify、YouTube 或在您选择的播放器中获取 RSS 提要。 以下是该剧集的轻微编辑记录。


从未停止学习

布赖恩斯坎兰:非常感谢莎拉今天加入我们的节目。 我很高兴有机会与您交谈。 在我们谈论你在 Algolia 的角色和工作之前,我很想听听你到目前为止的旅程。 你今天的旅程是如何开始的?

莎拉·达扬:嗯,你好,谢谢你邀请我。 嗯,这实际上是一个有趣的故事。 我现在 32 岁,15 岁的时候家里就有宽带和无限上网。我一直热衷于构建东西,当我第一次看到网站时,我就想,“我必须知道怎么做。” 一件事导致另一件事,我用 phpBB 建立了我的第一个论坛。 PHP 非常非常大,而且仍然很大,但它确实是当时的 Web 语言。

“我决定这不是我的事,也许我应该做我喜欢做的事。 所以,我回到了我喜欢做的事情——建立网站”

那时,从事技术工作,尤其是作为软件工程师,并不像今天那样酷热。 我的父母认为我应该考虑成为一名记者,因为我在学校擅长语言和文学。 这是我做的第一件事。 我做了第一年的新闻工作,但我完全失败了,然后我决定这不是我的事,也许我应该做我喜欢做的事。 所以,我回到了我喜欢做的事情——建立网站。 我在一家机构找到了第一份工作,并在那里呆了六年。 它教会了我很多关于工作、与客户合作、与知道自己想要什么的人以及不知道自己想要什么的人一起工作的知识。 然后,我搬到了创业世界。 我从事编码工作超过 15 年,但在专业方面,我已经做了 12 年。这就是我在 Algolia 担任当前职位的原因。 我已经在那里四年了,而且还在继续。

布赖恩:超级。 你有什么有趣的教训,你早期学到的并一直困扰着你吗?

莎拉:我没有通向技术的经典路径。 我没有上过工程学校,如果你不这样做,就有可能在科技领域拥有出色的职业生涯。 你绝对可以自学成才,你可以向其他人学习,而且你不必拥有学位。 但没有学位并不是不学习的借口。 Google 的工程经理 Sarah Drasner 在 CSS-Tricks 上发表了一篇很棒的博客文章。 即使您可以在没有学位的情况下从事技术工作,但这并不能免除您学习和寻求知识的责任。

“我没有得到反馈,我没有与其他人交谈:与其他工程师、其他观点、其他背景。 所以我落后了”

你在学校真正学到的一件事就是学会学习,这是一项非常重要的技能。 在我职业生涯的早期,在我告诉过你的那家机构,很长一段时间我都是唯一的员工。 我一个人。 我有我的老板,他也在编码,但有点远离我正在做的事情。 尽管它可以让一个人工作更自由——你有很多信任,很多自由——你学得没有那么快,因为除了你自己之外没有任何反馈或其他观点。 如果你甚至不做任何主动学习,你就会落后。

这是发生在我身上的一件事。 我没有得到反馈,我没有与其他人交谈:与其他工程师、其他观点、其他背景。 所以我落后了。 我依赖于我所拥有的知识,我没有理由做不同的事情,因为它有效。 这将是我在职业生涯早期获得的最大教训之一。 尤其是如果您没有经历过经典的科技之旅,那么与其他为您提供反馈和他们观点的人在一起是非常宝贵的,这将促进您的职业生涯。

布赖恩:我认为这对任何专业角色的人来说都是很好的建议,但听起来它真的对你有用。 您是否怀念这些天不使用 PHP 的任何事情?

莎拉:我认为 PHP 是一门很棒的语言。 你可以从现代 JavaScript 中的 PHP 中找到很多灵感。 我不再使用它,因为 JavaScript 已经发展到可以在任何你想使用 PHP 的地方使用它的地步。 尤其是作为前端工程师,在前端和后端使用相同的语言有很多好处,比如共享。 但我认为 PHP 是一门很棒的语言。 它有很多不好的笑话,“哦,PHP 已经死了”,但是当你看到 Laravel 之类的成功时,我觉得 PHP 还远没有死。

当我进入 PHP 时,认真的人使用的框架被称为 Zen 框架。 实际上,我相信 Zen 是 PHP 背后的公司,或者至少它收回了它。 没有人再使用 Zen 框架了,至少没有用于任何新项目,但是很高兴看到 PHP 现在在哪里。 它仍在蓬勃发展,人们喜欢用 PHP 编码,我认为这很棒。 它不适合每个人,但你做你。 每个人都可以用他们喜欢的语言坐在桌子旁。

攀登工程阶梯

Brian:你现在是 Algolia 的一名工程师。 告诉我一些关于这个角色和你的工作的信息,我们将继续讨论什么是参谋工程师。

莎拉:当然。 我是一名工程师,我在前端工作。 我在一个名为前端体验(简称 FX)的团队中,我们为 Algolia 开发前端库。 Algolia 是一个搜索引擎,所以它是端到端的。 您有多种语言的引擎和一些 API 客户端来将数据发送到搜索,但您也有前端库,因为谁有时间构建可访问的工作搜索框、命中列表、细化列表或分层菜单?

所有这些事情都很难正确实施。 所以我们为客户这样做,这就是我正在工作的团队。 我是个人贡献者 (IC),我不在任何领导轨道上。 但问题是,当你成长为 IC 的更高职位时,你的现实与你的领导角色有点融合。 我没有任何报告,也没有管理任何人,​​但我花了很多时间与我的经理讨论更多关于事物愿景方面的主题。 但我仍然每天都在编写代码,并且像其他人一样,我会给出评论并获得评论。 所以它仍然是一个 IC 角色。 在 Algolia,您可以成长到相当高级的水平,并且仍然是每天都可以编写代码的个人贡献者。

“任何高于高层的东西,你都会开始在战略中投入大量精力——愿景是什么,五年后产品会在哪里,我们如何在这些事情上取得成功?”

布赖恩:你认为与其他工作相比,你花费了多少时间? 分享背景,制定战略,诸如此类。

莎拉:这很难衡量。 我会说50/50。 有时候我会写很多代码,我会在编码中加入评论,因为它与你使用的能量相同。 但也有很多时间制定战略,很多会议,很多愿景文件,很多思考,很多对话来收集反馈,比如与产品经理、研究人员、设计师合作……所有这些都是工作的一部分. 在 Algolia,您拥有高级职员、校长等。 任何高于高级的东西,你都会开始在战略上投入大量精力——愿景是什么,五年后产品会在哪里,我们如何在这些事情上取得成功? 如果我们不成功,我们如何确保我们有一个备用计划? 当你是一名高级工程师时,你能想到的任何东西都可以应用到项目中,比如编码,你可以将它应用到产品的策略中。 你在产品上做了很多工作,这是我最喜欢在科技初创公司工作的事情之一。

当我在一个机构时,你没有做任何策略,你没有说出你的想法,你也不一定会给出建议。 你做了你被告知的事情。 但是,当您是初创公司的工程师时,尤其是在那些级别上,您的声音和愿景就很重要。 我们正在为工程师打造产品。 即使我们必须非常小心,不要为自己构建东西——我们有知识的诅咒,我们知道产品,我们知道如何使用它,我们知道所有的警告——我们仍然对工程师关心的东西很敏感关于,他们想要什么,以及什么会让他们的生活变得轻松或艰难。 因此,人们非常重视产品,将想法带到桌面上,提出具有挑战性的想法,确保您打造出经久不衰的最佳产品。

“在花了数年时间思考如何成为一名更好的工程师之后,你需要转变思维方式来开始考虑其他事情。 我怎样才能帮助其他人? 我怎样才能解除封锁?”

Brian:您花多少时间与您的组织或团队之外的其他员工和首席工程师一起工作? 那是贵公司的一个活跃社区吗? 你会与它合作做很多工作吗? 你在你的团队中主要是独立工作吗? 或者是否有与您一起工作的其他高级工程师的子集?

莎拉:没有我想要的那么多。 在任何组织中,您的级别越高,您拥有的人员就越少。 所以它不像有大量的 IC 5、IC 6、员工和校长。 我们现在正在招聘很多资深人士,所以六个月后我的回答可能会有所不同。 我花了很多时间与其他员工甚至首席工程师交谈,但并不是因为我们人数不多,就没有任何社区或任何官方的东西。 现在,我花了很多时间与年长及以上的人讨论,因为这是我职责的一部分。

我的部分职责是帮助高层人员成长并晋升为员工级别。 作为许多公司的高级工程师,尤其是像 Algolia 这样规模的公司,你知道你需要做什么才能到达那里。 它更像是一个清单。 在那之后,它变得更加复杂,因为有很多事情可以解释,根据你的个性,你可以做的事情与另一个人完全不同。 但我们的想法是,当您达到高级水平时,我们希望您在硬技能方面达到最佳状态。 我们知道你很优秀,你处于一定的技术水平,我们不希望你成长得比这更高,但你会被要求发展其他类型的技能。

“我们应该找到你擅长的,你喜欢做的,这将帮助你发光,并培养它。 涉及很多指导”

在花了数年时间思考如何成为一名更好的工程师、编写更好的代码、进行更好的评论或在获得评论时减少评论之后,你需要转变思维方式来开始考虑其他事情。 我怎样才能帮助其他人? 如何解除封锁情况? 如何创建自己的工作负载? 这些不一定是您在达到这些水平之前必须考虑的事情。 我帮助人们接近它,理解他们的意思,并理解他们将能够利用他们个性的哪一部分来达到目标​​。

例如,有些人喜欢上台演讲。 如果这是他们喜欢的东西,无论如何,我应该帮助他们更好地参与会议并撰写更好的论文征集。 但如果这不是你的事,我们就没有理由对此进行投资。 我们应该找到你擅长的,你喜欢做的,让你发光的,然后培养它。 有很多指导。 这是我在这个资历级别最喜欢的部分之一。

对于一家公司来说,拥有一名员工或一名高级工程师并不是很有趣——你希望拥有 3、5、8、16 名。你能够做到这一点的唯一方法就是拥有那些已经在那里帮助低一级的人。 你不能指望你的工程经理自己和整个团队一起做这一切。 当你让工程师帮助其他工程师完成他们在一两年前所做的工作时,你就会产生这种乘数效应。 我认为这对人们来说真的很激动,因为他们可以向他人学习,向在同一组织中实际经历过这一过程的人学习。 有信心,如果他们遵循这些步骤,如果他们倾听,它可能会奏效。 我想向能够帮助我了解实现目标需要做些什么的首席工程师学习。

这对教学的人来说特别有趣,因为他们可以剖析他们实际做了什么。 之后它变得模糊,你就像,“是的,我只是做了一点点这个,一点点那个。” 不,你做了什么? 您采取了哪些具体步骤? 你答应了哪些事情? 你说不的事情是什么? 我认为它可以帮助你澄清你的想法,澄清你的过程,它会让你在接下来的工作中更有效率。

入职员工和工程师

布赖恩:你提到让新员工和首席工程师加入一个组织,这可能非常棘手。 这是你有经验的吗?

莎拉:老实说,这不是我们经常做的事情。 我们有三四个首席工程师,他们都不在我的团队中。 我的经验主要是带高级工程师。 现在,有些事情对每个人来说都是共同的,然后有些事情对首席工程师来说可能很有趣,我仍然可以尝试尝试一下。

“一个非常非常资深的人可以帮助你做很多事情,但他们不会解决公司或团队的结构性问题”

清晰是极其重要的,当然,当您雇用员工或首席工程师时,您不会期望得到相同的帮助。 你希望他们成为自我启动者。 清晰不是要告诉您对您的期望,所有任务等等,而是要让您了解自己的使命。 你来这里的目的是什么? 你在这里做什么? 我想说这要从面试层面开始。 我对员工或首席工程师加入公司的建议是询问这个问题,因为有时人们会尝试聘请非常高级的职位来解决他们的问题。 他们就像,“哦,让我们雇佣一个非常非常资深的人,因为他们知道我们不知道的事情。” 这不是真的。 一个非常非常资深的人可以帮助你做很多事情,但他们不会解决公司或团队的结构性问题。

另一方面,工程经理应该想知道为什么他们认为他们需要那个人。 大多数情况下,你不会雇佣这个级别的人来编写代码。 如果您的团队中有一名高级工程师,那将是 Algolia 的 IC 4。 他们在编码方面已经完全有能力,或者至少他们应该是。 员工或首席工程师具有您想做的事情的经验,并且您可能需要他们,例如,当您知道您需要达到团队中没有人达到的规模时。 也许你可以弄清楚,但你想要一个加速器,这就是你团队中一位非常资深的人要做的事情。

事先提出这些问题是确保预期内容没有错位的好方法。 如果您非常资深,并且仅仅因为存在偏差而被要求进行编码或在高层工作,那么您会感到失望,并且很可能会离开。 你不想花很多时间雇佣这个级别的人只是为了让他们离开,因为这非常昂贵。

在那之后,我希望这个资历级别的人会大量阅读并进行大量对话。 当您是初级工程师时,这是您通常不会做的事情。 你来到你的组织,你得到了你的第一个任务,它就这样流动了——你开始工作,你开始编码,这就是你应该做的,因为这会让你进入下一步。

“你的职责是确保交付的产品适合并且能够扩展。 如果你不与公司的其他人讨论,你就无法做到这一点”

但是当你处于那些高级水平时,重要的是你要了解你在哪里,正在发生什么,谁在做什么。 您不仅需要与其他工程师和高级人员建立关系,还需要与更多初级人员、产品经理、设计师和研究人员建立关系。 您需要了解公司的运作方式以及您如何适应这种方式,以及您可以帮助改进什么。 如果有任何书面的内部文档,请阅读它,完成后再次阅读。

然后,问问你的工程经理你应该会见哪些人。 每次与新人交谈时,请询问他们认为与谁交谈会很有趣。 这会给你翅膀,因为你会建立关系并了解正在发生的事情。 产品有哪些? 目前的斗争是什么? 你可以在哪里提供帮助? 您的团队和您正在构建的产品如何适应该计划? 因为在这些级别上,随着对产品的关注,它不再只是代码的质量。 团队中的前辈已经在处理这个问题,而且他们做得非常好。 您的角色是确保交付的产品适合并且可以扩展。 如果您不与公司中的其他人讨论,您将无法做到这一点。

新的挑战

Brian:对于不了解的听众,Algolia 是一个强大的托管搜索 API。 从外面看,它看起来是一家相当成功的公司,但我敢肯定,你的脑海里有很多挑战和事情。 您能否告诉我们您正在考虑或正在解决的一些重大问题?

“我们的想法是,无论您采用何种路径来搜索该数据、获取数据并登陆页面,您都会获得正确的数据”

莎拉:正如你所说,Algolia 是一个托管搜索 API。 这是我们拥有的最大的 API,也是目前最成功的 API,但我们也进行了一些扩展。 目前,有一个名为 Algolia Recommend 的产品,它使用您用于搜索的相同数据集,但基于给定的产品,它会为您提供建议。

Algolia 的重点不仅在于搜索,还在于展示内容。 您有很多内容,但并非所有内容都同时与同一个人相关。 这个想法是,无论您采用何种路径来搜索该数据、获取数据并登陆页面,您都会获得正确的数据。 这是阿尔戈利亚的重点。 这方面存在挑战。 我们是搜索专家,但推荐和机器学习方面是一项更新的技术,所以我们正在学习最新的东西。 与搜索相比,我们要学习的东西很多。 这不是最大的挑战,但要确保我们能够重申我们在搜索方面取得的同样成功,这仍然是一个挑战。

现在,有些事情是阿尔戈利亚不擅长的。 它是一个搜索引擎,而不是一个数据库。 它会很快,最终会保持一致,但你不能保证你会拥有所有的数据,你的数据总是一致的,或者你的所有数据都会在那里。 这是围绕搜索引擎的设计选择,这使得它与数据库非常不同。 话虽如此,很多人喜欢将 Algolia 用作数据库,因为将数据发送到 Algolia 非常容易,而且它就在那里,而且速度很快。 也许有一些东西需要学习。 也许它也可以是一个数据库,我并不是说它会是,但也许它可以。 也许还有其他东西需要我们去理解和研究。

有许多 Algolia 无法使用的用例。 其中之一是预订用例。 如果您想预订 Airbnb,当您搜索它时,它会出现在您的结果中,这意味着它是可用的。 但是一旦您到达该页面,它就不再可用,因为您将数据从数据库复制到 Algolia。 当您在数据库中保存某些内容时,您将以稍微不同的格式将该更改发送到 Algolia。 而且由于存在延迟——这不是实时的——像预订用例这样的东西无法工作。 当您与 Airbnb 打交道时,现在可用的东西可能在 30 秒内不可用,但它仍然可能会出现在您的搜索引擎中,因为当您保存时,您可能需要 10 秒或类似的时间才能将其传播到Algolia,也许它失败了,你需要再做一次。 这些是我们正在考虑的搜索引擎级别的事情。 这是我们可以支持的东西吗? 是不在话下吗? 这背后的商业案例是什么? 因为它驱动了很多东西。

“它应该是看不见的; 它应该是无缝的。 这些是单独的 API 的事实不是您的问题。 这是我们要解决的问题”

现在,关于前端团队,我提到了 Algolia Recommend。 当您是客户时,您并不真正关心有不同的产品。 您不在乎是否拥有具有这些功能的 Algolia Search 和具有这些子功能的 Algolia Recommend。 您订阅 Algolia 并为一组您被告知可以很好地协同工作的功能支付月费或年费。 您不想也不需要了解我们在此 API 和数据 API 之间在内部创建的人为边界。

有这样一句话,“不要发布你的组织结构图”,我认为这是我们下一个重要主题之一。 我们如何确保在前端,当您使用 Algolia 前端库时,您不必怀疑是否需要这个或那个? 那你感觉不到那些界限吗? 它应该是不可见的; 它应该是无缝的。 这些是单独的 API 的事实不是您的问题。 这就是我们要解决的问题。

我们创建了与搜索 API 紧密耦合的库,现在我们必须扩展到可以协同工作的新 API,有时您需要调用其中一个,然后调用另一个以获得最终响应。 现在所有这些事情都不像我们希望的那样无缝。 当您想将这些 API 连接在一起时,边缘仍然有点粗糙。 这是可能的,但是你必须阅读教程,坚持到底,在这里和那里做一些小改动,并编写一些样板代码。 这不愉快,不好玩,而且工作量太大。 如果我们要告诉你,“使用那个库”,它需要做你不想做的工作。 如果较低级别的原语同样易于使用,则没有理由使用该库,对吧?

目前,最大的挑战之一是确保我们提高图书馆的价值。 他们已经做了很多大多数人不想做的事情,但在某些时候,对于某些客户来说,它不像以前只有搜索时那样无缝和令人愉快。 这就是我们所追求的感觉。 那种感觉,“哇,这比我想象的要简单得多。”

布赖恩:最后,我们的听众可以去哪里跟上你的步伐?

莎拉:所以你可以在 Twitter 上找到我,我是 frontstuff_io。 我痛苦地意识到这是 Twitter 上最糟糕的处理方式。 你也可以在 sarahdayan.com 上找到我,如果你愿意,可以在 GitHub 上关注我; 我有时会做一些事情。 但是,是的,如果你想聊天,我相信我的 DM 是开放的,所以给我发任何东西。

布赖恩:超级。 莎拉,非常感谢你今天加入我。

莎拉:谢谢你邀请我。 那很有趣。

职业 CTA - 工程(水平)