图片由Marvin MeyerUnsplash

编写一个健壮的跨平台实现计划指南

在开始一个新项目时,您是否经历过程序员版本的光标在空白页上闪烁的焦虑?到目前为止,我在OkCupid上做的每一个功能——现在已经有十几个了!188bet金宝搏官网-已经顺利发布了,尽管有一些小的延迟和bug。尽管如此,开始每一个新项目都会让我脑海中产生一个小小的“冒名顶替者”的声音,“这会不会是我把事情搞砸或者不知道该怎么做的时候?”

幸运的是,OkCupid有一个叫做“技术设计”的流程,帮助工程师从一开始就消除188bet金宝搏官网他们的不确定性。我发现Tech Designs是一种非常有效的规划开发工作的策略,就我个人而言,它是一种识别和克服我自己对失败的恐惧的授权工具。

它是如何工作的

技术设计过程分为两部分首先有一个共享的技术设计,其中跨平台团队协作确定对API层的必要更改,业务逻辑应该位于客户端和服务器之间,并整合剩余的未决问题列表,将其带回给整个产品团队。然后,有客户端技术设计,每个平台工程师详细讨论如何在自己的领域内实现该功能。每个项目的输出都是代码评审的实现计划。让我们更深入地看看这两个部分。

共享的技术设计回答这个问题:“移动和网络客户端在哪里以及如何获得他们需要的信息来驱动这个功能?”我们决定哪些数据是必要的,它应该如何构造,以及从哪个后端服务获取数据。我们询问有关后端和客户端之间逻辑责任划分的问题。我们考虑的是性能和可伸缩性最好的解决方案。例如,在我最近的项目中,Shared Tech Design团队必须决定哪个后端服务应该从用户的个人资料中提供高亮的照片或问题,然后如何以及在哪里添加数据我们GraphQL模式供客户消费。这是我们的想法:

“共享技术设计”回答的一个问题是:“我们需要对API做哪些改变来支持这项功能?”

自去年3月以来,我们都在远程工作,所以不可能挤在白板前。即便如此,我们已经找到了确保共享技术设计保持透明和最大程度协作的方法。参与其中的工程师通过视频通话,打开文本编辑器,实时地一起起草计划。该团队提出了一个Pull Request,将该技术设计添加到专门用于该专用目的的内部存储库中,并通过Slack钩子通知团队,它将接受审查。工程团队中的任何人都可以查看提议的更改,并在计划最终确定和合并之前提供改进的想法。

Slack hook通知我的共享技术设计团队PR已准备好进行审查!

从历史的角度来看,我们首先尝试了一些其他工具来制作和修改共享技术设计,包括谷歌Docs和Confluence。最终,Github上的审查系统被证明是最有用的,也是我们作为工程师最熟悉的。当我们了解到关于项目的新内容时,还能够更新共享技术设计(Shared Tech Designs),这是一个额外的好处:只需将回购分离开来,再发出一个pull请求。

客户端技术设计为平台工程师提供机会,充实他们将遵循的步骤,使功能成为现实。实现计划的典型部分包括:模型层更新、网络需求、UI和UX规划,以及A/B测试和实验支持。客户端设计还讨论了完成任务所需的适当体系结构模式。根据您期望在何处以及如何挖掘与已建立代码相关的新特性,可能还会有关于解决技术债务、一般化和重用现有功能的章节,或者创建新的接口用于在遗留代码和新特性之间进行通信。这是我最近的客户端技术设计的一个片段,它符合上述API规范:

客户端技术设计回答的一个问题是,“应用程序如何从API中获取新信息,并使用它来呈现指定的UI?”

平台工程师是如何想出这个计划的?Greenfield特性可能需要通过一些文档和技术博客来比较方法并获得一些想法。另一方面,当您阅读文件以了解相关情况时,与遗留代码交织在一起的特性可能会让您感觉再次进入代码库。您可能会与平台团队中的其他工程师见面,了解您不熟悉的、需要构建的代码库区域。您还可以创建一个分支或单独的项目来测试高级的概念证明。不可避免地,您会一次又一次地回顾产品需求文档和设计规范,以确保您考虑了预期行为和设计的所有方面。

然后,计划要经过代码审查。这次由平台团队的其他工程师或工程师提供建议。除了发现错误和疏忽之外,这还能让平台团队意识到代码库是如何演变的,并让整个团队在指导特性的实现方面有发言权。

为什么它的工作原理

虽然技术工艺是运输质量工作的先决条件,但我坚信,作为工程师,我们的很多输出归结为人,沟通和过程

那么,谁是技术设计过程的支持者呢?读到这里之后,您可能有理由认为是工程团队的领导和成员。但是,如果公司只有一小部分人支持,流程创新和改进往往就会付之东流。在OkCupid的产品开发过程中,技术设计是一个坚实的组成部分,因为产品团队是一个平等的利益相关者。188bet金宝搏官网在每个项目开始的时候,产品经理会分配至少两周的时间来做这项研究。这也是他们的计划。

从交流的角度来看,Tech Designs促进了透明度,建立了共识,并作为一个共享的真相来源。每个人都看到并共同通知将指导实际实施的决定。此外,由于它们被记录下来,可以被重新查看,Tech Designs避免了在临时对话中忘记或在Slack中丢失决策的常见陷阱。

为什么这个过程本身工作得这么好?技术设计是一个有效的过程,因为它迫使工程师们去翻石头,预测障碍,并将不确定性扼杀在萌芽状态。这促进了对中期和长期产品路线图的更准确的评估和更高的责任。在Ok188bet金宝搏官网Cupid,技术设计过程因此成为产品和工程之间积极、相互理解、开放和合作交流的内在组成部分。最后,对于我和我的许多开发者同行来说,Tech Designs提供了不可否认的好处,鼓励我们作为个体去面对未知。当我们分解问题时,我们也解决了我们的恐惧!

188bet金宝搏官网OkCupid科技博客

阅读来自OkCupid工程团队的故事,每天连188bet金宝搏官网接着数百万人

多亏了188bet金宝搏官网OkCupid技术团队

克莱尔·凯瑟琳·林奇

写的

OkCupid的iOS工程师188bet金宝搏官网

188bet金宝搏官网OkCupid科技博客

188bet金宝搏官网OkCupid的工程团队负责每天为数百万人配对。在OkCupid科技博客上阅读他们的故事188bet金宝搏官网

克莱尔·凯瑟琳·林奇

写的

OkCupid的iOS工程师188bet金宝搏官网

188bet金宝搏官网OkCupid科技博客

188bet金宝搏官网OkCupid的工程团队负责每天为数百万人配对。在OkCupid科技博客上阅读他们的故事188bet金宝搏官网