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, 画界面, 写业务, 调接口, 那真的需要加把劲了, 因为这个时代正在淘汰这些低级工作.
有了改变自己认知的契机, 我们就来问问自己三个问题:
你所拥有的技术储备真的是市场上需要的吗?
面对层出不穷的新兴技术, 如何才能做好技术选型?
你真的有把握能够在技术这条路上走到底吗?
市场数据
先不急着回答上述的问题, 在做所有决定之前我们需要看一下市场所呈现的数据, 而不是人云亦云, 不然就很容易被现在的某些知识付费收智商税
, 鼓吹碎片化学习, 记住, 没有数据支撑纯靠思辨的产物不是知识
, 你仅仅获得的是获取知识的感觉
. 知识是需要全面系统的学习并进行场景验证的, 所以在如何规划之前先看看数据.
上图是艾瑞指数
的数据, 不用去管媒体如何煽动, 数据表明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
写在最后
文章开头所说的精准学习, 其实你已经大概的了解了, 其实道理很简单, 就是输出倒逼输入
, 只有你真正知道自己要做什么了, 你学习的方向就会变的异常的明确, 愿你突破视野的限制
, 成为更好的自己.
以上。