最近公众号写了两周的面试题,题目有少量涉及算法,有少量涉及底层原理。总有一些人在后台问:面试这个有意义吗?我不会还不是照样做 App。还有一些人说:这些题只适合问应届生。于是我今天就想聊聊这个话题:搞 iOS 开发,研究算法和底层有意义吗?
雷军说:站在风口上,猪都能飞起来。
但是雷军没有说,风口上的风不是一直都吹的。
飞起来的猪,如果没有抓住机会到达彼岸,那么暂时飞一阵子之后,还是会重重地摔到地上。
而 iOS 行业,就是一个最好的例子。
2012 年-2014 年,整个移动开发大火,根本就招不到移动开发的人才,各个公司没有办法,只能让服务器端的同学转岗来学习 iOS 开发。那个时候真是幸福,很多非科班出身的同学,在培训机构经过短短 3 个月的培训,然后就可以拿到上万的薪水。
但是,市场最大的特点就是会自我调节,短短时间内,iOS 开发者就充斥在市场上了,这个市场竟然饱和了。能不饱和吗?有一个读者给我留言,说他以前是做厨师的,因为培训机构说做 iOS 开发收入高,就选择了做开发。
我觉得大家应该理性思考这件事情,如果,我是说如果,iOS 开发真的可以培训 3 个月达到要求,那为什么这个职位的薪资比别的行业远高很多?学当厨师,学修理汽车,学理发,哪一个是短短 3 个月就能够学好的?而厨师,汽车修理工,理发师凭什么工资要比你拿得少?或者这么说,这些厨师,汽车修理工,理发师都不干了,都花 3 个月来学习 iOS 开发,市场会怎么反应?
所以说,你只能选择相信下面两种结论中的一个:
如果你是培训机构出来的,那么赶紧想想自己喜不喜欢这个行业,愿不愿意投入至少一年来积累学习,搞清楚数据结构,操作系统,计算机网络,设计模式,基础算法。计算机程序实际上是逻辑,花时间锻炼自己的逻辑能力,做一些基础的算法题目,这对于你面试也有帮助。
如果你觉得面试的时候考这些没有意义,那么你就再想想你是不是认同这个结论:如果随便一个人都能学会 iOS 开发,你为什么拿那么高薪水,别的公司为什么招你?
如果你真要纠结意义,我可以说得更现实一点,这个行业这么多人想进来,就和每年上千万人想考公务员一样,面试还不是怎么难怎么来啊,而且你真的以为计算机基础真的就一定用不了吗?即便是只有 1% 的地方需要用到计算机基础帮助我们写出更好的 iOS 开发代码,那面试的公司也会问这些的,就像你可能完全不理解 Runloop 是什么也可以写 iOS 程序,但是面试的时候就会考 Runloop,因为就是有那么 1%,甚至 0.1% 的机会你工作中可能会用到它。
不止是 iOS 开发,你以为高考选拔在干嘛?高考考那么难的数学有意义吗?高考语文需要背那么多文章有意义吗?那不然怎么办?每年只有那么一点儿人可以进清华北大,不考难一些,大家分数都一样,怎么公平地选出谁上清华北大?反过来,高考考的那些,真的就完全没有意义吗?是不是还是相对公平地把聪明又努力的人挑出来了?
大家真的别太较真,这个世界就是这么运作的,你觉得做 iOS 开发学算法没有意义,学底层原理没有意义,那你可以不学,但是世界就是这么选拔人才的。
最后,真的不要再问我意义了,我还在风口忙着减肥呢!是的,其实我也很水,我也是一只被风吹起来的猪。