57b5a917df24f6f3121d4a974a1d408d
硅谷和国内的 iOS 开发到底有何不同?

前段时间在国内各大互联网公司转了一圈。与各位 iOS 业界大佬交流了之后,深感国内变化之大,敬佩诸位国内开发者的实力和韧劲。除此之外,我还发现硅谷和国内的 iOS 开发还是差别很大,且听我慢慢道来。

国内使用 SDK 和 硅谷大为不同

首先是最本质的三个不同:国内的支付使用的是支付宝和微信,地图使用的高德和百度导航,国内的第三方登录主要是微博,微信,和 QQ。而硅谷的在线支付方式是信用卡,地图使用的是苹果自带亦或是谷歌地图,第三方登录就是 Facebook 和 Twitter。

这三点不同意味着开发引入的 SDK 完全不同。在 Uber 被滴滴收购前,其美国的 App 和 中国的 App 完全是两个不同的 App -- 因为大量 SDK 不同导致架构和接口需要重新设计。再加上国内对于数据的严格掌控,很多 App 后台 API 的设计需要单独处理,流量需要导入到中国境内的数据中心,App 的界面亦要根据中国的网速针对优化。

另外,国内开发经常大量的调用第三方的库。而硅谷的大厂开发基本都是自己开发内部的工具和库。可能调用开源库确实比较方便快捷,但是硅谷的大厂考虑更多的是版权和代码质量的问题,所以在开源或是使用第三方库方面格外谨慎。

国内注重 HotPatch,硅谷注重原生态

据我所知,国内开发对于热补丁情有独钟。滴滴就做出了 DynamicCocoa,通过转化 Objective-C 到 Javascript 进行热修复;饿了么大量使用 Weex 进行移动开发;美团也已经在主 App 里尝试了 React Native。

相比硅谷,也只有少量小公司开始尝试 React Native。其主要原因也是 App 需求相对简单,跨平台开发相对轻松。大公司几乎很少使用,就连 RN 的母公司 Facebook 也只是在1到2个小 App 上使用了 React Native。

我个人推测这其中的主要原因在,国内开发需求量又多又急,加上前些年 App Store 的审核非常之慢,所以国人在开发上才对 HotPatch 趋之若骛。

国内要求快速迭代,硅谷要求测试覆盖

与百度的开发者交流中,他们经常提到“业务太多,根本来不及做”。所以基本上会有一个单独的 QA 团队负责测试,而开发者则是不停的写新的代码。

这一点与硅谷在对测试的态度上大相径庭。Google 对于代码的测试覆盖率有严格的要求和审核标准,Yahoo! 甚至在开发中要求采用 TDD (Test-Driven Development),Facebook 所有的代码也都用持续集成测试来保证其质量。在 《The Clean Coder》一书中,作者也多次强调代码质量的测试的重要性。我之前在工作中,有时候甚至出现写的测试代码数量超过开发代码的时候。

造成这一差异的本质在于两国竞争模式的不同。中国人口巨大,竞争对手太多,所以资本的打法就是快速迭代,小步快跑,挤垮对手。面对这样的模式,中国的工程师也只能暂时放弃完善测试代码,将有限的精力集中在开发上。

Swift 与 Objective-C 的争论一直不绝于耳

国内和硅谷对于 Swift 的看法大同小异

前段时间唐巧老师发表了他对 Swift 的看法,他认为 Swift 是未来,但是现在不太完善,要“再等等”。无独有偶,卓同学发文则认为,Swift 已经开始流行起来,应该“快上车”。

我在这半个月杭州、北京、上海之行中发现,几乎大厂开发都用 Objective-C,他们对 Swift 依然心存芥蒂;而小公司和独立开发者,则是对 Swift 充满期待。原因很简单,大厂需要的是稳定的产品来维持口碑,对于 Swift 这样重写并不能带来巨大好处的冒险之举自然是讳莫如深。而这个原因对于小公司或者个人来说并不成立。

其实国外对此也一样。唯一不同的是,可能硅谷要略微激进一点 -- 大厂已经开始部分尝试 Swift 了。Google 在某些新产品和新功能上已经开始用 Swift,Facebook 和 Twitter 都放出了自己的 Swift iOS SDK;LinkedIn 开源了 LayoutKit,Lyft 开源了 mapper,而这些都是用 Swift 写成。

就连硅谷的猎头都开始急着寻找拥有 Swift 开发技能的工程师了,而就在去年,Swift 在职场上还是被作为一项可有可无的加分技能来对待。

虽然硅谷在 Swift 上走在了前面,但是不得不说开创性的尝试总是要付出代价的。当年 Uber 在开发新 App 时采用了全 Swift 模式,结果因为 Swift 编译速度不佳和语言功能不全,开发效率大打折扣,内部工程师在采坑过程中无比头疼。所以 Swift 虽好,可不要贪快哦。

国内 iOS 职场与硅谷有很大差别

这个话题有点大,我从四个方面来说。

top Created with Sketch.