588c67ad3c5c4c1780bfbd3b7c00987c
[译] 打造一个跨平台开发的团队

Medium 原文 Building a Cross-Platform Mobile Team

Building a Cross-Platform Mobile Team

Building a Cross-Platform Mobile Team

Airbnb 发布了一系列文章,描述了他们使用 React Native 的体验以及他们在移动端的下一步规划,本文是该系列文章中的第三篇。

React Native 除了在技术上有各种优点和缺点,同时它对于技术团队在人员组织上的影响也是巨大的。一旦使用了它,会比向现有平台添加新库或新的设计模式要复杂得多。这样做会带来许多挑战。平常的技术挑战,我们往往可以找到解决方案,或通过改善它的执行效率来解决。然而涉及组织架构的问题会更难以感知,进而影响我们找到解决的思路。值得庆幸的是,我们的工程师文化足以应对这些挑战,但在适应 React Native 过程中仍然需要注意很多事情。

React Native 会带来两级分化的影响

根据我们的经验,工程师们对 React Native 提出了截然不同的意见,争执之处在于它是否是统一 Android ,iOS 和 Web 端的框架甚至是银弹。即使是在使用了它以后,依然会出现很分歧的情况,一些团队会觉得很好,一些团队会回滚方案到原生上。

定位问题

在使用 React Native 时,不可避免地会遇到缺陷、磨合期和性能问题,这些应该是能够克服的,然而我们遇到了更大的麻烦:

  1. React Native 本身迭代太快。
  2. 我们必须同时进行基础架构建设和功能开发。
  3. 工程师们都必须学习 React Native ,这对每个人来说都是崭新的领域。
  4. 我们在开发和生产中进行调试的文档和指南有时会不一致,这样会令人困惑。

因此,往往遇到问题的时候,我们很难定位到最确切的地方。有时候,不清楚这个问题是属于技术团队,还是 React Native 自己的问题。

React Native 跟原生开发分不开

一个常见的误解是 React Native 会让你不再需要编写代码。然而,这并不是真实的情况。React Native对于原生部分的封装依然很有问题。例如,在不同平台上,文本的渲染都略有不同,键盘的处理方式也不一样,默认情况下在 Android 上,转屏会触发页面重新创建等。优秀的 React Native 应用,如果想要获得极致的体验,必须对于不同平台都做深度的适配。这样子,就要求工程师对于三个平台都必须要有很深的理解,不然很难写出高质量的代码,使得App在不同的平台上都获得一致的体验。

跨平台调试

大多数工程师都精通一到两个平台。对于绝大部分的人来说,同时熟悉 Android ,iOS 和 React 是非常罕见的。尽管在成熟的 React Native 开发环境中,绝大部分工作只需要使用 JavaScript 和 React 就能完成,但有时还是必须要深入到原生环境下去定位问题。这就使得工程师被迫在他们不熟悉的平台上面去工作。由于定位问题就已经很困难了,加上不熟悉相关的开发平台,导致工程师们有时根本无从下手。

人员招聘

即使我们的项目是构建于 React Native 之上,并不代表我们会停止原生应用的开发。然而,通过社区的口口相传,许多人开始将 Airbnb 与 React Native 联系起来,有些人甚至认为我们的应用程序是100%的 React Native 应用。虽然这远非事实,但许多 Android 和 iOS 工程师对于申请 Airbnb 的岗位犹豫不决。如果你是其中之一,请相信我们仍在招聘移动开发工程师

混合开发是很难的

top Created with Sketch.