斗地主怎样记牌|宋小宝斗地主搞笑视频
登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

如今的iOS开发者优胜劣汰,如何提升让自己不被淘汰?(附资料) ... [复制链接]

2019-6-13 21:46
原来是泽镜啊 阅读:131 评论:0 赞:0
Tag:  程序员iOS开发架构师开发者

序言:

如果从 13 年移动客户端大火开始算起,至今已经有五个年头了。现在移动端的形势也不需要太多的废话来描述,一句话总结就是:“浪潮退去,谁在裸泳一看就清楚。”我希望借助这篇文章来聊聊在我心目中,移动互联网下一个五年的趋势和机会,以及我们 iOS 工程师能做哪些准备,实现自我提高。本文主观性的看法比较多,文笔也比较激进,仅供参考。

我们都知道价格会受到供需的影响,如果某项技能在市场上紧缺,那么掌握这门技能的工作者工资就会相对高一些,比如 14 年前前后能写好 UITableView 就能找到一个相对不错的工作了。在我看来,未来几年的移动互联网,会出现“一个过剩,两个不足?#20445;一?#36880;个分析并试着给出一些建议

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。

以下资料需要的可以加群领取。


(一)UI 工程师过剩

这一点是我老生常谈的了

,首先要注意的是避免成为 API 调用工程师,因为这些 UI 方面的知识对个人价值的增长不是线性的,如果你还记得高中数学,请回忆一下 y = ln(x) 这个函数的曲线。从零到写好 UITableView 给一个工程师带来的?#25214;媯对?#19981;是从写好 UITableView 到写好 UIStackView 能比得上的。

就以 UIStackView 为例吧,先不说它从 iOS 9 才开始支持,而要想应用不支持 iOS 9,怕是要等到猴年马月了。就说它提供的功能,虽然简化了已有场景,但这个功能完全可以通过封装已有的组件来实现,相信很多大型项目都有,为什么还要费力气去兼容版本,以及再学习一个新的 API 呢?人的精力是有限的,如果你总是追着苹果的脚步,每年补 WWDC 上那些新坑和老债,那么视野就永远只能停留在 iOS 中了。

(二)专?#23548;?#33021;人才不足

这里的专?#23548;?#33021;指的是移动端这个大话题中里比较垂直的知?#35835;?#22495;,大概包含以下几个方面:

1、图像/视频处理

随着网络基础设施的普及,以及流量费用的大幅度降?#20572;?G 基?#26087;?#24050;经全面商用了,如果说移动端前五年是文字为主,图片视频为辅的话,在接下来的几年中,用户对高质?#23458;?#29255;和视频的要求会日益增长。

由于我对这个领域并不了解,所以能够推荐的并不多,在我印象中,OpenGL 这种跨?#25945;?#30340;引擎,计算机图形学的知识,视频编码与协议都是可以花时间研究的,现在有很多优秀的创业公司也急需这类人才。严格来说这些知识都不算移动互联网方面的知识了,所以门槛较高,但门槛这东西是个双刃剑。它会增加你的学习?#35759;齲?#20294;一旦你掌握了这门知识,门槛又会变成你个人价值的护城?#21360;?/p>

我格外想要声明的是,CoreAnimation 这类的东西如果不是工作中强制要用,?#35805;?#23601;别碰了,就像没人会傻到用 SpriteKit/SceneKit 去?#20174;?#25103;一样,这种 API 密集型,又不能跨端的库是没有?#24052;?#30340;,真正有价值的动画一定是用一套统一的 DSL(领域特定语言)去实现,然后导出到各个?#25945;?#19978;,所以开发者一定要多在动画的原理上下功夫,比如了解矩阵变换,线?#28304;?#25968;这些,而不是把时间浪?#35328;?#38405;读官方文档上。

2、逆向工程

研究逆向工程的作用不仅仅是破解 app,在我看来更多是学习底层的操作?#20302;场?#22312;开发 app 的过程中,我们使用?#20302;?#25552;供的库,调用 API 就可以实现需求,其中的过程完全是黑?#23567;?#32780;逆向工程的目的就是要开盒子,利用一些工具从二进制层面入手,反过来推测应用开发者的代码和逻辑。这其中会涉及到很多 C 语言,操作?#20302;常?#32534;译原理方面的东西,相对来说门槛很高。逆向工程对企业对价值也很大, 因为大家都不希望自己被竞争对手一眼看穿,又对竞争对手对秘密颇感兴趣。

以上的内容都可以花时间研究的专业知识。这些知识大多是自成体系的,没有较长时间的积累,很难入门。这一点非常重要,因为很多知识看起来非常专业,门槛也很高,比如我下一节就会提到这样的例子,但这些知?#27573;也?#19981;鼓励学?#21834;?#21306;分的标准是,你学习的知识是一个知识点还是一个体系,如果你学习的只是知识点, 那么它只能是整个知识树上的枝枝丫丫,边边角角,如果你学习的是知识体系,就具备?#25628;?#29983;知识点的能力,也就是我反复强调的举一反三的能力。

上面举的两个例子都是我认为不容?#33258;?#21040;时间的淘汰,比?#29616;?#24471;研究的话题。在这些领域上的投入可以理解为线性的,也就是一分耕?#29275;?#19968;分收获。

(三)全栈人才紧缺

这里的全栈没有明确的定义,并非前后端通吃才算是全栈。在我的理解中,只要是跨知识点的融?#24076;?#37117;算是全栈,因为跨知识点的融合往往会产生 1 + 1 > 2 的效果。往小了说,全栈可以减少大量浪?#35328;?#27807;通上的时间。往大了说,一个人了解的领域越多,他就越能把这些领域融合在一起,既能站在更高的角?#20154;?#32771;问题,也能作为团队的领导者和融合剂。这也就意味着,掌握全栈知识对个人价值的影响是指数形势的,你了解的越多,价值就会越快的提高,职业天花板?#19981;?#36234;高。

很多技术是与业务绑定的,有了核心知识,在业务需求的推动下,很容易就会诞生一个框架。比如应用组件化,很多公司都有自己的组件化库,其实实现原理也就是两大类,但发表到博客里面以后,就会有非常多的业务背景干扰读者的?#29616;?#22914;果读者追着这类文章看,是非常难从框架中剥离业务的干?#29275;?#30452;接挖掘基本原理的。因此大公司搞出来的某些框架,真的没有那么神秘,早期都是一个简陋的基础框架,当面对业务业务需求时,运用一些合理的编程思想,逐步迭代,最后发布了一个完善的版本,大可不必看得晕头转向以后妄自菲薄。

在之前面试的过程中,我也注意到很多应聘者其实对技术很感兴趣,经常刷微博上的文章,了解的也很多。但大多数情况下只知其然,不知其所以然。这是因为这些技术偏离了你的应用场?#21834;?#20197;前我总为微博上的好技术无法在项目中落地感到纠结,后来我突然就明白了,这个思路就是错的,我应该挖掘公司项目的痛点,去微博,Google 等?#25945;?#19978;的文章中寻找解决方案。所以我反对面向微博学习,应该要学一些更通用的技术,把技术与自己的项目结合起来,争取能在项目中落地,这比看十篇似懂非懂的技术文章?#26500;?#29992;。

(四)大公司所谓的基础知识

为什么建议不要研究单独的几个底层知识点,除了这种知识,以及逆向工程这种自成体系的,求职者只要具备扎实的基础,牢牢掌握一些基础知识就可以了。很多人都会觉得大公司对底层的基础知识考察很严格,基础知识不表?#38236;?#23618;,也不一定就很简单,它们通常是那些被框架做了一层封装,以?#21155;?#22914;果不用心思考,很可能就会忽略的知识,但不了解这些知识会?#38405;?#30340;思考产生较大的影响,也很容?#33258;?#36827;某个坑里。

除非是变态公司以偏题怪题刁难人为乐,或者无能面试官只会问自己懂的东西以外,正常的大公司面试都会考察一些比较基础的问题,如果你还是觉得题目太底层,只能?#24471;?#33258;己看问题的角度还不够深刻。

大公司着重考察基础知识,在我看来有两大原因:首先,在比较大型的项目中,业务逻辑非常复杂,所以很少有人有精力去大量的检查并提高你的代码质量,这就要求工程师具备相当扎实的代码功底,无论是代码风格还是语言的掌握都不能有太多问题。这样 Code Review 的时候才能把精力放在业务检查上,代码风格一笔带过,偶尔提醒一下就可以了。

另一方面,基础知识决定一个人思考问题的深?#32676;?#20132;流问题的角?#21462;?#19968;个不懂计算机背景知识的程序员,看问题的方式经常是错误的,错误的思考方式也就决定了他很难走到正确的道路上,比如我的一个外?#20449;笥言?#32463;接?#33267;?#19968;个用 C++ 实现的 GUI,他的第一个问题是“如何在 C++ 中把字符串加粗?#20445;?#35835;者大可不必感到荒谬,因为很多人思考问题的方式也不见得高明,在高水平,有经验的程序员看来,也许同样是不可理喻的。大公司复杂的业务逻辑同样也意味着很少有人会耐心的给你?#27493;?#27599;一个名?#21097;?#27604;如哈希表,并发,并行,编译,链接等?#35753;剩?#22914;果你听不懂或者理解不正确,往往意味着交流上会存在一些?#20064;?/p>

因此我的建议是:数据结构,操作?#20302;常?#35745;算机网络中的基础知识一定要扎实,怎么扎实都不为过,因为它决定了你看问题时候的高度,深?#32676;退?#36335;。

(五)让脚本取代 GUI

脚本语言非常重要,绝对是提升工作效率的神器,我强烈建议每个客户端工程师都应该了解一些 Shell 脚本并且掌握 Python,Ruby 和 JS 中至少一门语言。

理论上来说没有什么是脚本语言做得到,Java 做不到的,但脚本语言最大的特点就是快,快到极点的那种快。对于一些极度简单的小需求,比如统计一个文件?#24515;?#19968;列数字的平均数,我敢保证在我得出结果之前你肯定还来不及打开 Java 编辑器。

脚本语言的另一个特点是高度的自动化,只要 Unix 和 Linux ?#20302;?#19968;天不死,shell 脚本就会永远存活,你学习的知识就永远不会过期,比如 awk 和 sed 这样的神器,年龄比我大得多,至今还非常实用,未来的 20 年也丝毫看不出淘汰的迹象。试问一下,有什么知识能比一个几十年不会过期,而且每天都能用上的知识更值得学习呢?#22353;?#20110; Shell 是距离操作?#20302;?#26368;近的脚本,了解了它以后,很多复杂的操作都可以被自动化。比如想找?#36739;?#30446;?#24418;?#29992;的图片,也就是一行命令的事。

考虑到脚本语言极高的开发效?#21097;?#24456;多对性能不敏感的框架都会选择用脚本语言来实现,比如 Node,Flask,Rails,mitmproxy 等?#21462;?#20316;为一个大前端工程师,不能总是依赖后端工程师,否则没了后端就只能搞单机模式了。因此了解脚本语言还有助于我们快速上手后端框架,这绝对是应聘时的加分项。

?#27604;唬?#24456;多人?#19981;?#25265;怨,我们是 iOS 工程师,平时的工作也接触不到脚本语言,该如何学?#23433;?#25237;入使用呢。我的建议有三个:

1、整理自己的痛点, 并尝试着用过脚本去解决,这对学习 Shell 有奇效

2、整理公司项目开发中的痛点,尝试着用脚本去解决,适合?#24223;?Python,Ruby 和 JS

3、抛弃 GUI

GUI 诞生的目的是为了更好的显示信息,而不是成为技术残疾者的拐?#21462;?#20030;一个简单的例子,我发现很多人都装了很多编程效率方面的工具,比如 gitx,sourcetree,tower 之类的 git 工具,还有什么快速打开模拟器目录,Derived Data 目录的小工具,我觉得这实在是太愚蠢了。放着大好的学习 Git 和 shell 的机会不要,把时间浪?#35328;?#20102;解一个软件的 GUI 上,我觉得是完全不能接受的。尤其是对于 git 来说,我建议多问问自己,学会的是 git 还是 sourcetree 的按钮,将来换一个 GUI 工具,毕生功力还剩几成??#21155;?#26576;些小工具,这种绝佳的练手机会,怎么能拱手相让给别的软件呢,尤其是脚本可以自动化,软件就几乎不可能了。

啰啰嗦嗦说了很多,其实总结下来没几点:

1、学习一个技术之前不?#26009;人?#32771;一下它在整个互联网体系?#24515;?#21069;的位置,有什么样的未来,会对个人价值有多大的提高

2、数据结构,操作?#20302;常?#32534;译原理,计算机网络这些基础知识不能丢,它决定了你看问题时候的高度,深?#32676;退?#36335;

3、未来需要特定技术领域里的专?#29275;?#26356;需要全栈,归根结?#36164;?#38656;要最大化自己的价值。我个人的建议是掌握好脚本语言提高效?#21097;?#25171;通前后端,这样无论在外包,独角兽创业公司还是大公司,都能独当一面

4、学习?#24405;?#26415;时要避免好高骛远或者盲目迷信大厂,转发或艾特印象?#22987;?#25552;高不了自己,要结合实际场景,最重要的是要能落地!

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。

文章来源于网络,如有侵权,请联系小编删除。


分享到:
我来说两句
facelist
您需要登?#24049;?#25165;可以评论 登录 | 立即注册
所有评论(0)
关闭

每日头条

通过?#22987;?#35746;阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
[email protected]
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

返回顶部
斗地主怎样记牌 黑龙江体彩6+1走势图 湖南麻将怎么打 古怪猴子中奖图片 阿拉维斯家犬 江西快三走势图基本图 广西淘宝快3走势图表官网 2012年彩票销售额 吉祥棋牌下载安装 好看视频大胸美女捕鱼 广岛三箭足球俱乐部