[iOS 开发] iOS 开发从菜鸟到高手?听听他们怎么说
不知不觉,做 iOS 开发也有一年多时间了,算是经历了从入门到初级的过程,最近也感到些许迷茫,不知道以后的路怎么走。下周马上就要加入一家新公司去独立开发一个项目了,希望接下来这一年能有不错的收获,交得出一份拿得出手的成绩单。趁这两天有空,找了些业内前辈们的经验分享,看看他们怎么说的,希望自己能静下心来,一步一个脚印走下去吧!
1. iOS开发如何快速成长?(叶孤城)
- 勇于接受挑战,实现有难度的需求
“不管完成度如何,我在两个月后东拼西凑都给他弄出来了。”
- 可以接触到新知识
- 锻炼自学能力
- 借鉴一些优秀的作品
- 学习优秀的实现方案/第三方库
自己摸索,独立解决问题,学会触类旁通,举一反三
多读源码
- 既要“走心”,又要“不求甚解”
- 要看就看经典的
- 最好是看和最近的工作相关的
**多看国外的 iOS 开发网站和 blog **
“第一手的开发资料永远都是英文的,而且以英语为母语的开发者学起新技术来有天然的优势。”
- 学无止境
有句话叫技多不压身,编程本来就是一个更新换代非常快的工作.每年都有新的技术出现,我认为要成为一个出色的程序员只掌握一门语言肯定是不行的。
- 打好基础
- 研究一个自己感兴趣的领域
- 学习一门自己感兴趣的语言
学习的圈子特别重要!!
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:761407670 进群密码‘博客’,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
2. 成长为 iOS 大 V 的秘密(唐巧)
- 巧哥的成就:
- 从开始学习 iOS 开发半年后,就开始独立负责 iOS 端的开发工作。
从 2013 年 1 月创建「iOS 开发」微信公众帐号,然后每周坚持更新,现在有超过 3 万 5 千的订阅量。
从 2013 年底开始撰写《iOS 开发进阶》,2014 年底完成。另外我还写了一年多 「iOS 开发周报」。
将公司的网络库,Key-Value 存储库开源,GitHub 上 Star 数上千。
坚持写 iOS 技术博客,现在完成了超过 100 篇原创文章,很多发表在 InfoQ 和 《程序员》杂志上。
入门:斯坦福的 iOS 开发视频课程
寻找志同道合的朋友,一起交流、讨论、分享
提高:
看 WWDC 视频
做笔记
读优秀 iOS 博客
写作
心得:
利用好碎片时间
“在我看来,当你做不好某一件事情时,时间通常是最大的借口。”
- 提高工作的效率,使用番茄工作法,让自己能够在短时间内集中精力做一件事情
- 写代码之前,先在纸上把逻辑写清楚
- 平衡好时间和代码质量
- 培养习惯
“不止是个人,组织的协作也应该培养习惯。”
- 设立目标
“把大目标拆分成小的阶段性目标这一点很重要,它使得整体的时间安排是适当的,不会刚开始过紧或过松。另一方面,很一次完成小任务的满足感,可以适当让我们的大脑产生喜悦,最终使得任务更容易被搞定。”
- 寻找成就感
- 适度坚持
“总会有一些事情,你不那么容易找到目标和成就感。”
3. iOS开发如何提高(唐巧)
- 阅读高质量的博客
- 读经典书籍
- 看 WWDC 视频
- 看苹果的官方文档
- 看优秀开源项目的代码
- 多写代码,多思考
- 多和同行交流
- 乐于分享
4. 软件开发中的上帝模式与农民模式(唐巧)
- 上帝模式的技巧: 写代码前,构思好整个应用的架构设计,如何进行类之间的组织和信息的传递。
“在软件开发书籍中,涉及上帝模式的图书也有很多,例如《设计模式》和《重构》,但是好的架构都是无法脱离实际业务的,所以大多数程序员都无法通过简单地看书就提高自己的上帝模式的能力,更多的提高方式是工作一段时间,有一些实际体会之后再看书,就能够理解书中的道理。”
农民模式的技巧
- 效率第一,保证自己的专注力,番茄工作法
- 应该尽量采用「宽度优先搜索」的方式来完成任务,而不是「深度优先搜索」的方式
- 尽量提升自己的代码输入效率
提升上帝模式能力
- 多分析一些优秀的开源软件的架构
- 阅读一些相关的书籍,如《设计模式》,《重构》,《代码大全》等
- 重构,结合自身的业务特点,多思考多讨论,培养出自己对于架构的一些心得
提升农民模式效率
番茄工作法
时间记录
平时多学习一些最新的 iOS 开发知识,减少知识盲区
专注于自己的精力是否集中,如果觉得太累,就活动一下或者适当休息,不应该强迫自己 Coding
警惕混搭模式
5. 王巍访谈:关于Swift学习和AppleWatch开发的一些建议(CocoaChina)
- 先学习 Objective-C 还是 Swift?
“其实不论是 Objective-C 还是 Swift,现在的目的都是写 iOS 和 OSX 的 app,那么其实对于绝大多是情况来说,语言本身并不是非常重要,使用语言去和 Cocoa 以及 CocoaTouch 交互才是我们日常开发中最常用到的技能。Cocoa 的编程思想并没有随着语言的变化发生什么大改变,所以还是应该把对于框架的学习放在首位。”
- 现在用 Objective-C 写,怎么为以后学 Swift 做铺垫呢?
“现在可能在工作中使用 Objective-C 的开发者还是占大多数,我的建议是在使用 Objective-C 的时候,也顺便可以“想象”一下如何用 Swift 更好地实现同样的事情。如果不是特别赶进度的话,甚至可以再用 Swift 真实地实现一遍。因为两种语言最大的区别就是 Swift 拥有更强的类型检查和安全性,所以如果能够特别关注这点的话,之后快速切换到新的语言去就不会有什么问题。”
- 对于学习Swift的开发者,入门以后应该如何进一步提高?
“可以尽快开始动手实践开发一些 app。给自己定一个目标,比如花上几天时间或者一周的时间用 Swift 做一个能上架的简单 app 之类的。这个 app 不需要有特别复杂的功能,可能就是一个简单的天气查询提醒,或者是展示附近好吃又便宜的餐饮店面。与简单地写个 demo 相比,实际做一个真正的 app 对能力的提升所在的层次是完全不同的,后者需要更多的全局考虑和综合能力。不少问题只有在实践中才会遇到,才会被解决,而对应的能力也才能被提升。所以入门之后进一步提升的最好的路子就是实践,然后在实践中再去学习没有掌握的剩下的东西。
另外要注意的是,因为现在 Swift 还很新,很多东西并没有现成的方案或者所谓的最佳实践。在遇到这样的情况时,最好询问下你身边的资深 iOS 或者 Objective-C 的开发者。因为 Swift 和 Objective-C 其实是共通的,很多经验是可以参照借鉴的。”
6. 曾宪华访谈:公司与个人参与iOS开源的心得(CocoaChina)
- 参与开源的感受
“从我自己的体验来看,参与开源项目对于程序员来讲是一种高效、快速学习成长的方法,不仅如此,如果你是一个技术爱好者,参与开源项目你有可能找到自己的兴趣、自己的优势等等,进而从事自己喜欢的工作,那种感觉真的太爽了。”
- 参与开源提升团队协作能力
“另外参与开源在提升团队协作能力上有着比较明显的作用,一个有用的Issue反馈、有效的交流以及热情的帮助都会让我们成长,从而运用到团队协作中去,那这个收获可见而知,不但让你在团队中突出,还能让你认识很多大神。”
- 参与开源可以开阔视野,提升自身能力
“另外对于一些工作繁忙的程序员,平时忙于公司的项目,空余时间通过侧面的形式(参与开源),也是提升自己整体能力一个很不错的方式。”
- 参与开源的乐趣
“参与开源的乐趣就是能把自己的优势或缺陷分享出去,并且会有人欣赏你、纠正你、谴责你。”
- 行动起来
“一个成功的开源项目,仅有自己一个人往往是不够的,通过多人合作的模式,把各自优点发挥出来,共同去维护一个有价值的、可持续发展的开源项目,最后得到收获将远远大于付出。”
7.Limboy:自学 iOS 开发的一些经验(蘑菇街Limboy)
成长之路:基础->入门->进阶->高级
- 每个阶段都要有相应的目标和学习方式、内容
- 英语
- 书籍
- 视频
- 练习
- 博客,网站
- 优秀源码
- 官方文档,WWDC
- 工具
“我觉得无论学习什么,「速成」的心态是最要不得的,这只会让自己变得浮躁,一知半解,整个过程也很难让自己的元学习能力得到提升。慢慢来,攻占一个城后,再去打下一个,这时心态也会平和许多。”
8.Zenny Chen访谈: iOS开发者应该关注Metal(CocoaChina)
- iOS开发者应该如何规划自己的职业发展路线?除了iOS之外,是否需要学习其他方面的技术?
“这个问题问得很好。我工作快有10年了。而iOS职业开发也就刚做满3年,呵呵。其实我觉得如果大家想往技术方向发展,那么首先要做的还是把基础打好。把基础打好之后,能应付各种新的编程语言,各种处理器、各种操作系统平台。所以我建议大家在业余时间里把传统的大学里所学的科目再巩固好,比如操作系统、数据结构、数理逻辑、计算机体系结构、汇编语言、C语言、网络通信、数据库。此外,大家也可以再熟悉一下HTML5相关技术,毕竟iOS所涉及的大多数都是移动互联网领域,所以有点HTML5知识的话会更好些。如果自己感觉C语言学得还不咋样可以再巩固它。C语言就是计算机编程领域里的数学,是所有类C编程语言的鼻祖语言,而且从TIOBE排名上大家也能看到,它目前一直处于第一位。另外,Objective-C完美无缝地兼容C语言,就从这点上来说,C语言仍然是十分重要的。
C、Objective-C与Swift的关系是:Swift是对Objective-C的封装,尽管这封装得改动很大,以至于你确实看不出它仍然是类C 语言;而Objective-C则是对C语言的封装,在C语言的基础上又添加了面向对象以及反射动态特性。所以,学好了C对于iOS开发来说非常有帮助。
上述主要是讲iOS职业技术开发者如何能进一步提升技术能力。其实归根结底,就是把基础打好,然后可以尝试去专某一更专业的领域,比如通信领域、3D图形领域、图像识别领域等。因为大凡做iOS的基本都是在应用层上捣鼓,应用层老实说做个一年两年能基本掌握,再继续下去对技术提升不大。
有些iOS开发者想要提升自己在公司的地位,我觉得很大程度上取决于自己对所在公司的核心业务的了解情况。对于中小企业,产品设计人员以及策划不可能把产品描述得很细,有不少地方需要开发者对设计意图做思维扩展。如果你对自己公司的企业文化、工作流程、核心业务逻辑都能很好把握的话,就能够做出超出期望的产品,再加上好好处理人际关系,要提升地位也不会是很困难的事情。
当然,我碰到比较多的还是很多年轻的开发者对未来感到迷茫,不知道今后的路该怎么走。所以,我认为对于那些开发者自己先把心沉静下来,然后把基础打好,然后思考自己今后的技术走向。毕竟,iOS开发在很长一段时间以内都将是热门的技术岗位。
要想向更高的职位发展,除了技术之外,我认为还要有对产品的把控、甚至市场新动向的嗅觉。既然已经在这个行业了就必须学会如何不断学习,快速应变市场的新热 点。目前app开发处于快速发展变化的移动互联网的中心,开发者有机会做出引领潮流甚至改变世界的作品,这些经历本身就是宝贵的财富,只要打好基础,做足 准备,抓住机遇,未来的前途一定是光明的。”
9.我的iOS成长之路-3-iOS开发个人提升(破船之家)
- 饱览群书:高质量,英文书籍,博文,WWDC,斯坦福公开课,github,stackoverflow
- 跟着项目一起成长
- 与同行交流
- 做一些分享
10.iOS 高级工程师是怎么进阶的?(知乎)
11.学习的圈子特别重要!!
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:761407670 进群密码‘博客’,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!