美文网首页2017,我们一起努力工作iOS 好文
硅谷和国内的 iOS 开发到底有何不同?

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

作者: 故胤道长 | 来源:发表于2017-02-28 20:29 被阅读18553次

    前段时间在国内各大互联网公司转了一圈。与各位 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 职场与硅谷有很大差别

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

    • 两者对于 iOS 工程师的需求量不同

    国内现在处于一个 iOS 工程师饱和的状态,水平一般的 iOS 开发者多如牛毛,而高手却屈指可数。这就造成了一个情况,公司招不到素质过硬的工程师,而很多新手找不到工作。

    作为生活在美帝多年的土包子,我对这个问题百思不得其解。因为硅谷一直是程序员的天堂,一个美帝计算机专业的毕业生,可以随便就找到一个年薪10万刀的工作。在这之中,iOS 工程师更是奇货可居。按照道理来讲,美国这么多年大量输出计算机本科生,硅谷居然还缺工程师,而且连刚毕业的新手都抢手。为什么国内反而却饱和了呢?

    这个问题直到我遇到了滴滴的 Sunny 才想明白。

    他告诉我,国内有 iOS 培训班这种东西。这样,工程师可以流水线快速训练出来,他们会带你刷面试题,教你如何拿 Offer,甚至帮你把 Github 和 博客都弄好。再加上前段时间中国处于全民创业的狂潮之中,各种初创企业对 iOS 工程师需求巨大,导致这种培训班居然大行其道。而现在市场回归理性,对于程序员的需求量减少,于是很多刚刚流水线出来的 iOS 菜鸟自然无处可去。

    • 产品经理 (PM/PD)素质的差异

    之前老听说国内程序员追着产品经理砍的故事,我只当成是个事故,一笑置之。因为硅谷的产品经理大多和程序员和睦相处,至少在我印象中,工程师和产品经理的矛盾要远远小于上下级的矛盾。

    后来发现,在国内,我以为的并不是我以为的。

    国内产品经理基本上就是刚毕业的新人,没有什么实战经验,有些都不懂技术。而最重要的开发需求和任务往往是他们提出和分配。这就造成了一个奇怪的现象:一群经验丰富的 iOS 专家,团结在一个不怎么懂技术的产品经理周围,做开发。

    硅谷则对产品经理要求颇为严格:口才和技术是两个必备的技能,很多产品经理甚至是资深程序员转型。一般产品经理也是作为部门经理的接班人来培养的。

    • 面试流程不一样

    我说实话,国内大厂考得要比硅谷难。我回国之前就发现腾讯笔试好几张卷子真不好做,面试考得也异常全面。百度甚至考出了红黑树这种变态的玩意,还有公司问 autorelease pool 是用什么数据结构写的。

    硅谷每个公司的面试流程则不尽相同。谷歌是比较极端的考 4 到 5 轮算法,亚马逊与此类似,这种标准化流程让这两家损失掉很多优秀的工程师 -- Homebrew 的作者 Max Howell 因为不会在白板上翻转二叉树而被谷歌拒绝的事情现在还被大家拿来吐槽。相比 Facebook 的面试还比较靠谱,一轮交流,问问简历和文化;一轮系统设计;两轮算法。我个人面过最实际的还是 Uber 的 iOS 面试:一轮交流,一轮系统设计,一轮上机实战写 App,一轮算法。

    总体来讲,国内面试偏向考试,难度大,要求全面。硅谷的面试侧重算法和基本功,有时候脱离实际。

    • 职业走向

    据我所知,国内很少有干了10年以上的开发者,很多程序员干了几年就做管理了。这可能是因为国内程序员确实很辛苦,阿里这样的大厂996都是常态,在这种情况下码农、搬砖这类热词应用而生。但同时中国很多优秀的开发者,可能是前端、后端、移动端都有几年经验,技能十分全面扎实。

    而硅谷有很多写了10年以上经验的极客程序员,他们热衷写代码却不喜欢管理工作。我在美帝待得这几年,几乎没有听到国外程序员抱怨自己辛苦,像Google,Facebook 这样成熟的美国互联网公司很少出现加班情况。硅谷的开发者可能一辈子只钻研一块,比如只会前端或者后端。但这并不妨碍他们在喜欢的领域成为超级专家,这也十分受人敬仰。

    总结

    虽然中国的网民数量在 2008 年就超过了美国,尽管中国的互联网公司是唯一同美国一样使用10亿作为单位来衡量业绩的存在。但是不可否认,由于政策和文化的巨大差异,导致两国的开发环境有巨大的差别。本文抛砖引玉,疏漏之处在所难免,我衷心希望国内外能够取长补短,因为互联网终将拉平整个世界。

    相关文章

      网友评论

      • guoxuzan:还是在美帝做开发比较省心
      • 吧啦啦小魔芋:听君一席话,胜读十年书
      • 流浪者的音符:哇哦,和我的职业规划不谋而合,我就是一心想成为一名技术过硬的产品经理
      • billliu_0d62:好文章
      • YYWJustGo:请问楼主,怎样去美帝做iOS开发?需要什么条件或者要求吗
        YYWJustGo:@故胤道长 好的,谢谢啦
        故胤道长:@YYWJustGo 这个你要问 Peak 老师,我自己是在美国读研毕业的
      • ab6370700196:然而在小公司 代码质量与技术并没有什么卵用,老板只是需要你完成就行了..而且 OC, SWIFT,C++,JAVA....会的越多越好 --
        PHP菜鸡:@没有冻人的一生 😂真的,我说要优化测试下,老板直接说这些是以后人考虑的事,先上线再说
      • 天口三水羊:想了解英国的iOS开发的处境和待遇:flushed:
      • b2d85c50af3f:很有道理,受益良多!
      • 星好唯柔:请问楼主大大是怎么去美帝工作的?
      • 浩然爸:国内多数关注的是能不能转钱!
      • 柳豪:行文风格 流畅度很高,而且很诚恳,不容易啊。
      • 365284eb103a:不怎么长片博客的我,尽然看完了:joy:
        365284eb103a:确实长了不少见识
      • 莫林是个好孩子:即使不是 科班出身,那也应该了解最基本的程序设计吧
      • 马铃薯蜀黍:mark 下班慢慢看
      • 落影loyinglin:非常nice的分析。国内很多做程序员,只是因为高工资。身边的朋友也是为了求职,才培训。
      • 樗同学:痛彻心扉 :joy:
      • 7ce30781ff74:http://www.cocoachina.com/bbs/read.php?tid-1713865-keyword-%B2%FA%C6%B7.html
        看看这个帖子,完美符合新手产品,看了想哭
      • RonnieChen888:作为开发者,应该拒绝不良加班,维护行业秩序💪
        加双芋:@与伟大LEE同行 666
        与伟大LEE同行:下一个公司见 哈哈:joy:
      • b1e01cc368e2:人人都是产品经理
      • 38d6a8ae9f56:国内培训班这个真没有办法制止,主要是性质改变了,就很难改变了。
      • kevinil:产品经理如果真的很差劲,程序是会交流引导指出错误的,大多方案是交流的结果才对。除非是办公室政治太重了
        猩程变:这个很正常,老板说啥就是啥,只要结果
        马铃薯蜀黍:不想多说啊 .. 他都不知道自己想要的是啥
        MemoryReload:@kevinil 交流有个屁用,老板说的,要做。你觉得交流有用?:joy::joy::joy:
      • 落文信:支持一个:+1:
      • lzxy169:不错
      • 小八子的开发之路:见过国内培训机构忽悠连电脑都不会用的人培训,高薪诱饵、欺骗手段
      • 9599938ea070:我想归根结底还是公司模式不同吧。如你所说,国内发展追求速度,做出来就好,代码质量差点就差点,能用起来就意味着高人一头;硅谷小弟没去过,没有发言权
      • smartphp:顺带把rn黑了一把。有什么统计数据支持你的看法?
        smartphp: 我看你文章说,硅谷只有两个小公司用rn,然后其他公司都不用。我问你怎么得出其他公司都不用的结论,有什么统计数据支持,你告诉我react-native的版本号不到1.我不知道怎么回复了。
        f84eb6a4ad4f:@smartphp 比方rn版本一直不到1.0
      • 56362a9605fa:国内的所有公司都算上,大部分, 不, 绝大部分的产品经理就是个笑话, 好的不是没有,太少了, 除了忽悠什么都不懂, 能做好才怪了。
        直男程序员:@吧啦啦小魔芋 这个说到点子上了 哈哈
        吧啦啦小魔芋:国内产品经理基本靠抄
      • ladispartion:默默点赞,一心修炼
      • 整个夏天:设计,测试,产品经理还是要懂一些开发的,不然会出很多矛盾.
      • Axel:急于求成啊。
      • 开发者头条_程序员必装的App:感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/st7ctk 欢迎点赞支持!
        欢迎订阅《iOS的学习笔记》https://toutiao.io/subjects/58931
      • 杰嗒嗒的阿杰:写得挺不错的,不过有些观点不是特别认同,在使用第三方SDK问题上,确实会存在代码质量问题,但是比起自己重新实现来说我倒觉得这个风险反而更大,可能人家踩过的坑你都会再踩一遍,而且还要花费相当一部分的时间去实现。而且我们开发过程中肯定会涉及第三方库,一个算法库、加密库这些也属于第三方。所以,我只能从人的心里上分析这个问题:不是自己的东西用起来总感觉没什么安全感,那么一旦你离开公司后,下一位接手你代码的Ta会怎么想呢:relieved::relieved:...哈哈,我是做第三方sdk的,有什么说得不对不要喷我哈:stuck_out_tongue_winking_eye:
        MemoryReload:@杰嗒嗒的阿杰 当你发现三方有个bug的时候你就会同意楼主说的话,很尴尬。更重要的是我见过的很多程序,都不看开源库代码,只会用。:joy::joy::joy:
        杰嗒嗒的阿杰:@BigDaddy_ 嗯,那也是因为大公司有资源去做这块的整合,是沉淀后的产物。其实我只想说,其实第三方的SDK质量问题并不是主要的,主要还是SDK缺乏可控性:relieved:
        BigDaddy_:其实大量用第三方sdk的都是小型公司,国内的大厂也都有自己的代码库,对第三方的东西用的也不多
      • 30fac6453546:有些都不懂技术。而最重要的开发需求和任务往往是他们提出和分配。这就造成了一个奇怪的现象:一群经验丰富的 iOS 专家,团结在一个不怎么懂技术的产品经理周围,做开发。
      • 苍蓝残影:不是挑刺... 但是"趋之若鹜"和"无独有偶"两个成语你用错了...
        故胤道长:@苍蓝残影 虽然可以,但我感觉应该有更好的表达
        苍蓝残影:@故胤道长 若改用"竞相追逐"和"与此同时"则毫无违和感
        故胤道长:好像确实不太准确,但是在我想不到更精确的表达之前,暂且一用:sweat:
      • 12e27c423c0f:确实是这样,我做了快5年的开发了,很想只关注一方面,但是实际情况就是,公司需要哪种东西,你就必须去学习。所以现在学会了,java,php,js,html
        夏天的暖腩:@之离 只有你先成为了专精一项的大牛,才有权利谈专一
        d4999f3d52df:我现在的情况也是这样,基本公司就想让我们成为什么都会的员工,Java,PHP,js,html。。。。。。可是,我觉得一个人的精力有限,与其什么都会,不如精通一两门开发语言。然而,老板并不这么想。。。。
        记住你姓李:赞同 , 我最开始就是打算搞 IOS 结果在公司 , 有要求你会这个会那个 , 精力有限.结果没有一样精通 的 . 是我们不努力吗 , 技术确实是在拼命的往上赶 , 但是能比得上用同样时间 专门搞一门技术的人吗 ? 现在有种感觉 不是我们技术差提升慢,是很多公司要的多要省钱导致整体环境变成了这样.前几天打算跳槽去面试,去了一家公司要求你会什么 "IOS JAVA 安卓 H5 PHP" 当时我就震惊了 这个公司到底想要什么人,我投简历的时候投的是 IOS 啊 😂
      • CoorChice:跪着看完
      • 131e885212d1:作为oc的小菜鸟🐤,我还是默默的码代码吧
      • 风栖林:国内程序员想进硅谷,该如何努力
        吃蘑菇De大灰狼:从交流开始~:stuck_out_tongue_winking_eye:
        365284eb103a:我也是想知道啊
        _kk_:哎呀,我也心动了
      • bc9ccddb7328:这就造成了一个奇怪的现象:一群经验丰富的 iOS 专家,团结在一个不怎么懂技术的产品经理周围,做开发。这句话太对了,资深开发围着毕业生的战略转。
        无名无闻:@BigDaddy_ 说的就是我们公司,5555.
        迷糊娃娃i:@BigDaddy_ 然后就比较狗血........
        BigDaddy_:这个不懂技术的产品经理背后还有什么都不懂的老板撑腰....
      • 前进的小猫:把国内iOS不好就业归结于培训班是不正确的,你以为美国没有?上次在coderclamp还是什么网站上就看到一个小哥写自己如何参加培训班,如何拿到12KUSD的故事
        ZhHS:国内培训班太多了,培训完就三年工作经验,各种装逼各种忽悠,结果招进来跟屎一样。
        CoorChice:@故胤道长 国外很多卡本科学历的,不是流水线走一波就行的,火不起来。
        故胤道长:有是有,但是没国内这么火
      • feepees:请问道长想去硅谷工作该如何?
      • 359078bf9c32:只能默默地点赞
      • 57f21ae7bdab:只能默默的点赞

      本文标题:硅谷和国内的 iOS 开发到底有何不同?

      本文链接:https://www.haomeiwen.com/subject/tmlrwttx.html