2012年初决定跳出通信行业转型进入互联网界,至今算来已经有3年。经过这三年,基本成了一个“全能”开发者,服务器端,客户端,web前端,产品和交互,产品团队管理都经历过,不知不觉成了最近讨论很多的“全栈开发”;当然,主要是在iOS开发这块。下面谈谈iOS的开发之路。iOS的开发属于自学成才,没有任何的师傅带我入门,包括在这三年的过程中也没碰到过让我能佩服的开发者。
第一个涉及iOS开发是2012年初的一个朋友外包项目,要求做android和iphone;当时我们有个小团队,前面做个android端,但是iphone是没有任何经验,只能找外包了。最后找到了个人开发者。这是第一次直面iOS开发,但没实际参与代码。如今看来这个app 的开发相当简单,没有用户管理,没有用户交流功能,是个纯粹展示性app;这个开发者是个熟手,大概2周就完成了从开发到测试完成。这个项目最终对我以后彻底进入iOS开发起了决定作用。
之后小团队解散各奔东西后,我去了一家智能家居公司,做iOS开发。我展示的例子就是前一个外包项目的iOS工程。说实在的心里有点怕怕的,毕竟没有实际coding过。当时特意把入职时间往后推了1周,为了在家紧急突击。入职后,加我一共2个iOS开发,另外一个是个做了1年不到的iOS开发,我也不能去问他,就怕不小心露馅了。由于不熟练,到处是不懂的地方,只能是看看之前的外包项目,从它里面学习;另外就是看公司现在的代码;最后一招就是上网搜索。作为从通信行业出来的人,也找不到懂iOS开发的朋友。这段时间倒是发现了一个网站
www.cocoachina.com。目前我有问题,还是会去搜索下内容。在这家公司一共呆了半年时间,在这里可以所把coding熟练的操作起来了。事后来看,这段时间没有沉淀下可以重复使用的模块和框架。而且那个iOS开发小伙能力也有,也没法从他那里学习到什么。最后我离开的时候,这个项目里75%的代码都是我写的了。
2013年9月,来到了一个O2O产品的公司,这个产品最终没有做起来,在O2O这行业是起了个早,但是连个晚集都没赶上。在这家公司我是唯一的iOS开发,过去前,移动端团队只有android开发。而且android已经开始开发,一共3个android开发。我的压力相当大,1,要赶上大家的进度;2,我是以一个人来追3个人android开发进度。3,全新搭建框架,但是之前没有什么积累。那段时间,经常一个人加班到9:30,周六,周日也去公司。时常时公司只有我一个人。这段时间我找到另一个网站 www.code4app.com,这个网站主要展示其他人开发好的可直接使用的代码,主要是一些UI特效,交互功能;网站上所有的例子都有动态图可以直接看到效果,我就不需要先下载运行再确认是不是我想要的了;而且网站上所有例子都是保证可以运行过的。效率,这是我喜欢这个网站的原因。轮子,找其他人建造好的轮子可以有效提高效率。公司里,当时方向经常变换,我前后做了3款APP,再加一款iPad应用。因为注重积累,有了重复可以模块;而且有了例子可以参考,快速提高开发效率。有了积累后面几款APP的开发基本可以赶上android端的开发进度。在后期,带了一个android开发人员一起来做ipad上的应用,第一次带徒弟。在公司的10个月里,想通了iOS开发里的很多原理。这种感觉,就是那种忽然打通任督二脉的感觉,会感觉功力突然提升了,设置看整个世界的视野都不一样了。项目太赶,也没时间去做复盘和细致功能的了解。其实还有很多不懂的问题点,都没有时间去仔细了解。
2014年5月底去到另外个公司做一个微商产品,这个产品失败了,团队也失败了,但是老板却赚钱了,呵呵 不用问我为什么产品失败也能赚钱,这就是老板运作的能力。在这家公司我负责搭团队,带项目,做产品,管技术。整个项目没有涉及到客户端开发,在这段时间里,没有怎么动手写过代码。这是一段最让我难忘的日子,经历的团队从无到有,再由有到无;产品从0开始,几经变化方向,跌宕起伏;用户从0到2014年11月份日活跃10w人,最后人流又越来越少。实际操盘了产品的设计,技术的打击,人员的管理,产品的运营讨论。可以说一个互联网产品的存活永远只有半年时间,不是被人干掉,就是干掉别人。
2015年2月底决定离开,找个安静的地方对前三年的东西,包括技术,产品,团队管理方面做个总结,沉淀;在目前公司负责移动端的团队。选择回归,主要是想做个回顾。另外对以前没有深究的iOS开发问题做个研究,重新系统整理下客户端开发知识。由于iOS的开发我是自学,没有接触过能让我感觉不错的大牛,也没参与过大公司的项目;对于目前采用的框架和解决方案是否还有更好,我无从得知。所有计划和一些大牛交流。另外就是研究开源的app,他山之石可以攻玉。 最近看到一个github上的总结帖 https://github.com/Aufree/trip-to-iOS/blob/master/Top-100.md
,上面列了很多精华内容,包括一些著名iOS开发者博客,通过他们可以了解不少有用信息。此外在研究一个开源app https://github.com/guojiubo/PlainReader,看看是否有可以借鉴的地方。
经验之谈:
1,多写博客,迫使自己总结和思考;
2,注意收集和整理资料,并用百度网盘来管理;
3,用印象笔记来做备忘录;
4,在github上做个开源项目;
5,以上的资料在面试的时候都能排上用途;
6,跳槽最好的时候不在年初,而是在下半年,也就是7月份以后;这个时候跳槽的人少,没人和你竞争;这个时候公司如果招人都是非常亟需,所有价格都好谈。不要贪恋一点年底奖金,那是不确定因素,而且你多谈些薪水,那点钱也能回来。
看到的几个趋势:
1,3年前,iOS开发的收入明显高于andorid开发。这主要是由于iOS开发入门的门槛高,objective-c是个新语种,且对英语有要求,而且一套开发设备不便宜(apple开发者账号,一台苹果pc或苹果笔记本,一部手机),会的人少当然就贵。如今看来,android开发和iphone开放的薪水基本平了,利益导向的结果。大家看到ios开发收入高,都去学了。
2,对开发人才的需求会越来越多:对开发人才来讲,目前是互联网最好的时代,互联网+的概念导致很多传统企业加入对互联网人才的竞争。也就是说,互联网人才的需求增加了。之前看过一篇文章,说是技术将会成为一个每个公司都必须要有的工种。呵呵 这个会是个多大的市场啊!怪不得现在各类技术招聘网站这么红火。
3,对开发人才来讲,这是个最坏的时代。大家变的浮躁了,装电脑的人也开始学习移动端开发,甚至一个做BD的老朋友(做大客户的销售)问我能不能教他学习开发;会吹牛的人容易拿到高薪水。普遍来讲,大家更想通过跳槽提升收入,而不是通过提升技能。这波热潮时来了,并非说大家要假装清高,有钱不要那是傻子;只是大家要更加聪明的利用这波热潮获取自己想要的东西。
4,移动端开发技术含量不高:在移动端开发自诩为高端人才的同时,冷静看看自己的价值;其实在我看来,移动端开发和web前端开发工作内容没有两样,做的就是页面交互而已。所以我们会看到目前web前端的收入也在不断被捧高。
5,移动端开发要迅速成为全栈开发,否则会被淘汰:团队里会被提拔的是最熟悉业务的人。客户端开发是不了解整体内容的,因为他只负责了和终端业务交互的部分。打个比方,如果你是做电商系统的,你能画出一个订单的状态迁移图吗。技术团队里最熟悉业务的人是服务器端开发,所以我们看到很多的leader都是做服务端出身的,至少他了解服务端业务。客户端开发要进一步提升,需要向着成为全栈的方向发展。君不见,连前端都开始切入服务器开发了,node.js就是例子。