Castie!

正态分布, 优劣伴生

北冥有鱼,其名为鲲(kūn)。鲲之大,不知其几千里也;化而为鸟,其名为鹏。鹏之背,不知其几千里也;怒而飞,其翼若垂天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。


北海若曰:“井鼃不可以语于海者,拘于虚也;夏虫不可以语于冰者,笃于时也;曲士不可以语于道者,束于教也。今尔出于崖涘,观于大海,乃知尔丑,尔将可与语大理矣。

iOS 开发者该认真思考的「三个问题」

GitHub Repo:coderZsq.project.ios
Follow: coderZsq · GitHub
Resume: https://coderzsq.github.io/coderZsq.practice.web/

日常扯淡

大半年没有更新文章了, 可能是对自己写的内容有要求吧, 不想写一些如OC底层, 逆向入门这些像内容洗稿,东拼西凑伪原创, 修修改改换换顺序就又是一篇完全没有意义的文章. 如果你获取技术大部分的手段是看技术博客的话, 是的, 是时候调整你的视角, 扩展你的视野, 对自己有更具体的要求了.

如果你是一个iOS开发的新手, 是的, 这个职业的红利期早已过去, 随着APPL股价大跌, 以及内忧外患不断, iOS这个职业的恐慌指数在不断的增高, 已经对新手不太友好了, 如果你是一个2-3年的iOS从业人员, 每天的工作内容就是画画界面, 写写业务, 调调接口, 那你是时候改变一下自己的视角从新审视下未来的职业规划, 如果你是一个3-5年的老鸟, 掌握了一定的技术及资源, 可能这篇文章的内容已经早已在你脑海中有段时日, 只是缺乏良好的契机, 如果你是6-10年的大佬, 呵呵, 这个等级的大佬是不会耗费时间在看技术博客上了, 自然也不会看到这篇文章.

由于iOS开发, 国内并没有相关对口的专业, 所以基本上大多数开发者都是通过自学进入市场的, 有的由于是科班出身, 重点大学, 幸运的进入大厂深造, 一路顺风顺水, 使得其他的开发者只能望其项背, 多数普通的开发者都是通过培训机构进入市场的, 并没有很深的技术基础, 没有系统的学习过计算机原理的课程, 只是从培训机构快速学习了API的调用, 对其本质不是很了解, 也造成了进阶的困难, 所以现在市面上出现了很多在线技术教育, 不坏, 学习是很好的行为, 我们这里谈的是如何精准的学习.

自我接纳

如何进行精准的学习, 首先我们需要学会自我接纳, 做产品的对目标用户都会有用户画像, 用户画像存在的意义是无论你做是什么东西说什么话, 都无法取悦所有人, 这就是定位的意义, 而对自身也是一样, 你需要了解自己的定位才能进行进一步的规划.

相同的环境造就相同的价值观, 真是由于每个人的价值观不同, 造就了这个五彩缤纷的世界, 当我们作为iOS开发刚进入市场的时候, 那时候只需要会画一个TableView就能赚取可观薪水的日子早已离我们而且, 市场成熟后门槛也逐渐的提升, 所以如果你只会用Objective-C, 画界面, 写业务, 调接口, 那真的需要加把劲了, 因为这个时代正在淘汰这些低级工作.

有了改变自己认知的契机, 我们就来问问自己三个问题:

  1. 你所拥有的技术储备真的是市场上需要的吗?
  2. 面对层出不穷的新兴技术, 如何才能做好技术选型?
  3. 你真的有把握能够在技术这条路上走到底吗?

市场数据

先不急着回答上述的问题, 在做所有决定之前我们需要看一下市场所呈现的数据, 而不是人云亦云, 不然就很容易被现在的某些知识付费收智商税, 鼓吹碎片化学习, 记住, 没有数据支撑纯靠思辨的产物不是知识, 你仅仅获得的是获取知识的感觉. 知识是需要全面系统的学习并进行场景验证的, 所以在如何规划之前先看看数据.

上图是艾瑞指数的数据, 不用去管媒体如何煽动, 数据表明iOS的占有量还是比较稳定的, 所以iOS没有人要了可能真的只是一句玩笑, 因为有市场就会有需求.

我们再来看iOS设备的分布图, 可以发现目前主要群体还是使用的iPhone6/6s的设备, 可以看到iPhone8/8P,XR, 并没有卖的很好, 换机频率下降是不争的事实. 但整个行业都是如此, 所以也不用太悲观. 所以还是以提升自身技术为先.

技术储备

技术储备是很能说明一个开发者具体的能力体现的, 所以不断的学习是每一个做技术每天需要完成的课题, 以iOS举例, iOS基本技术无外乎, UI, 网络, 业务, 三个方面, 也就是上述的, 画界面, 写业务, 调接口, 是的, 这是基础能力, 但你纵览整个大前端技术栈, 本质都是这三个方面, 所以就算你在这些地方花费再多的精力, 收益是很有限的, 所以很多的开发者会想要深入学习, 会看一些官方或者是三方的一些源码, 并写一些分析放在博客上, 自以为是的以为理解了作者的想法, 沾沾自喜. 挺好, 幻象会使人快乐, 就如有些人会看runtime, 但很少人知道Facebook的fishhook, 毕竟掌握后者的技术储备和runtime不是一个量级的.

这里假设你已经熟悉了runtime源码中的底层实现, 了解了OC的实现机制, 但你并不知道这些东西的使用场景在哪里, 为什么大厂可以用这些做一些APM的东西, 而你并不知道如何入手, 首先是你的技术储备不足, 再有就是你的视角产生了偏差.

技术储备不足, 这是先天缺陷, 只能后天弥补, C/C++/Linux/ASM, 如果你想深入理解, 这些逃不过去, 你有这些基础的话, 再看runtime源码, 就会感觉非常轻松, 没有任何的困难.

视角的问题在于, 你只有技术的视角, 只会用技术来解决问题, 自以为是的以为技术能够解决任何问题, 而事实是, 技术只是一个工具, 工具就是可替换的, 而工具只会变得越来越简单, 越来越顺手. 你的如果只被技术限制住, 你的竞争力会逐年降低.

聊聊面试

面试是一个非常热的话题, 只要发随便发一篇面经, 就会有很多人关注, 笔者有幸面试过很多大厂, 如饿了么, 京东, 美团, 携程, 头条, 招行等, 面试题无外乎就是, OC原理, UIKit, 网络, 线程, 组件化, 算法, 架构, 全部都在射程范围之内, 目前对Swift和跨平台插件化也会有一些涉及, 这个部分取决于你所面试的业务线, 但是, 算法必考, 架构必谈.

其实如果你是一个有技术储备的合格的开发者, 通过面试对你来说并不是一个非常困难的事情, 因为这些东西真的并不难, 都是一些日常涉及的东西, 常规操作而已.

谈谈全栈

对于技术提升会分为两条线, 就是深度和广度, 如果你涉及过算法, 你就会知道深度优先和广度优先, 这两条线并没有孰优孰劣, 看你所在的场景, 在知识付费领域的概念就是, T字型人才, 80%人才, 100%人才, 具体选择那条线没有什么实际的意义,

在先进互联网技术栈被笼统的分为, 前端, 后端, 移动端, 数据端, 我的观点是, 全栈很有必要, 首先你需要了解一个观点, 你的价值不取决于你的能力, 而是市场的稀缺性, 成为100%的专才, 的确可以拿到头部市场, 但成本大风险高, 而做一个80%的通才, 是一个对普通人比较友好的选择, 而如果你已经是一个有技术储备合格的开发者, T字型发展也是一个合理的选择.

如何选型

现在新兴技术层出不穷, 光iOS方向就有ReactiveCocoa, ReactNative,Flutter等, 还有人工智能, 区块链等新兴技术, H5, Andriod都没学过来了, 怎么有时间研究那么多的技术, 是的, 吾生也有涯,而知也无涯, 以有涯随无涯,殆已!所以这并不是最好的学习方式.

这里你要理解一个观念,技术不能够脱离产品而独立实现, 产品不能脱离运营而独立存活, 运营脱离了用户也没有了意义, 你要理解互联网的本质其实是人的连接, 理解了这层逻辑, 反推来看你的视野就会清晰很多, 由用户产生了需求, 运营用户而产生了群体, 分析群体而打造产品, 实现产品才需要技术, 所以在没有很大基数的用户的前提下, 对技术的追求是没有任何意义的. 而当你有了用户, 你就会知道你该如何技术选型, 最经济的方法就是选择那些稳定且成效快的, 这也是为什么三方库存在的本质.

技术之外

是的, 现在你已经理解了, 技术本质只是工具, 而互联网是人与人的连接, 是思想的碰撞, 这也是为什么一些大V仅仅是运营粉丝就能够赚的可观的收益, 而那些明星级别的顶级流量自不必说.

所以一个优秀的开发者也需要学习运营和产品方面的相关知识, 需要了解用户画像, 需要了解人性, 这样在你怼产品的时候就会更有底气.

幸运的是, 你成为产品简, 产品成为你难, 所以有极强学习能力的你已经理解了, 掌握系统的重要之处. 可以试着做一些新媒体及产品, 并用技术实现, 你会发现实现自我的同时, 收获了更多的快乐.

你会理解为什么现在内容创业洗稿, 知识付费拆书的本质逻辑, 独立开发者可以站在更高的维度来看世界. 当然对于不熟悉的东西, 每走一步都异常艰难. 但我们需要被讨厌的勇气, 不是吗.

动手实践

看到这里, 你会感觉你需要学习的东西实在是太多, 终身学习是非常有必要的, 但学以致用才是本文推崇的价值观, 笔者经常挂在嘴边的一句话就是, 没有用的都是垃圾.

这个是一个非常简单的产品, 是笔者在Youtube上看到的容量增肌计划随手实现的, 在技术角度没有任何的技术含量, 仅仅是一个ORM的数据库就可以实现, 但在产品的角度, 这其实已经是一个完整的App了, 虽然只有三个界面, 但内部逻辑已经产生了闭环, 并能够提供价值.

所以以后请不要写一些没有用的Demo, 而是转变视角想想新学的技术能够用在什么场景, 能够为什么人提供便利.

提升视野

现今世界最厉害的两个武器, 一个是技术, 一个是传播, 其实每个时代都一样, 一边是王权, 一边是宗教, 所以作为开发者, 技术是赖以生存的本能, 所以你需要提升的是你的传播的能力, 你可以想一下为什么会有人发公众号, 发微博, 发抖音, 发技术博客, 他们都是做慈善的吗? 当然不是, 其本质就是为了传播, 我写这篇文章很大一部分原因就是希望你能够在我GitHub上点上Star, 其实是为了锻炼我的文笔, 更好的运营我的新媒体, 创造属于自己品牌的价值.

但是你想要传播但是没有内容的输出是不可能的, 我能够洋洋洒洒写出那么多字, 也是我思考积累的过程, 现在写文字对我来说已经是思绪的流动, 写作技巧已经是非常次要的东西了.

和技术储备一样, 你也需要提升你的知识储备, 你需要了解这个世界正在发生的事情, 你就需要科学上网, 为了实现这个场景的需求, 你就会进行这方面的技术学习, 看, 技术选型是自然形成的, 并不需要你纠结, 有了场景, 一切看起来都是那么的简单, 当你的知识储备到了一定的阶段, 你就会感觉输出倒逼输入, 你就会有发表自己观点的欲求, 你可能也会从看博客到写博客的阶段, 而我想告诉你的是, 其实你可以靠技术轻松的进行变现.

当然变现并没有说的那么简单, 你需要学习的东西很多, 首先你需要了解经济, 市场的波动, 股票对公司的影响, 了解技术, 各种前沿技术和未来的趋势, 了解这些我到时推荐你看一些知识付费的东西, 比如得到里的万维钢和王煜全的专栏, 对提升你的视野很有帮助, 但如果你想要从中学习到知识, 还是别天真了, 老老实实的系统学习, 动手去做, `记住, 没有数据支撑, 纯靠思辨的产物不是知识.

干货分享

笔者将一些iOS学习的注意点整理成项目, 包括但不限于组件化, 跨平台, 响应式, 算法, 架构, 逆向, Swift等内容.

GitHub: https://github.com/coderZsq

项目地址: https://github.com/coderZsq/coderZsq.project.ios

笔记地址: https://github.com/coderZsq/coderZsq.practice.native

写在最后

文章开头所说的精准学习, 其实你已经大概的了解了, 其实道理很简单, 就是输出倒逼输入, 只有你真正知道自己要做什么了, 你学习的方向就会变的异常的明确, 愿你突破视野的限制, 成为更好的自己.

以上。

最近的文章

iOS 有效「阅读源码」的一些思考

GitHub Repo:coderZsq.project.iosFollow: coderZsq · GitHubResume: https://coderzsq.github.io/coderZsq.practice.web/日常扯淡上一篇是第一次写纯阅读类文章, 没有贴出的任何的代码块, 也没有写任何关于技术实现, 但反响出乎意料的好, 不仅获得了掘金的年度征文人气奖, 也得到了iOS大神南峰子的肯定并转载到了知识小集, 对此只有感恩和加倍的努力.是的, 上一篇所提出的三个问题, ...…

移动开发继续阅读
更早的文章

iOS 网络性能优化浅析

GitHub Repo:coderZsq.project.iosFollow: coderZsq · GitHubResume: https://coderzsq.github.io/coderZsq.practice.web/日常扯淡emm~~ 最近有好多大厂疯狂招人, 也有很多朋友抛出了橄榄枝要来内推我, 在此我表示万分感谢, 但以小弟的简历… 真的连简历都过不了… 最近在学习Python, 真的学了Python才感受到了编程的乐趣啊, 爬虫, 自动化, 数据分析, 机器学习, 区...…

移动开发继续阅读