IOS从一无所知到精通大概需要多长时间 以及 开发者过去几年最大的成长是什么

来源:互联网 发布:认识老外的软件 编辑:程序博客网 时间:2024/04/27 08:43

几个月前,面临Android和IOS的选择,找了一些资料,大部分来自知乎,摘录如下:


——————————————————————————————————————————————————————————————

IOS从一无所知到精通大概需要多长时间?


刘虓震,女,环境咨询工程师

107 票,来自 谭永学、阳端、陆玄枵 
最近有三个相关问题都是你问的吧?我刚在其中一个回复了。现在重定向到这里来⋯⋯

正好我也在从头学iOS开发,一点个人理解供参考:

斯坦福大学有公开免费的iOS开发课程CS193P,上课视频、讲义、作业一应俱全。
这门课程的预修要求是另外两门课:CS106A/CS106B. 
这三门课的视频都有中文字幕。可惜并不全,后面会详细讲。如果你的英文程度足够好,当然就无所谓中文字幕了。

CS106A即编程方法学,该课无预修要求,是斯坦福大学的校选修课。非理工科学生也可选。第一堂课老师说:你只要知道如何开关机就能学这门课。既然你能上知乎,我想学这门课应该没有问题了。
网易公开课:v.163.com/special... (28集中文字幕全)
斯坦福公开资料:see.stanford.edu/see/course...

CS106B即抽象编程,该课的预修要求是CS106A. 所以上完前面一门课继续上这门就可以了。不过这门课的中文字幕迟迟没有翻译完成。
网易公开课:v.163.com/special...(27集翻译至第8集)
斯坦福公开资料:see.stanford.edu/see/course...

斯坦福推荐在修CS193P之前最好再修一门CS107编程范式:
see.stanford.edu/see/course...
目前没有看到公开的中文字幕,但是人人影视去年招募志愿者翻译,看情况已经在进行中了:
yyets.com/thread-2...
等你学完前两门课,可能他们也能把这门课翻译个八九不离十吧。 

CS193P在网易公开课上也有字幕,但是是针对iOS4.0版本的。斯坦福去年已经推出针对iOS5.0版本的课程。幸运的是,CocoaChina上有人自己在翻译,目前译到第12课。
CocoaChina中英字幕版:cocoachina.com/bbs/read...
斯坦福公开资料:stanford.edu/class...

CS193P学完以后,你肯定能自己制作出有意义的iOS App并将其上架了。但是要成为真正的iOS developer,个人认为还是有一定距离。做一个高效的,具备商业价值的编程人员,至少要懂一点算法。如果做个人开发者,还要略懂美工和市场推广。这里只谈算法部分。

MIT公开课里有一门算法导论,也有上课视频:
v.163.com/special... (24集译至第7集)
官方课程页面:ocw.mit.edu/courses...

但是在修这门算法导论之前需要掌握一定的数学知识,主要是离散数学。对此MIT公开课里有专门的一门Mathematics for Computer Science. 
ocw.mit.edu/courses...
这门课没有上课视频,并且毕竟是数学课,很抽象,所以学起来要吃力些。好在该课程的阅读材料,讲义和作业也有中文翻译。在上面的网页中,左侧有个“简体字”链接,点进去就可以看到了。

至于需要多长时间:
国外大学的课程一般是这样的:每一个课时需要三倍的课下学习时间。以CS106A为例,28个课时,上课本身加课下学习时间,大约是84小时。如果要学完最低限度的三门课,约250小时。如果要学完上述全部七门课,大约是590小时。根据以上的计算方式和自己每天可以投入的学习时间,相信你可以自己算出来需要多长时间。

当然,这是对一般的美国大学本科生而言的(而且是斯坦福和麻省理工的学生⋯⋯)。如果你的英文程度不够好,对这些课又没有任何基础,同时还没有同学和助教的帮助(对于这些较基础的课程,学校全程配备助教,每周面对面辅导),可以想见会需要更多时间。

所以,在此推荐我的公开课学习博客:hohopencourse.diandian.com/
以个人开发iOS App为目标,含有我全部的学习计划、笔记和作业。每天学习一小时。有问题可以私下联系我进行交流。


刘志托,IT项目经理

8 票,来自 董锐、何家春、小张 更多
操作系统是指操作系统原理 ,而不是仅仅指windows
学好基础和原理,是让你对程序运行,等有更深刻的认识,写出的代码更有效率,更健壮
但是以我个人和绝大部分的朋友来看,在学校里光学原理,没有几个是认真的。建议你先写一到二个小程序,然后再思考自己的程序可以怎么样优化,让效率更高,资源占用更少,代码更清晰,维护更简单。在有了代码经验的基础上,再回头看看代码的重构这样的书籍,会理论和实践结合比较好。再做一个多线程读同个资源,写资源的小程序,再看看操作系统原理,应该会有更深一点的理解。
ios和android开发,以我带应界毕业生的经验来看,定好一个应用程序需要做什么功能,先给自己定个小范围,功能不要太复杂,然后去开发,网上的教程很多了,3个月左右会有很大的进步,半年左右会有模有样的。
以上也仅仅是我在多年学习过程中,对技术慢慢积累,的一些学习入门的方法。入这行,每次去看一次重构、模式等,都有进一步的理解。当然也有很多时候会思维定势,转不过弯想东西,建议多诳技术论坛,多与人沟通。这样进步还会加快。
最后送给你的是,多帮助别人,别人会更加和交流,问你问题。在回答别人问题的过程中,你会收获价值感,成就感,促使你要向更高更好的地方学习,也为自己提供了动力。这个也是我在进步的过程中,比较有效的一种方式。


冯 子力,工科学生,Apple 控,日语控,想做个善…

9 票,来自 许艺彬、王宏翔、Rhythm 更多
最重要的是,我建议一定学好英文,以学习 iOS/OS 开发为主要目的的话,甚至不需要非常全面地学习英文,技术英文能力是很容易通过突击提高的。尤其不要让英文成为心理负担,而排斥英文的文档资源。

比起各种教材,请重视阅读苹果官方的文档

我个人也推荐 Stanford 在 iTunes U 推出的 iOS 开发教程,讲解比较清晰,比起一些国内教材,不容易让人学完之后仍然过长时间徘徊在大学生作业的水平。当然,这套视频教程本身作为入门级教程,也不要抱太高的期望。深入地了解和获得解决实际开发问题的能力,需要实际的长时间磨练才可能。

买一个 iOS/Mac Developer Program,通过实际项目锻炼自己的能力,不要吝惜那每年区区六百块钱,那同时也是你合法获取苹果文档的入口。

不要不知道 GitHub。在自己开始大量闭门造车之前,阅读几个上面共享出来的项目,熟悉苹果平台的设计风格和逻辑。

在实际项目开发中遇到的具体问题,强烈推荐搜索 Stack Overflow 这个技术问答网站。基本上所有问题都会找到耐心的解答。你也可以逐渐主动融入其中的问答去,只是请注意,在提问时表现出你已经做了充分的研究和探索,花别人的时间要求回答是必要的,而不只是想吃白食。另外,CocoaChina 上面的一些讨论也比较有质量,而且我们不能否认阅读中文的速度可能还是比英文稍微快一点点。

你现在还在会纠结 Xcode 和书籍介绍的操作界面不一致的入门阶段,这完全可以理解。我相信只要你多少花点时间上去,这个痛苦的阶段不会很长。之后,建议你不要限定于特定的一种或几种学习资源,要学会由概括到具体地理解苹果平台的一切。看书的应有顺序绝对不是从头到尾,而是从粗到细。学会看目录,学会用自己的探索主动地建立知识架构,而不仅是书籍的灌输和具体细节的学习。那时候,你就不会在意自己看的是什么书了。最后再重复一句,比起看书,你要做自己感兴趣的项目才提高得快。


iOS 或 Android 开发者们,你过去几年最大的成长是什么?


+-

王亞暉,做過幾款app,3年iOS開發經驗。

31 票,来自 李智辉、snuc、陈丘 更多
成長?好問題。把初戀送出去了……
======================騷氣的分割線=====================
玩笑結束,正文開始。
其實這三年做iOS是我做計算機以來成長最多的時候,主要是四點。
  • 眼界的開闊,在做iOS之前整體見識比較短淺,基本上看的都是國內的站長論壇在做網站,即便做手機開發接觸的也是國內的那些無良廠商,對於產品的類型和其他內容想的都不是很多,在做iOS之後開始接觸到了各種新鮮的知識,同樣直接接觸到了國外更多更有意思的想法。
  • 技術的更迭,我第一次接觸MVC的東西居然是做iOS。這是真的。很多優秀的技術思想都是在做iOS的時候學到的,甚至我現在學HTML5也是爲了做移動開發,很大程度上這幾年很多有意思的技術都是靠移動平臺推進的。
  • 第一次覺得自己離成功如此之進,iOS是我第一次發現,原來自己和用戶的距離如此之進,當然我本身沒有賺到錢,否則也不用苦逼的在這裡回答問題,但是激勵了我不停的去寫東西,至少我做的東西能夠輕鬆的推到用戶面前。
  • 程序的美感,不知道是不是只有我有這種感覺,就是在這個之前我做遊戲不是很主動交互設計和用戶介面,但是在接觸iOS之後對於這些本來不該程序考慮的事情格外重視,甚至超過了程序的本身。
:wq
3月12日 · 13 条评论      
+-

Yop,2年iOS技术累积

24 票,来自 Lans、杨曦、Jenny 更多
看到这个题目,有点感触,因为自己这两年的职业发展和机遇,正是从接触了iOS之后开始的。

分几个阶段描述一下接触iOS以来自己的成长吧,也顺便在此为自己留一个纪录:

1)初识iOS
我的第一份正式工作是在香港当一名初级工程师,某天很要好的同事跟我介绍说iPhone的app开发很不错,appstore的模式独立开发者也可以做,约我一起创业做游戏。我答应了。
辞职之后因某些原因,他去了另一家公司上班,我则自学独立做了个游戏放上了appstore。

这个阶段经常在cocoachina上面泡销售版,学了相当多和appstore相关的东西。虽然只有一个产品,但是对整个开发环境认识较深。

2)项目经理
游戏上线之后,由于本人对市场和销售毫无热情,因此并没有赚得第一桶金><
在我贫困潦倒的时候,一老友的朋友接触了我,邀请我过去他们公司负责iOS这块的发展,创业公司。
一周后我凭借对其产品的认识写了一纸文档,很偶然地被boss看到,便成了所谓的项目经理了。当时公司在6人左右。

这个阶段是我第一次在正式工作上进行团队合作(大学时期有短暂的非正式项目的管理经验)。首次在创业公司工作很有趣,收获了一群很好的工作伙伴。

3)产品经理
之后半年,公司成长到20人规模,而我的工作重心也从原来的项目开发管理转移到产品的规划和设计,人员的招聘和培养方面。公司氛围很融洽,我至今怀念。当时很经常和boss讨论产品,争论盈利模式,也越来越多地涉及到公司发展层面的问题。

这个阶段可以说是我成长最快的阶段。视野从员工的角度提升到了公司的层面,而且在一个快速发展的创业公司,体验到了创业的快乐和艰辛。期间还进行了较多的有益的阅读及实践,管理技巧也有所提升。最后是由于产品经理的定位,真正开始关注互联网和互联网产品(本人之前职业重心在于游戏行业),感觉逐渐确实地踏入了IT行业了。

4)创业者
上阶段后期,我在网上认识了我现在的合伙人,两人有着共同的游戏梦,它是设计师,我是工程师,一拍即合。随即我第二次北上,创业。创业的过程不得不说是很有趣的~ 有困惑,有成就,有诱惑,有赏识,有各种欢呼和喜悦,也有各种苦难和压力。直至这一刻,我们穷得身无分文,却对前景充满期待,甚至迫不及待。

在这个阶段,开始抛弃各种想法和空话,踏踏实实地一步一步往前走。得到了宝贵的创业伙伴,结识了很多朋友,接触到了以往无法触及的生活。开始经营自己的人脉,开始培养自己的影响力。

5)合作者
最近一段时间,开始为投资的事情奔波,开始结识到一些经验资源有一定累积的人,也结识到了许多走在我们前面的人。机会和机遇接踵而来,我们现在所面对的,是未来的可能性。

期待,一年之后的自己又会是哪种形态?
3月12日 · 4 条评论      
+-

朱磊,沉浸在移动互联网的浪潮中.

20 票,来自 Josn、猿人先森、Jenny 更多
Android开发者

09年6月份去买的Android手机,09年底写出应用,随即加入创业公司至今.
A. 眼界开阔
在做Android之前做的是银行外围业务,实在是厌恶了那种说话不算数,各方推诿责任的工作模式.几十人干了快一年,还没有人用过,挫败感太强了.接触Android后,差异感太大了.
  1. 原来只用一周就可以完成一个小产品;
  2. 原来这个东西放出去还能挣钱;
  3. 原来有很多人对你的产品感兴趣,并给出各种意见.
  4. 原来你也可以说,这个意见俺就是不接受.
  5. 原来创业公司可以这样起步,几个人,租个小两居.
  6. 原来团队开发可以如此高效.
  7. 原来想法可以如此的多,且大家的想法有如此多的交集.
  8. 原来别人也想到这个,并且比我们还先动手.
  9. 原来很多想法都如此的浅薄,禁不起推敲.
  10. 原来我们做的东西也可以Top 1.
  11. 原来有如此多的创业团队,会有Bump,Path,Flipboard这么精致的产品.
  12. 原来社区产品的运营很重要,用户个性的多样化,完全不按你规定的路线出牌
  13. 原来我必须对多样化的用户需求进行筛选,排级,剔除.叫的最响的不一定是最有用的需求
  14. 原来用户需要引导,用户也有反击.
B. 自我约束
这点收获也很大,创业公司,不规定你什么时候上下班,不规定你什么时候出活,没人明确的指定你要做成什么样.但大家都在一起工作,每天工作内容,质量,数量.大家都一清二楚.你需要:
  1. 自己去定开发计划,清楚自己在做什么.
  2. 自己去保证开发效率,当你在做自己的产品的时候,这种动力是油然而生的.
  3. 自己保证开发质量,作为小牛代码质量这个是基本功;UI/UE 也得努力学,不落后.
C. 学会规划
规划时间,规划产品,规划职业.学会一种方法.XY法.X轴代表你学习的广度,Y轴代表你学习的深度.
比如想成为Android开发高手:
X轴可以有:基础组件的使用,framework架构,设计模式,UI/UE
Y轴可以有:基础组件能够自定义,framework的源码深入阅读,设计模式的熟练使用,UI/UE的领悟.

这样你就可以很容易看出自己的方向,可以偏产品一点,那么UI/UE到什么程度,偏技术一些framework的源码阅读到什么程度.

D. 这是一个团队
学会协同工作,使用一些工具,google Doc,Trac,git等;定期做技术交流;定期做水果分享.达到知识共享.共同进步.
3月12日 · 2 条评论      
+-

夏锎,Zentertain创始人,iOS/Mac开发者

14 票,来自 郭远远、李继刚、pillar 更多
iOS开发者一枚。

1 App Store是全年不休的奥运会,每天和全球竞争,能形成全球视野。
2 持续关注Top Paid、Top Free榜,得到的信息量巨大。Top Grossing这个App Store上绝无仅有的榜单更是让开发者每天都能从盈利的角度锻炼自己的产品眼光。
3 在App Store公平透明的机制下,见证了许多无名小卒的产品大红大紫。这让我更相信产品自身的力量。
4 无数的案例让我相信,做对事情远比把事情做好重要。
3月12日 · 5 条评论      
+-

潘思霁,初学者的初学者,奔跑中的90后。(要上…

13 票,来自 李菲菲、夏潮凌、周潜 更多
一个菜鸟的成长
断断续续学了半年的android开发,最多算个初学者beta1.0,所以只能分享一些代码之外的成长和认知。
【大学的课程已经无法满足社会需求】
学习android开发,让我对“编程”这两个字有了更新的认识。让我明白了“编程”不仅仅是“冒泡法排序”和测试卷上的几道编程例题。不过还是要感谢带我入门的C语言老师。
【更加抓紧时间学习】
“断断续续”学,是因为那个时候课余时间真不多。就是在这种状态下,学会了如何挤压时间来学习开发。那个学期也是我吃盒饭吃得最多的一个学期。都说大学“轻松”,但是真正想要学点东西,时间还真的不够用,要抓紧。
【端正态度】
很多人对我说过:呐,你在学android啊!怎么不去学iphone开发?appstore才能赚钱,做android没前途的。关于android前途的讨论,我已经见过无数了。而我认为与其讨论那前途,还不如把时间用在学习上,学好了自然有出路。
【挫败感和成就感】
“不死小强”和“不死bug”永远是编程路上无法避免的,有时候真得能把一个初学者打趴下,让你心灰意冷。但是决定“吃这碗饭”,你的内心是决不能“死”。当经历“九九八十一难”之后,第一个app终于“出生”了,当时的喜悦和成就感是无法形容的。
【学会Google】
在开发中遇到了问题,那么最好的老师就是Google了。从使用Google到巧用Google,掌握了关键字的把握、搜索技巧,并开始英文搜索,培养阅读能力。
【打工和实习】
开发设备还是要花钱买的,对于学生党来说就只能靠打工赚钱了。开始做做小工,比如装修拉电线什么的。最后加上一些奖学金,买了第一台android机。这学期初开始准备找实习,于是学着写简历投简历,陆续投了几家,都被pass掉了。这些也都算是经历了吧。(最近一个蘑菇街,说是让我等电话面试,估计是pass掉了)
【发现更大的世界】
接触android开发,我发现我关注一个app的UI和交互已经超越了代码。于是近期我又开始学习交互设计这方面的知识,提升自己的app的体验。自己也感到奇怪为什么的“更大的世界”不是“代码的深入”而是“交互设计”,只能说“更大的世界”是未知的。而下个“更大的世界”同样未知,等待我去发现。

学习就是个成长的过程,写不了太专业的,就写点切身感受。
3月12日 · 5 条评论      
+-

黄程,做过android小游戏

10 票,来自 天昂、Zizon、徐恩平 更多
。拒绝闭门造车,多关注行业发展,尤其是通用的方法,工具,框架,流程等的发展。
。其实Android像极了当年的J2ME,各厂商的定制和扩展,各种终端的差异性,很大程度上反而阻碍了它的发展。一次iOS到Android的移植工作深刻感受到了这点。但又不能忽视和放弃这块。持续关注,有限投入。
。开发过程中,实际业务逻辑(比如游戏的实际逻辑)只占开发内容的20%,更多精力花在了底层的搭建,各种终端特异性的统一,各种辅助工具和方法的建立等。
。合理利用现成的框架和引擎,尽量不要重复发明轮子。
3月12日 · 添加评论      
+-

沈晓春,iOS app developer

9 票,来自 大强、齐小七、Zizon 更多
独立开发者,资源有限,所以很多想法是从有限的资源开始考虑问题
  •  专注于一个方面,做好了再想其他
  • 吃自己的狗粮,做自己要用的App,猜用户想要什么,大部分时候,用户表达的可能是错误的
  • 做小范围内用户必须要用的,而不是大众可能会用的应用,比如,围棋相关应用,这是个小范围的应用,爱围棋的用户可能会用。做大众应用,可能无法竞争过那些巨头,如果他们进入。小范围的,巨头可能不屑于进入
  • 尊重版权,可以借鉴别人的产品,但不能侵害别人的版权,包括音乐、图像等
  • 简单有效的赢利模式,比如做收费应用0.99$
  • 保持初心,有时做应用做得觉得累了,烦了,想想,当初为何要做应用,其实就是爱好,自己用手机应用解决自己的问题
3月13日 · 2 条评论      
+-

黄利庆,曾经从事Linux/Android嵌入式系统研究…

7 票,来自 YANG、杨扬、胡维 更多
受OurDearAmy邀请回答 :) 我在前公司从事的是Android系统级开发,写应用的话,几个小工具,还有一个不幸半路夭折的电子市场。

1. 视野大大开阔了。简单的举个例子,RIL(Radio Layer Interface)的设计。摸过几个平台:MTK,展信,威盛via,broncho,对手机软件RIL设计也有一些经验,但都是传统的。第一次看了Android的RIL 代码,设计之巧妙,代码短小精悍,令人叹服,你要知道,Broncho MMI ril层共15万行C++代码。RIL C层与应用层用socket通讯,传统的就是一个传个指针进来,强制转化为结构体。mock-ril是个牛X的东西,用了google的protobuf,还有nodejs。没看错,是js。多年前,我就想到用动态脚本测试手机模组AT mmi,可惜只写些简单的ruby的测试用例。看了mock-ril,hold 不住了。Android在很多设计上借鉴web开发的思想。

2. 感到离自主创业越来越近。09年公司一些员工出去单干,写app去了。那时公司放弃自主开发的Broncho平台,转投入android。除了出方案,公司可以投入精力做工具类软件,ROM,电子市场(其实,就我一个人写)等等。现在想想,一个方向做好了,也会有不错的成就。但是公司的DNA决定了它很难转型。如谁谁谁说的:“带着70后做系统集成;带着80后做互联网;正带着90后做APP!”  app是个趋势。

3. 成长? 用到啥学啥,技术都在变化。写写blog,与朋友们分享,也因此认识很多同行优秀的开发者。
3月13日 · 添加评论      
+-

刘永宽,攻城狮

6 票,来自 周源、徐恩平、耿健桓 更多
做ios开发一年多,算不上经验丰富 但是收获还是有的
  1. 知道了用户体验的重要性,真正站到了用户角度去做产品
  2. 追求完美,固然没有完美的产品,但是完美是开发者的追求,有时候会为一个像素点的错位去不断的调试
  3. 第一次知道原来bug可以带来如此大的灾难,在前东家做过一个公司产品的通用模块,曾因为没有捕获异常而导致公司全线产品挂掉(千万级用户),虽然避免不了bug的出现,再小心不足为过
  4. 虽然ios市场门槛越来越高了,但是用心做产品会得到用户认可的
  5. 结交了圈内很多朋友
  6. 查文档,看英文的能力被提高了
3月12日 · 添加评论      
+-

halzhang,android&ios developer,两年Andro…

4 票,来自 李一民、黄志川、OurDearAmy 更多
1,爱玩了
手机里面的app上百个,每个都会玩一下,看看别人怎么做的,怎么设计的;
2,对产品有了入门级的认识
玩多了,对产品方面有了一下初步的认识。以后说不定会转向产品人员,不过现在主要还是想多写写代码;
3,人脉广了
认识很多圈内外的人,不一定都是从事开发工作的。
4,技术涉猎更加广泛
除了android,也开始做一些ios开发,wp7也有了解。
了解一下各个平台的差异化。好在哪里,不好在哪里,各个平台互相借鉴。体验一下各个平台的交互设计。
5,github,stack overflow经常上了
其实就是如何自己去解决那些开发过程中问到的一些问题。
学会在github找现有的解决方案,学会到stack overflow寻找问题的答案;
3月12日 · 1 条评论      
+-

yava,半瓶水

4 票,来自 刘永巧、陈然、李楠 更多
Android开发一年多,除了技术涨了点,薪水涨了点,剩下的只有这点个人感悟了:
  1. 个人能力有限,只有和一些志同道合的兄弟们在一起,才能做一些有影响力有意义的事情。 
  2. 某些情况下激情比技术更重要,不去“拼”,凭做出来的东西要比别人的出色。
  3. 任务分配得当,小弟会做得比你还出色,善于用人也是一个技术活
  4. 善于沟通,往往会事半功倍,沟通也是一个技术活:)
  5. 开发的产品被成千上万的人使用很兴奋。
昨天 22:16 · 1 条评论      
+-

蓝文,Python/Android/Ruby

3 票,来自 天昂、朱磊、周源
Android 开发3年多,最好的软件在android market上超过200w下载,虽然是朋友的创意,但是也是值得高兴的事情.

最近3年一直在做Android前端和服务器后端的开发,并且也同时涉及技术和团队管理,有一定提升。今年换了工作,会主要关注移动互联网应用市场的数据挖掘和分析,希望能够从更大更广的视野来看这个市场。




原创粉丝点击