iOS开发如何快速成长?
NO.1 毫无疑问,做有难度的项目.
当时正在快乐的当一只小菜鸡的我沉浸在了解了delegate原来是回调的意思正充满着满满的幸福感的时候,被产品告知必须完成以下几个功能.
- 完成类似于vine的短视频录制功能和画中画(我记得当时vine的版本只到1.X),而且AVFoundation什么的完全没听过.
- 完成City Guides里的地图动画.(如果有不清楚这个的去appstore下一个国家地理杂志出的City Guides,你可以观摩一下地图的交互设计)
- 做一个扇形的menu,开启和闭合的动画参考真实世界的扇子打开和收起.
- TableView的background用实时动态模糊效果(当时是iOS6.0,完全不知道动态模糊大概是什么样的)
- 寻找不规则范围里的所有基于GPS的搜索结果.(当时我们有个创意是用户随便用指头上一划,我们提供这个区域内的所有相关搜索结果).
所有的东西在两个月内完成.
结果是,不管完成度如何,我在两个月后东拼西凑都给他弄出来了.
通过找短视频录制,我知道了AVFoundation,视频剪辑.
通过模仿CityGuides的地图,我知道了他们的地图是用一个叫做mapbox的第三方地图做的.因为我用了google地图,高德地图,百度地图和原生地图,都不支持custom tiles.大致了解了LBS的东西.
通过做实时动态模糊,我知道了有个第三方库叫GPUImage,也知道了有个东西叫CADisplayLink.
通过做扇形menu,我学会了CoreAnimation和贝赛尔曲线.
通过搜索在不规则范围内的所有点,我知道了射线法.
试想一下,如果你做的是一个界面粗糙,逻辑简单,交互乏味的app, 那么相应的,从中获取的东西肯定是不多的.所以,当你的技术进步缓慢的时候,很可能就是缺乏挑战的时候.
NO.2 尽量少抱大腿,或者压根就别抱大腿
不知道你们有没有这种体会,在你寻找问题A的答案,不停的网上搜索,阅读代码的时候很多时候可能会顺带的把困惑已久的问题B和问题C的答案找到了.这时候往往会恍然大悟,哦,原来还能这么写.
那么如果你的公司恰巧有个大牛,基本功扎实,业务逻辑烂熟于胸,态度温和,来者不拒.你每每碰到什么问题过去问,总能得到完美的解答,甚至大牛会帮你"结对编程",直接代码都给你敲了.你肯定会感到幸福爆棚.
但是,这意味着,你丧失了很多触类旁通的机会.
我当年也是比较迷信各种大牛的,加了很多开发群,有问题积极提问.后来就感觉这样很蠢.
1是答者寥寥,顶多给你提个方向.
2是感觉就算是技术很好地人,在不了解你代码的情况下也不大可能直接告诉你正确答案.
所以,凡事靠自己,是个很好地习惯.少麻烦别人,还能促使自己进步.何乐而不为呢?
NO.3 多读源码
大家对读源码有个错误的认知,觉得不读懂每句话就不叫读源码.
其实不是这样的,你完全可以用读网络小说的态度来读源码,觉得这段写的看不懂,你看的不爽,直接略过.用五柳先生的话就是,不求甚解.
这样反复看反复看,而且随着平时代码量的增加,有些以前看不懂的地方也会慢慢豁然开朗,当然,该查的地方还是要查,也不能略过略过的把所有代码都略过了.
但是读源码也不能盲目的看,最好是看和最近的工作相关的.比如,你最近在搞一些与网络联系比较紧的项目,那肯定要找AFNetworking这种经典的来看.如果最近在搞图像处理,那肯定要找GPUImage或者CoreImage方面的源码来看.
因为这样和项目结合比较紧,你看的代码和你写的代码很容易结合在一起,事半功倍.
NO.4 多读国外的iOS开发网站和blog
翻墙软件肯定是要有的.你要知道,第一手的开发资料永远都是英文的,而且以英语为母语的开发者学起新技术来有天然的优势.举个例子,最早我有个法国
同事(虽然法国人的英语普遍比较烂),学习新技能可以用神速来形容,以前开发的一个模块需要用到cocos2d,他花了不到一个周的时间就自学
cocos2d把东西搞出来了.
要把看Raywenderlich和nshipster还有objc.io当做生活习惯来看.而且现在的国人开发环境真的比早年的程序员幸福太多了.swift刚出没到一个月就有团队全部翻译完了那本官方指南.所以,现在学不好编程是没有任何借口的.
而且,说自己英语不好而拒绝看英文文档的人,我感觉完全是态度有问题.这种文档类的资料,基本没有俚语或者日常用语,高中的那些英文基础都够用了,随时备一本词典,随看随查,是完全没有问题的.
NO.5 要孜孜不倦的学习
有句话叫技多不压身,编程本来就是一个更新换代非常快的工作.每年都有新的技术出现,我认为要成为一个出色的程序员只掌握一门语言肯定是不行的.
那么,要怎么选择自己的第二门,甚至第三门语言呢?
我觉得要靠自己多试试,从12月份一直到15年2月,我一直在尝试不同的语言和框架,从node.js到golang到python,中间还学了一点点erlang.
我觉得最适合iOS开发的第二门语言是python,python真的是太好用了,而且天然的适合unix系统,语法简单,各种五花八门的库,不夸张地说,应有尽有.学好了python,用处极大.
1是python与unix系统结合的特别好,你可以用python写很多脚本来提高自己的工作效率.
2是python入门极快,买一本headfirst的python教程,很快就能学会.
3是python的就业前景也非常好,就算你以后想转行,python的待遇也不比iOS差多少.
希望大家在闲暇的时候可以找一门自己感兴趣的语言学习.
最后在新的一年,祝大家技术每天都有进步,技术和money双丰收.