前言:这里不讲技术,不喝鸡汤,这里有的只是一位一线iOS程序猿的所见、所闻、所触、所感。
主人公:小白(作者) 年龄: 1岁半
准确地讲,本人作为iOS程序猿,已经在这条路上默默的走了一年半。还记得去年三月份从我姐送了我一部iPhone6开始,我便一发不可收拾,随即入手了一台MacBook Air。相对于大学期间的迷茫,我暂时收起了困惑的心,固执而又充满好奇的开始学习iOS开发。
为什么要学习iOS?
背景
本人在韩留学四年,学了四年的信息通信专业,毕业论文还是关于天线方面的,但是,讲真,我对硬件以及信号处理方面真的不擅长也不感冒。软件就不一样了,是那么的真实,那么的容易上手,所以最后抛弃了四年的所学,对我有用的仅仅是大学基础课程里的C语言基础与应用,概率与统计以及高等数学等理工科的入门级课程了。原因
至于选择iOS开发作为以后的学习与工作的对象,初衷很简单:看着逼格高大上!
小结:说了这么多废话,无非想表达的就是:很多时候选择去做一件事情的初衷都很简单,只是走着走着,各种因素夹杂进来之后,就变得复杂而又不那么单纯了。
怎么学习iOS开发?
必要条件
学习的过程枯燥又乏味,知识点的堆叠,看的我很多次想放弃,不过如果真的放弃了,那今天的标题应该就是《iOS开发,从入门到放弃》了吧。但是这二十多年也不是白过的,学习成绩不算突出,体格方面更显消瘦,唯独“坚持”二字被我很好的执行,这也算是一种偏执吧,对我来说,即使是真理,我也会亲自去实践,我只相信亲身的体验以及最终的结果,没有什么事情可以中途打断我。-
怎么学?
- 如果真的是0基础,我还是建议去培训机构进行入门训练,大部分的培训机构还是以基础为主,至于他们宣传的高薪就业之类的话,听听罢了;
有些许基础的就可以在网上找相关的视频或者电子书进行学习与实践,不停的敲代码,记在脑子里再说。知识的拓展是建立在对它的透彻了解的基础上的。不停的实践就会总结出规律,反复的操作就会有更深刻的理解。
学习完基础之后,UI以及三方框架的应用方面,就得找一些小项目进行练手了。github或者cocoaChina有很多高仿的项目,可以一边学习一边照着撸代码了。项目的选择方面就是要从小开始,针对每一个UI控件的运用,等到所有控件都熟练掌握之后,再开始仿写一些完整的项目,从简到难,一步一步深入。
小结:具体的学习方法,网上有很多,优秀的教程也很多,我在这里就不再赘述,很多知识,翻越了那堵墙,都会有的。对我来说,最重要的就是--坚持。
学习与开发中的点滴记录
- 关于第一份工作
费尽心思学了小半年,总算功夫不负有心人,找到了第一份工作,关于电商的应用开发。
刚入职的时候,面对实实在在的项目,心里真的发虚,只能指望同时入职的那位看着胸有成竹的老兄,但世事难料,那位仁兄就干了一星期就跑路了......结果老板也不再招人,只留我一人在岗位上坚守。
要说那会儿会什么,真的都只是基础,幸好我所做的工作主要就是老项目的维护与升级。那个时候,没日没夜的研究老项目代码,学习各种实操经验,可以说,那个时候的我,进步非常快,用了两个月的时间,就已经搞定电商应用,不管是商品的展示,还是支付宝购买,添加购物车,卡务中心的会员卡绑卡解卡充值业务,都得心应手。
之后,由于业务需要,又做了诸如手机与POS机对接的应用,主要运用的就是蓝牙功能,以及OC与JS进行交互的混合app的开发。也就是从那个时候开始,我拓宽了开发的视野,关于混合开发,关于react native, 关于Cordova都做了相关的了解与学习。
讲真,那会儿真的对混合开发很痴迷,以至于那会除了工作我已经不再对OC进行深入的学习了,而是开始研究JS,研究Html,而且还在公司大肆宣扬混合开发的各种优势,诸如一人搞定前端之类的言论。
结果一语成谶,年终的时候,我被离职了。
现在想来,初入职场的我,不知道水的深浅,简单的想法有时却会引火烧身。
- 关于第二份工作
这份工作来自于前同事内推,而这份工作主要是给经纪机构推荐草根艺人,而艺人们也可以通过我们公司的平台进行才艺视频的展示,从而获取演艺预约。
这个项目是跟我前同事合作开发的,当时考虑到合作开发,天天复制粘贴合并代码的方式只持续了两星期,我就厌倦了,于是我选中了码云作为代码的托管平台,那里的个人私有仓库不仅免费,而且操作流程简单,很适合我这种新手,于是我将项目放在了上面,然后客户端使用SourceTree进行操作。
这个项目很自由,对我来说,我的同事一心只为项目的功能,并不过多插手我对于项目的各种尝试,所以我所能做的事情很多。那个时候JSPatch刚出来不久,我便将它配置在项目里,为此特意进行了JS的相关强化,所幸其作者提供了原生代码与JS代码的转换器,将代码整体转换之后再稍加修改就可以使用。而这个技术在当时也恰好修复了上线项目的一处BUG,令项目顺利运行,不至于点击用户头像就崩溃。
对于视频的录制压缩上传以及特效的处理都在当时做了相应的学习,GPUImage也进行了深入的学习与运用。而今年年初的计划也是对视频处理方面进行更深入的应用,可惜事与愿违,后来的一些事情(以后再细说)让我匆匆离开了这家公司。
小结:上班的时候,与同事之谈项目的具体事宜,下班的时候,只聊工作以外的内容,而且要谨言慎行,不然无形中开罪了某某都会给自己带来不必要的麻烦。总的来说这半年的经验,让我在协同开发、线上热修复以及视频处理方面有了更深入的学习与实践。当然,由于app倾向于娱乐,主流的UI框架的使用都更加娴熟,各种布局都了然于胸,印象笔记里收集的资料也更加全面与实用。
- 关于现在
这个就留到以后再说了,现在也只是入职了三个月而已,主要做的内容又回到了当初的电商类团购主题,工作方面已经算的上是得心应手。工作之余就是学习Swift3.0,以及设计一些sideProject的原型,然后写写文章,记记笔记。
生活仿佛又回到了原点,唯一可喜的就是这份工作就在我家附近,生活压力骤降,在外漂泊多年的我,最后还是回到了最初的起点。
总结:一年多的开发经历,不管是为人处世还是技术方面,都有很大的成长。开发方面似乎也到了瓶颈,单纯的项目实现已经没有问题,但是深入包括到线程处理,以及响应式编程,去模型化的运用就很浅薄乃至无知,项目里很难用到这些技术,只能通过字面的意思去学习理解。Swift的学习也进入到了最后阶段, 接下来更多的就是应用了,以前写的项目可能都会再用新语言重构一遍。
总的来说,现阶段的工作很适合我,没有加班,有充足的时间与精力去写文章,总结过往的得失。
- 关于我
妥妥的技术宅男,单身汪,但追求时尚动感新元素。
每天白天上班,空闲时间看看股市行情(Ps:大学期间的爱好),特别关注实时资讯、科技新闻。下班回家用Keep坚持锻炼1小时,然后洗澡吃饭打豆豆(不要问我豆豆是谁,可以理解为撸代码)。
目前的生活节奏就是以上。
后记: 经常有经理或者老板问我做某某项目,在某某方面上有技术难点吗?以前我可能会草率的回答有,但是经历了这么多之后,我只想说,没有。所有技术上的问题都不是问题,总会根据各种资料去查找出解决方案,但是产品真正的难点在于思路在于流程。
现在的我大多数时间都不是在撸代码,而是在思考,主要是逻辑的实现与思路的完善。
这就是现阶段身为一名iOS开发者的自白书,时间在继续,我的旅程显然才刚刚开始。