查看: 19859| 回复: 53
跳转到指定楼层
上一主题 下一主题
收起左侧

[自我提升] [AMA]如何成为iOS开发准大牛

   
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
大家好,新手上路。2021年即将到来,给地里添点干货。稍微自我介绍一下,来美国后,在Google和Snapchat摸爬滚打累计9年,之前的小公司没啥名气就不提了。我的职业生涯从windows开发,web开发,backend开发,到最近7年多专注iOS开发,累计快20年的一线码农生涯,跟地里的大牛相比不算是啥,职业生涯中也见识了许多真大牛,自愧不如。不过总归多年积攒下来的经验,给地里的朋友分享一下,抛砖引玉也不是坏事。

圈子不大,有认识的熟人就高抬贵手不要笑话了。

直接凭空写作有点感觉无处下笔,试试ask me anything的形式,看看大家是不是有兴趣多聊聊。
话题举例:
  • 为啥最近这些年专注于iOS开发
  • iOS engineer有前途吗?
  • iOS engineer要怎么开始学起?
  • iOS engineer如何找工作?

.


评分

参与人数 18大米 +34 收起 理由
Youxi + 1 赞一个
iuxttclr + 1 谢谢分享!
枇杷枇杷 + 1 给你点个赞!
Xeroryeleoi + 1 很有用的信息!
yolandax + 1 给你点个赞!

查看全部评分


上一篇:Fire 和 Layoff 有什么区别呢?
下一篇:2021职业长期规划
推荐
 楼主| 大眼珠子123 2021-1-1 05:40:32 | 只看该作者
全局:
illumine 发表于 2021-1-1 04:45
很感兴趣iOS是否有前途那个话题 XD 感觉专注在iOS相对于backend有点太specialized了,但是应该会非常有趣!! ...

我可以明确的说,作为普通天赋的码农而言,iOS是一个很好的职业选择。. ----
大家经常会有一个误解,就是iOS码农就只管画画UI就完事了,然后复杂的高难度的都在后台。实际上往往作为产品功能的最后交付者,充分展现ownership的话,是应该对整个最终结果负责的。这样就需要对整个从后台到前端,包括ab test,data,metric等等各个方面都需要涉猎。成功且完整的交付一个产品,往往会从前端开始,逆向的去协调包括API,backend,data各个组的数据和metric一致性,然后出了问题,并不能双手一摊说反正UI都画出来了,就没我什么事情了。这样的职场态度最终是不利于长期发展的。
我实际上得益于backend各个方面都接触过,作为iOS主力交付的时候,一旦出现什么问题,包括app一切正常,但是某些用户metric最终会变化之类的,能够把backend以及data当成一个白盒来debug,而是两眼一抹黑的指望backend的同学来揣测问题在哪里。这样才是真正的产品的owner,而不再单单是一个画画UI的码农。

实际上,我在Google多年后的反思,我认为Google早年的成功导致了公司内部对于前端的系统性轻视,总是有一种潜在的共识,前端就是容易,实在不行谁都去搞搞就能出来了。这要是Google在mobile时代严重落后于Facebook的其中一个原因。实际上,越是大的公司,做backend的同学往往就是一管很小一个后台的job或者数据之类的,通常难以有机会对产品本身更多锻炼的机会。而即便是Google这样的大公司,做iOS之类的,往往有更多机会去完整接触一个功能或者产品的完整周期,对于自身的经验积累是有很大帮组的。
.google  и
另外一个我注意到的是,很多从互联网时代开始接触CS的码农,往往对app跟server之间的client/server模式缺乏一个潜意识的认知,毕竟backend的job,只要不是处理历史data,很少有兼容性的考量,而现如今mobile时代,几乎所有产品都依靠手机这个终端交付的年代,正确理解和处理client/server模式下的各个挑战,是需要对潜意识下的思维模式有一个提高的




评分

参与人数 3大米 +3 收起 理由
heyiming + 1 很有用的信息!
haopingfan + 1 赞一个
zzgzzm + 1 赞一个

查看全部评分

回复

使用道具 举报

推荐
 楼主| 大眼珠子123 2021-1-3 04:03:47 | 只看该作者
全局:
分享一些常见的iOS面试考察思路。最近几年,iOS面试慢慢形成了一些比较稳定的面试考察思路,有针对性的准备一下不光是对提高面试成功率有帮助,对于提高自己对于iOS水平也是有效的。

先分几个大类来讲一下,
  • 算法/coding
  • xcode实操/build an app
  • xcode实操/app debug
  • 产品协作/产品sense
  • architecture/OO design

第一个算法/coding,这实际上是非常有争议的一个考察点。业界实际上不同的公司,不同的面试官对于iOS engineer是否需要考察,以及如何考察这一个方面,各种意见都很有市场。作为求职者,与其抱怨为什么这个SB公司/SB面试官要问算法,或者为什么这个SB公司/SB面试官不考察算法,作为积极面对现实的态度,既然自己还不是规则制定者或者能够有能力改变规则,就还不如承认现实,有针对性的多做准备,这样才能有效提高自己的面试成功率。. .и

就我所接触过的主流观点而言,其实分开来看,都还是挺有道理的和逻辑自洽的。大家基本上都会同意,不管是那种码农,面试肯定得考察coding skil,一个码农如果连code都码不顺的话,的确大家都会很担忧是否能够胜任工作。分歧点来自于,到底要用什么途径才能考察候选人的coding skill。这对于backend而言,通常并不是一个很有争议的话题,因为无论如何,一个面试session里面,总不能要求候选人现场开一个AWS的service来展示一下coding skill吧,或者让候选人现场完成一个公司后台架构里面的一个job,毕竟这些后台的开发上线发布访问权限等等都往往比代码本身要花费精力的多。于是,面试backend engineer,在互联网时代,慢慢形成了通过考察算法来考验coding skill的既成范式,尤其以Google和Facebook为代表,横竖公司内部都有自成一套的后台框架,市面上的候选人不管有没有经验,进来都得从头学起,这样的话,经验本身就没有学习能力和单纯的coding skill更有价值,于是考察算法也就是一个很有效的检验手段了。至于leetcode的出现,到底是帮助了广大候选人有效的提高了算法水平,还是给行业内卷添砖加码,这就又是另外一个大话题了。

回到在iOS领域,在达成iOS engineer候选人需要考察coding skill之后,具体的考察手段,就开始仁者见仁,智者见智了。
有一派观点认为:不管是那种software engineer,核心技能都是共通的,决定一个候选人是否是一个优秀的码农,需要的素质和考察点也都是相同的,考察算法绝对是一个有效的检验手段。

另一派观点认为:iOS是一个非常依赖经验的专精技术方向,跟general backend engineer不同,iOS app开发严重依赖Apple提供的OS级别的系统库,一切都逃不出Apple定义的行为范式,而Apple系统库的庞大和复杂程度,导致了这一专精方向的门槛,与其考察在实际工作中800年都用不上的算法,还不如认真考察一下候选人对于Apple系统库的熟悉程度,毕竟最后deliver一个app,还是得靠系统库用的熟。

这两派观点都是非常主流的iOS面试范式,我们可以做的就是好好准备,面试现场指着面试官说你这面试方式真SB并不会有效的提升面试通过率。
  • 遇到考察算法的,现在越来越多的公司,会使用hackerrank/coderpad/codesubmit这类coding面试平台,可以在线coding,编译和跑test case,如果完全没有这类经验的话,这些大多都是可以免费注册一个账户自己试一下的。尤其是对于严重依赖xcode的auto completion fix的iOS engineer,提前适应一下还是很有效的,毕竟xcode这类现代IDE的auto completion还是非常强大的功能,一下子跳到每个字母都得手敲的环境里不适应还是很常见的。另外,面试iOS算法的话,大多数公司还是会要求在objective c和swift里面选一个的,面试iOS职位然后用Java来写算法,还是有些勉强的。就算法题本身而言,Swift还是好一些的选择,objective c语法太繁琐了,纯手敲的话,还是Swfit快的多,xcode里面用playground来练习一下swift做算法题,也是很有效的一个途径。最后,值得注意的是,objective c/swift都没有像java一样丰富的系统算法库,很多基本的数据结构真的需要的话,都得靠自己手写,这样也决定了iOS算法面试不应该免太复杂的数据结构。不过还是自己多练习下如何用swift完成一些基本常见但是iOS并没有提供的数据结构。
  • 遇到考察iOS系统库熟悉程度的,那就得靠日常工作积累了。毕竟iOS的系统库太多太多,日常工作用不上的的确就没什么好办法了。


评分

参与人数 3大米 +3 收起 理由
cht + 1 欢迎分享你知道的情况,会给更多积分奖励!
jackZhai + 1 赞一个
wendydy + 1 赞一个

查看全部评分

回复

使用道具 举报

推荐
 楼主| 大眼珠子123 2021-1-1 06:05:46 | 只看该作者
全局:
BestOreo 发表于 2021-1-1 05:48
谢谢楼主,我是今年的ng,暑假在Facebook的iOS组实习拿到了很高的rating,组里也邀请我回去,我还在纠结 ...
. 1point3acres
一般不同状态的当事人,我会根据当事人的具体情况来给建议。

你能拿到Facebook的高rating offer,至少在毕业生的横向比较中已经是优秀的一波了。尽管我是专注iOS领域的老码农,你的case,我觉得你得挑自己喜欢的领域作为起点,在iOS和backend之间,你做什么东西的时候最有成就感,这才是能够支撑职场初期的发展动力。很少有人会一辈子做刚毕业时的东西的,所以其实不用太在意选哪一个,对于新毕业生而言,空间都是无限宽广

评分

参与人数 1大米 +1 收起 理由
haopingfan + 1 赞一个

查看全部评分

回复

使用道具 举报

地里匿名用户
🔗
匿名用户-Q6DDC  | 添加认证 | 2021-1-1 04:30:03 来自APP
如果自学ios开发呢
回复

使用道具 举报

🔗
BestOreo 2021-1-1 04:34:53 | 只看该作者
全局:
马住关注字数字数字数
回复

使用道具 举报

全局:
很感兴趣iOS是否有前途那个话题 XD 感觉专注在iOS相对于backend有点太specialized了,但是应该会非常有趣!!!!!! 之前有一个机会能选iOS组但我没去,当时可能觉得才第一份工作不要把自己就限制在做app了吧,因为感觉做backend有时候还能搞搞data写写前端还能涉及点infra & devops,好像scope比较大,楼主觉得iOS会比backend发展得好或者差不多吗?
回复

使用道具 举报

全局:
现在小弟有三年iOS开发经验,在一家有20个左右iOS developer的公司,最近非常困惑,想提升自己又不知道如何下手,还请指教!
现在是mid level,公司里还有不少OC代码,但是我swift比较强,很多OC看的一知半解,不是很懂,如果改bug涉及到OC就比较痛苦😖。 所以现在想跳槽,跳到一个纯swift的公司,以后就不碰OC了。
但是还有很多东西想要学,例如rxswift,combine,swiftui,多线程,cocoapods,各种框架的优势,感觉面试都比较容易问到。
现在就是感觉都略懂一些皮毛,又什么都不会,怎么办呢🥺
回复

使用道具 举报

全局:
老哥你自己举的几个例子就挺好的

补充内容 (2021-1-1 05:19):
外加两个
1 学习ios开发是不是应该专注swift.
2 如果自学应该如何安排?大约多久可以上手。
回复

使用道具 举报

🔗
 楼主| 大眼珠子123 2021-1-1 05:21:44 | 只看该作者
全局:
匿名者 发表于 2021-1-1 04:30
如果自学ios开发呢

自学iOS开发的话,关键得看个人的起点。总体而言,iOS自学相对于backend, machine learning这些还是相对容易的。好歹iOS自学还可以做个app出来跑一下看看,然后花点小钱就可以上架app store拉出来遛一遛。. Χ

简单的总结一下:
  • 如果完全是没有CS背景,需要转码农的话,general software engineer一般会是比较成熟的道路,学个CS master,努力刷刷leetcode,找个入门级的offer也都是很多人已经走出来的道路。可以借鉴的经验很多。
  • 如果是学生时代,那自然是技多不压身,多学点东西总是好的,CS基础有的话,https://cs193p.sites.stanford.edu/ 算是入门推荐必修课。然后看看自己到底是不是喜欢搞这些东西。
  • 如果是已经有几年码农工作经验的话,我其实会推荐当事人,得对自己的职业有个长期规划,码农里面细分的领域很多,大多数你我这样的普通人,好好专精一个细分领域,就足以安身立命,养家糊口。作为技术积累,最忌讳的就是东一下,西一下,什么都会一点但是没有一个精通的。如果是很早就下定决心要自己startup,而不是作为技术专精的老码农当成职业目标的话,几个关键技术点都会一些也是一个有效的选择。
. ----
.1point3acres

评分

参与人数 2大米 +2 收起 理由
haopingfan + 1 赞一个
jackZhai + 1 赞一个

查看全部评分

回复

使用道具 举报

🔗
BrownL 2021-1-1 05:34:22 | 只看该作者
全局:
想问下如果硕士degree就叫Mobile and IoT Engineering的话,会不会过于局限自己的出路?想做general的backend
回复

使用道具 举报

🔗
 楼主| 大眼珠子123 2021-1-1 05:43:21 | 只看该作者
全局:
illumine 发表于 2021-1-1 04:45
很感兴趣iOS是否有前途那个话题 XD 感觉专注在iOS相对于backend有点太specialized了,但是应该会非常有趣!! ...

另外透露一下,招过人的基本都有一个常识,除去AI, deep learning这种门槛极高的专精领域。进入mobile时代以来,iOS engineer的供需平衡是最有利于求职者的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
职场达人
  • ↑ 本版用于讨论职场各种干货话题,闲聊请去🔗聊聊或者🔗匿名版
  • ❌ 本版严禁水贴,引战,发布广告,拉群,贴个人联系方式,扣分无警告
  • ☑ 求职、面经等去 🔗北美求职和 🔗回国求职大区,刷题和学习请去 🔗终身学习大区
  • ☑ 请去专版发布 🔗内推, 🔗招聘信息,和讨论 🔗创业内容
  • ☑ PIP / DevList/ Need Support 等话题也已开设 🔗专版

本版积分规则

>
快速回复 返回顶部 返回列表