成为开发倡导者的精妙艺术 | 什么是开发倡导者?
开发倡导者是热爱公开学习的工程师。
几年前,我写了一篇题为《开发者倡导者到底是什么?》的文章,试图帮助科技行业的人们理解这个角色的含义。然而,我仍然在推特上收到大量关于这个角色的问题。
本文还提供其他语言版本
- 🇯🇵日语
在这篇文章中,我将尝试通过提供我在日常工作中作为微软高级开发倡导者以及自 2015 年以来一直从事开发倡导工作的任务和活动的具体例子来揭开开发倡导者角色的神秘面纱。
免责声明:
本帖中表达的观点仅代表我个人,不代表我的雇主或同事的观点。
首先让我们来阐明一下开发倡导者和技术传播者之间的区别。
开发倡导者和技术传播者
开发者倡导和技术布道之间经常存在混淆。让我们来看一下这两个术语的定义。
根据维基百科,“技术布道者”一词由苹果公司发明,旨在说服开发者为 Macintosh 开发应用程序。动词“说服”非常重要,因为它暗示布道者会试图说服开发者采用某项技术,但并不一定倾听或关心他们的需求或意见。
这与倡导的宗旨完全相反!
“辩护”是一个古老的概念,源自中世纪拉丁语“advocare”,意为“发表意见”。“辩护人”一词源自古法语“avocat”,意为“律师”。因此,辩护人(Advocate)的字面意思是“为案件或原因辩护”的人,“认为某事需要改变或改进”。
在科技行业中,这两个术语看似非常相似,但微妙的区别在于:技术布道师的角色是单向的(对外推广),而开发者倡导者的角色则是双向的(对外推广和内向推广)。换句话说,技术布道师通常致力于说服开发者某种技术正是他们所需要的。开发者倡导者通常致力于倾听开发者的需求,并为他们提供最合适的帮助。开发者倡导者还会收集开发者的反馈,并在内部为他们进行推广。
这就是为什么应该明智地使用这两个标题。
然而,我想退一步强调一下,除了理论定义之外,实践中职位名称所包含的内容总会有一些例外。我认识一些朋友,他们的职位名称是技术布道师,但他们所做的工作更像是开发倡导者(反之亦然)。真正重要的不是职位名称,而是你如何帮助开发者取得成功。
开发倡导者和营销人员
每当你要求开发推广员定义他们的角色时,他们每个人都会给出不同的答案,这很容易让人困惑。这很常见。但是,你有没有想过为什么?主要原因是许多公司倾向于聘请开发推广员来处理不同类型的任务,从销售到沟通,以及最常见的市场营销。为什么是市场营销?因为公司通常将 5% 到 12% 的收入用于市场营销,而当他们需要接触更多开发者时,他们通常会聘请一位“开发推广员”(或该头衔的其他变体),向市场营销(或业务部门)汇报,并由市场营销和销售 KPI(关键绩效指标)驱动。最重要的是,在这种情况下,这个角色通常由产品工程团队之外的人领导,这可能会带来一些问题(下文将详细介绍)。
别误会,公司利用市场营销和销售来联系开发者本身并没有错,但打着开发者宣传的旗号这样做对任何人都没有好处。无论如何,这通常都是一个糟糕的举动,因为并非所有开发者都擅长市场营销(或销售),最终导致业绩不佳。开发者拥有卓越的创造力和创造力,但我们中的一些人可能缺乏基本的商业营销技能。你认为为什么大多数成功的初创公司至少由两个人创立?如果我擅长市场营销或销售,我就能更好地推广我自己的开源项目,但你从未听说过xlayers.dev。你听说过吗?
在与开发者沟通时,市场营销团队应该与开发推广员合作,帮助他们定制适合开发者的信息。为什么?因为开发推广员首先是开发者,他们与其他开发者使用相同的语言。
在很多情况下,公司只是忽略了“倡导”的真正含义,最终根据自身业务需求自行定义。正因如此,几乎没有开发倡导者真正理解自己的角色是什么,或者应该扮演什么样的角色。希望本文能对您有所帮助!
开发者倡导者和开发者关系
简而言之,开发者关系是一个涵盖所有团队的统称,包括开发者推广员、社区经理以及任何负责创建和培育开发者社区的团队。一些大型公司,例如微软,还设有负责文档、活动和社交媒体的团队。
因此,开发者宣传团队是开发者关系的一个小子集。
我在微软的职责是什么?
作为开发倡导者,我们可能对于我们做什么或应该做什么意见不一,但我们都同意一个共同的定义:
“我们的职责是充当内部工程团队和开发者社区之间的桥梁。我们也在内部为开发者提供支持。”
在介绍我在微软的工作之前,我先介绍一下背景:我之所以被聘用,是因为我的 JavaScript 技能以及与 JavaScript 开发者社区的密切关系。我目前是 JavaScript 宣传团队的一员。我们的团队隶属于开发者关系部门,该部门隶属于微软 Azure 工程部门。
我的日常工作是在微软内部倡导 JavaScript 开发者,在产品团队会议或内部研究中代表他们发声。在外部,我支持并收集 JavaScript 开发者的反馈,以便我们改进产品和服务。我的主要职责是帮助 JavaScript 开发者成功使用微软云、服务和开源开发者工具。
您可能已经注意到,微软正在提升其产品的标准,为了实现这一目标,公司正在大力投资开发者和开源项目。正因如此,我们的开发者关系团队的使命就是赋能开发者,让他们取得更大的成就。我们规模更大的开发者宣传团队(或称云开发者宣传团队,因为我们也为 DevOps 团队提供帮助,所以我们内部称之为云开发者宣传团队)由多个子团队组成,分别关注不同的开发者社区,例如 Rust、Java、Python 等,同时也关注学生、学术界和初创企业等受众。
云开发者宣传团队的使命是通过真实性、社区和技术参与赢得开发者的心。
作为开发倡导者,我的一天通常是怎样的?
下面我要披露的任务是“我”经常做的工作。我的团队成员可能也可能不会做“完全”相同的工作。
创建内容
我参与编写全球工程师使用的不同格式的技术文档和内容。工作内容可以很简单,例如更新现有文档,也可以像我和我的团队与 Microsoft 文档团队合作编写的Azure 静态 Web 应用文档一样,创建完整的文档。
其他内容还包括为开发人员创建和举办研讨会、编码挑战以及我在 Twitter 上定期发布的快餐内容。
以下是最近发生的几个例子:
还有这个:
公开演讲
大多数开发倡导者最引人瞩目的活动之一或许就是公开活动。这也是我的工作内容之一,在国际会议和活动中发表技术讲座和主题演讲。基本上就是去开发者聚集的地方。这还包括直播、播客以及类似的媒体形式。
开放构建工具
除了公司工作之外,我也是开源社区的活跃成员,我为公司所做的大部分工作也都是在开源社区中完成的。这意味着我的工作还包括帮助开发人员成功使用各种工具,帮助他们使用 Azure 并将其与其产品和应用程序集成。我最近开发的工具包括https://www.hexa.run、适用于 Azure CosmosDB和Azure 存储的Nest.JS 库。您可以在wassim.dev查看我的其他开源作品。
产品反馈
持续改进开发者使用的产品和服务是我们团队的核心使命之一。我的大部分时间都花在通过社交媒体、线上或线下活动与开发者和工程师互动上。我收到大量来自开发者的请求,他们提出问题、报告问题或提出功能请求。如果我熟悉产品,我总是会尽力优先帮助他们。对于重大问题或热门功能请求,我会在内部仪表板上创建一个工作项,并与产品团队紧密合作,根据从社区收集到的反馈来改进体验。
作为一名开发倡导者,我能够真正地为 JavaScript 开发者发声,并在内部为他们发声。最近的一个例子是 Azure Static Web Apps 产品,在过去的一年半里,我为该产品做出了贡献,帮助工程团队设计了部分服务,提供了关键反馈,试用了早期功能,并实现了 CLI 开发者工具。
运送产品
作为一名开发倡导者,许多人可能忽略了另一个方面:作为开发倡导者,我们中的一些人也参与了产品的创建和发布,这些产品要么供内部使用,要么供外部使用,或者两者兼而有之。在过去的六个月里,我有幸创建、领导并发布了官方的 Azure 静态 Web 应用 CLI,以便开发人员在本地运行和调试他们的应用程序。
我认为这是每个开发推广员都应该做的事情,因为了解产品或服务的设计、实现方式,以及其优缺点至关重要。如果我们想要更好地帮助开发者,这些知识是必不可少的。
成为零客户
我投入了大量时间改进 Azure 产品和服务,并与公司各处的 Azure 工程团队合作,试用新功能,并根据 JavaScript 开发者的期望提供反馈。过去两年,我参与开发的产品包括:Azure Functions、Azure 存储、Azure Cosmos DB、Azure IoT、Azure 静态 Web 应用、GitHub Codespaces 和 npm。在产品发布之前,充当“零号客户”是产生巨大影响的绝佳方式。Azure 静态 Web 应用就是一个例子:我和我的团队正在与工程团队紧密合作,致力于为即将使用此服务的 Web 开发者社区提供最佳的开发者体验。
不断学习
由于 JavaScript 广泛应用于各个领域,我通常关注的技术栈包括 Node.js、TypeScript、无服务器、物联网架构、数据库和托管。另外,说实话,我也对 Rust 编程语言非常着迷,并计划在不久的将来开始学习它!幸运的是,Rust 开发者倡导团队的同事们为 Rust 初学者制作了这份 5 小时免费指南。这对我来说是个不错的开始!
创建和改进官方文档
作为一名开发倡导者,我还投入了大量时间为众多 Microsoft Clouds 服务创建全面的技术指南。我和我的团队花了四个月时间共同编写的最新指南之一是Node.js 学习路径。我们官方文档的优点在于它是开放的,任何人都可以帮助改进它。我们也定期参与其中,并在http://docs.microsoft.com上发送 Pull 请求来改进和更新文档。
帮助他人成长
我工作的另一个方面——嗯,这本身并不属于我的职责范围——但对我来说非常重要:那就是帮助我周围的人成长并取得成功。作为一名来自少数族裔并在科技行业取得成功的人,我真心关心多元化和包容性。因此,帮助他人在职业和个人方面成长是我的一部分。
我通过微软的官方导师计划进行内部指导。在外部,我指导社区中那些刚接触编程并想转行的人,以及那些想开始为开源做出贡献的人。当然,我不能透露所有细节,但我主要为我的学员提供有关编程、技术和职业发展方面的帮助和建议。
商业和 OKR
让我明确一点,每家公司的目标都是做生意。你的公司不仅仅是付钱让你参与开源项目或参加各种活动。它是在你身上投资,并期望获得投资回报率 (ROI)。但我们都知道,社区和关系建设的投资回报率 (ROI) 并非那么容易衡量或量化。
我们不断审查和更新我们团队的 OKR(目标和关键结果)、战略和计划,以与公司的更广泛战略保持一致,同时让团队中的每个人都能自由地以真实的方式与开发人员联系,进行有意义的对话,帮助他们解决问题,并成为他们的倡导者。
最后的想法
工程师的主要职责是拥有、设计、实现和交付产品,并且对于那些希望与开发者社区分享经验的人来说,他们可以做到这一点。开发推广员与工程师并无不同,只是他们的职责不是全职开发产品,而是帮助工程团队联系并倾听开发者的需求,从而为每个人创造最佳体验。
开发倡导者是热爱公开学习的工程师。
这就是我的故事。如果您喜欢或认同我刚刚读到的内容,我们的团队正在招聘。请访问我们的页面https://aka.ms/awesomejobs ❤️
奖励:开发者倡导者冰山
如果您对开发者倡导仍感兴趣,欢迎通过 Twitter 账号@manekinekko与我联系。您也可以在wassim.dev上关注我的工作。
本博客中使用的资产均根据 Adobe 标准许可证获得许可。
文章来源:https://dev.to/wassimchegham/the-subtle-art-of-being-a-developer-advocate-gdg