Before The Detailed Plan
Computer science as a subject may be elusive, but coding is not that hard at all.
However, before you passionately embark on this journey. You gotta have a plan - no need to be detailed. But, by just showing you some basic steps and their corresponding due dates, you can largely assure yourself this will work out. So, psychologically speaking, you set out to be a winner in the very beginning.
The next thing which is worthy of doing is to take a so-called “integrated learning” strategy. Let me elaborate on this a little bit. An integrated learning strategy is something I would also call a miscellaneous learning strategy. Well, the name tells it all - while you are learning, you have to make use of all the senses or mental capabilities that you have. See, while I was following one of the tutorials below to design apps, I don’t just read those tutorials through and follow them exactly step by step. Sometimes, I read out loud sentence by sentence and mess with the code. Sometimes, I try to explain to me what those programming terminologies mean, however shallow my understanding is. Other times, I do nothing but sit there reconstructing the code in my mind. Before bedtime, I usually would try to recall how much I have learned today.
As you might have realized this method is very efficient and can be used to learn things other than programming. If you want to streamline this strategy a bit and make it simple. The self-explaining process is something that should never be left out - when you can make others understand something, then that “something” has definitely been truly conquered by you.
So, I mentioned I bought this Mac on February 27th. I spent half a day to download necessary apps and familiarize myself with this machine. And, then I began scavenging through the Internet on how to start iOS programming. I found two beautifully written articles, which inspired me. They are also easy-to-follow step-by-step tutorials. So, I paste the links here just to show my respect.
Based on these two tutorials. I designed my own plan, which is originally written in Chinese. And I don’t have any intention to rewrite this. So, I will just leave it be this way. This plan is not finalized yet and will constantly be adjusted and revised - simply because I haven’t been through all the stages myself.
The Detailed Plan
1. 入门阶段（阶段一：时长30 Days）
入门教材的选择：1. 一定要极易上手。也就是说自己在编程语言（Swift、OC）并不熟悉的情况下，仍然能够写出一个功能完整的App。2. 教程应该简洁地、清晰地在整个学习的过程中讲解了iOS编程的重要概念、编程语言的语法规则，能够让自己作为初学者也能够容易、正确地理解。 推荐的材料如下，材料的学习顺序也可以作为参考：
1) Udemy - The Complete iOS8 and Swift Course
我的计划是学习到08 - instagram clone，对于第一阶段来说就OK了；这个是一个非常好的教材，原因很简单：2) The iOS Apprentice - Getting Started和3) Start Developing iOS Apps (Swift)都是文本的教材，需要自己去读和实践。而这个教材是视频版本；因此，在学习的过程中会更加直观，在概念理解上不用会有个人的阐释，会比自己在阅读文本类教程要清晰一些。
2) The iOS Apprentice - Getting Started
这套教程有4个App，每个App的功能都很全面，完全是fully-functioned的产品。所以这套教程的价值非常好。但是，我个人感觉学习曲线比较陡，每一个App都有很多内容需要去理解：比如，在第一个小游戏中，作者就加入了显示网络内容，这对于一个新手来说，可能是比较难理解的（尤其是像我这样并没有什么编程基础的人）。所以，我跟完第一个App之后，在第二个App进行到一半的时候，就换到了Apple自己的入门教程：Start Developing iOS Apps (Swift)。
3) Start Developing iOS Apps (Swift)
在完成iOS Apprentice的第一个App之后，我开始使用这个教程，而这个教程有很多内容复习了iOS Apprentice学到的内容。所以，这个对于学习来说是非常好的；其次，我在学习Apple的这个入门教程的时候，可以利用学习到的知识，自己去实践，而不用完全跟着教程走。 因此，将自己对这三个教程的学习路径总结起来，大概是这个样子的： iOS Apprentice - Lesson One (Getting Started) Start Developing iOS Apps (Swift) Udemy - The Complete iOS8 and Swift Course (05 - 08 (App to-do List) iOS Apprentice - Lesson Two (To-do List) Udemy - The Complete iOS8 and Swift Course (08 - The Instagram Clone) iOS Apprentice - Lesson Three () 这就算完成了自己第一阶段的学习，在学习的过程中一定要记笔记，同时将不同的问题归纳出来，试着自己去寻找这些问题的解决方案。这些经验将十分有效。 在这个阶段完成时，实际上我们还留存了一些教程没有完成，比如iOS Apprentice的最后一个App设计和Udemy - The Complete iOS8 and Swift Course (08 - The Instagram Clone)之后的课程内容，这个部分内容可以放到阶段二去实践一下。
阶段二这个部分主要是学习两个编程语言：Objective C和Swift，阶段一中所有的教程用的编程语言都是Swift，但是我们还是有必要去学习一下Objective C，毕竟Swift还是相对于Objective C来说是一门很新的语言。另外，在就业面试的过程中，Objective C的知识也是需要的。另外，在第一阶段留下来的实践内容，可以在这个阶段完全抛开教程的情况下，查看App设计要求，而去自主完成这个部分。
The Detailed Plan Revised Version
There is a great Github project which has listed in great detail many related free courses, books and tutorials. When I read through it, it occurs to me that my revised version on how to learn iOS programming would be redundent. Here is the link of this project I mentioned about.