返回开发者新闻

开发者简介:移动专辑 (Pritesh Nandgaonkar)

2022年5月23日发布者:Dmitry Vinnik

本文由 Meta 软件工程师 Pritesh Nandgaonkar 和 Meta 开发者外协推广人员 Jesslyn Tannady 合写而成。

我们为今天的采访请来了 WhatsApp Apple Companion 团队的 Pritesh Nandgaonkar。

加入 WhatsApp Apple Companion 团队前,他曾在 Mobile Dev Velocity 团队工作。他曾致力于 FlipperYoga 等开源项目。他虽然是 Meta 的 iOS 开发者,但也有机会使用各种编程语言,例如 JavaScript、Rust、C++ 和 Java。

也可通过 Pritesh 的 GitHubLinkedInTwitter 相关信息详细了解他。如果想关注他的业余活动,请注意他也有 Instagram 账户。


能否先和我们谈谈您在加入 WhatsApp Apple Companion 团队之前的开源工作?

我以前是 Flipper 项目的骨干,而 Flipper 则是一个开源可扩展移动调试器。自从 Meta 首创 Flipper 以来,这个项目就得到了频繁利用。2018 年我们决定使其成为开源项目时,我致力于此项目的 iOS 子项目。这项工作很难,因为 Meta 有标准化基础架构和工程要求。相比之下,开源社区却可以轻松使用数千种不同的配置。使 Flipper 的 iOS 子项目成为开源项目时,我需要对项目代码库作许多更改。例如,我必须确保 Flipper 仍然与内部 Meta 工具(如我们的生成系统 Buck)和行业标准工具(如 xcodebuildcocoapods)兼容。

除了致力于 Flipper 的 iOS 支持,我还为多个核心 Flipper 插件的开发效力,例如布局网络崩溃报告工具插件。这些插件有助于开展所有开发者都参与的最复杂却最常见的活动:调试。借助崩溃报告工具和网络分析器等功能,工程师可以观察特定缺陷如何出现,查明并最终解决核心问题。如果想详细了解 Flipper,请注意这有一段精彩视频深入浅出地说明了这一项目。

Flipper 中是否有一个功能让您为致力于其开发而感到特别自豪,并且能详细谈谈?

对于致力于 Flipper 这样的开源项目,最令人振奋的一点就是我有机会走出舒适区。致力于 Flipper 项目时,我曾在许多情况下背离普通 iOS 开发工作方式,这让我非常为难。

开展此项目跨平台方面的工作,就是这样的难题。由于 Flipper 是一种移动调试工具,因此我启用了许多移动相关插件,例如布局插件。我们设计这个插件,是为了显示所有布局层次结构及其 UI 和自定义属性。

这个布局插件一经分享,就在团队内外广受欢迎。我们的一大目标是确保提供绝佳开发者体验。所以我们的宗旨是,让移动开发者只须做两件事就能将此插件设置好:首先初始化插件,然后设置 UIApplicationLayoutDescriptorMapper

虽然此插件原打算用于 iOS,但开发者可借助于此插件的架构使其功能可用于 Mac 应用。开发者只须为另一种节点创建映射器,然后就能用了!

您在 Meta 开展的所有开源工作都是专门为了 Flipper 开展的吗?

我还致力于有关 Yoga(用于为 Android 和 iOS 渲染 flexbox 布局的布局引擎)、若干 ComponentKit 相关集成,以及用于 React Native 的布局插件的工作。

通过在 Meta 开展的工作,我可以为开源作出贡献,我感到很高兴。我将工作时间投入公共代码的编写,这有益于世界各地的开发者。看到开发者基于我曾为之努力的开源成果实施各自的项目,我有一种不寻常的感觉。我知道自己在使他们的项目能够得以实施的过程中助了一臂之力,这感觉好极了。

转变为全职移动开发者的过程是怎样的?

在 Mobile Dev Velocity 团队工作时,我主要集中精力开发可以改善 Meta 移动工程师开发者体验的工具。虽然致力于插件开发及帮助克服开发者难点令我兴奋不已,但我并没有开展面向外部用户的工作。

现在我是 WhatsApp Apple Companion 团队的一员,我正在致力于开发的应用程序在全球有数十亿用户。致力于开发新 WhatsApp 功能,然后在我每天用来联系亲朋好友的应用程序中推出这些功能,真的让我很有满足感。

我的团队一直在改进多台设备之间的 WhatsApp 同步功能。我们注意到,对于想要通过各种平台进入 WhatsApp 账户的用户,上述功能的体验可能令人沮丧。

我们正在致力于构思更好的方式,以便安全地进行跨设备账户同步。但这个问题还是很难解决。虽然我们专注于消息、已读回执、媒体文件和动态广播等信息的同步,但我们的重中之重是确保用户使用 WhatsApp 时安然无虞。对于这项工作,需要一面跨设备安全地处理个人数据,一面对隐私设置和黑名单进行同步。

您的工作日通常是怎样的?

我的移动开发工作通常归类于功能开发和缺陷修复。幸运的是,处理 WhatsApp Mac 应用等产品的新功能时,我有机会与许多其他团队和项目经理或设计师之类的参与者合作。对于我的职责,我往往需要开展涉及其他团队的交叉协作,而这对于我的工作则是让我最喜欢的几点之一。有意义的开发工作总是让人有紧密合作的感觉。

除了致力于新功能的开发,我还经常修复缺陷及其他瑕疵。这些问题往往是由我们团队的其他成员或质量保证 (QA) 团队发现的。对于确保 WhatsApp iOS/Mac 应用符合我们的高标准用户体验,QA 团队必不可少。

我们 Meta 人重视优秀团队的培养。除了开发工作,我还在 Meta 投入大量时间进行新工程师面试和指导。

您能多谈谈人才招聘和培训方面的工作吗?

我们 Meta 一直在招聘移动开发者。组织成员有多优秀,组织就有多优秀。我要确保我们聘请优秀工程师和合作者,为努力改进世界上用户规模最大的多种移动应用助力。

工程师受雇于 Meta 后,就会参与新雇员培训入职计划。新雇员培训的目的是让新工程师沉浸在 Meta 的代码库中,使其能够灵活决定想要致力于哪个项目。

在新雇员培训计划中,我会主持有意了解 iOS 开发的新工程师的工作。这些环节旨在进一步回答 iOS 专家和渴望了解移动开发的人提出的问题。

人们对移动开发常有什么误解?

我有时会听到有人说移动 UI 开发往往会重复而单调。这种批评通常包含这样的评语:移动 UI 主要包括表视图布局和 UI 控件的排列组合。

对此我完全不同意。移动 UI 开发远不止如此。其中包括许多组成部分,例如设计应用,考虑数据流,处理数据存储,设计 UI 等。

例如,移动开发者必须解决的顶级难题之一就是测试。测试是功能开发不可或缺的一部分。对于功能开发,测试可以确保应用既可扩容又可扩展。尽管如此,开发者有时也被迫为测试新代码而重构整个代码库。重构代码时,我经常要更改数据处理方式和周围代码的架构。

您能谈谈您现在在干什么吗?

对于 WhatsApp,我正在致力于进行跨平台测试设置,并使其可与我们的 Meta 内部持续集成 (CI) 系统一同使用。

每天都有数千名开发者为 Meta 代码库添砖加瓦。对于 Meta 的运营规模,以人工确保所有代码都符合特定标准行不通。为了应对这么大的需求,我们也将 CI 系统用于快速交付没有问题的代码,以及减小错误在生产中带来的风险。

说一下来龙去脉,2014 年 WhatsApp 因为被收购而加入 Meta,因此其代码未用 Meta 定制 CI 系统编写或测试。自从 WhatsApp 加入 Meta 后,我们一直致力于整合 Meta CI 系统和 WhatsApp 代码库。然而,这种整合也带来了一系列难题,例如确保其可以避免误报。

我的重中之重一直是与管理内部 CI 系统的团队合作,消除障碍,使 CI 可在所有 WhatsApp 平台上正确地执行测试。

您觉得作为移动开发者有什么特别令人振奋之处?

作为一名工程师,在 Meta 工作一直有助于我的成长。在这里工作,我能通过各种项目接触到许多不同的堆栈。通过走出舒适区,摸索自己专门技能领域(移动)以外的开发技能,我可以继续提高开发技能。

在 Meta 工作时,我曾有机会通过用 JavaScript 为桌面设备设计端点和 UI,去摸索非移动工作技能。后来我想通过移动工作一试身手,辗转于多个团队之间,现在作为 iOS 开发者致力于面向用户的产品开发。经理支持我作的选择,而 Meta 的所有相应流程都已就绪,使得这种内部团队人员流动能够实现,这也让我感到很高兴。

作为 Meta 移动开发者,除了有机会尝试各种工作流程,您还重视什么其他事情?

我一直对解决复杂问题感兴趣。Meta 移动开发者有机会通过许多特有的难题一试身手。

在 Meta 工作时参与的项目规模浩大,我的移动技能可以派上用场,这是一大好处。我在这里遇到的难题以前从未在其他公司遇到过,但我有机会与世界上的一些最聪明的工程一起工作。与从本质上改变移动领域范式的人为伍会受到鼓舞。

例如,我曾有机会与 React Native 的幕后团队合作。这是一个开源框架,用于通过 React 构建原生应用程序,最初由 Meta 开发。借助于我们的社区,这个项目规模不断增大,以至于工程师可以完全专注于 React Native 并以此为职业。

您工作在当今通用移动领域中的动力是什么?

移动设备对于我们的日常生活至关重要,这很令人振奋。例如,要在餐厅看菜单时,我们会用手机扫描二维码。我们用手机徜徉并了解世界,我们还用手机使我们与所爱的人的沟通更加顺畅。

以前我们只用手机打电话。现在世界上大多数人的口袋里都有一台超级计算机,可用其查看任何信息。在用更好的应用和功能让人们的生活更加轻松的过程中,我们作为移动开发者发挥重要作用。我迫不及待了解会在将来变得平淡无奇的那种移动体验。

我相信,在我们将来的相互联系过程中,元宇宙将发挥主要作用。元宇宙将彻底改变我们与亲友进行沟通的方式。我期待着移动领域与元宇宙齐头并进,以及半虚拟和虚拟世界之间的移动集成。这肯定会为移动领域的各种想法和创新拓宽道路。

有鉴于此,您能为初涉移动开发的人推荐些资源吗?

如果对 iOS 开发感兴趣,建议阅读最简单的 Apple 文档。我开始学习时,阅读的是 Stephen Kochan 的《Objective C 程序设计》(Programming in Objective C)。如果想学习 Swift,首先要阅读 Swift 文档。要了解如何开始进行移动开发,还可以观看很多精彩视频。


要详细了解 Meta 开源项目,请访问我们的开源网站,定期付费观看我们的 YouTube 频道,或通过 TwitterFacebookLinkedIn 关注我们。