在过去几个月的时间里,我一直在学习如何用Objective-C构建iOS应用,时至今日才终于有点眉目了。不得不感叹,这比我想象得要难多了。

纠结,困惑,沮丧,实际写代码的时间甚至还没有寻找并修复bug的时间多。但是当我终于可以把玩自己亲手做的手机app时,忽然感觉所有的努力都是值得的!

ec3deb8ca0071e7a3e65e8d3837b26c6

在制作app的道路上,我学到了很多——不仅仅关于如何开发iOS应用程序,还有如何总体规划,甚至编程技能也提高了。但是其实有很多问题是可以避免的,如果我在学Objective-C时采取其他方式的话。

整合这些经验,如果今天让我重新学习代码的话,我会这么做:

找个“码友”

首先要找到一个可以交流心得的“码友”。

我的一个朋友Josh,Python开发人员,也会Objective-C,非常感激我提出的很多实质性的问题(“如何再次运用if语句?”),而当我百思不得其解时,他也会帮我调试一二,正可谓教学相长。

老实说,有这样一个耐心的码农朋友给我解释基本编程原理,真心是获益匪浅。如果早点有这样一个朋友,我相信我就不会Objective-C上走这么多弯路。

利用所有可利用的资源

如果你身边没有这样一个耐心的码友,那么你可以使用下面的方式来获取帮助:

1. Stack Overflow

碰到特定的语法和开发问题,上Stack Overflow就对了。不过我个人还没有在网上提问过,因为光看别人提的问题和回答就够了。

2. 订阅网络期刊

网络中的学习资源错综复杂,有时候往往能让初学者晕头转向,一些网络期刊定期会将近期的精华内容推送给你,让你有选择地学习。我们推荐由码农网推出的《快乐码农》,你可以直接点此邮件订阅。

3. Treehouse

通过视频课程和内置的社区论坛教你如何编程。

4. askadev

通过askadev可以在你需要帮助的时候,给你连接到经验丰富的开发人员。我自己没试过,不知道这是否涵盖了所有的编程语言,不过有一点是好的,it’s free。所以下次你要是碰到什么难题,尽可以试试。

5. Codementor

如果你不介意花点钱来获取资深开发人员的帮助,那么不妨试试Codementor。它会为你匹配至最优选项,语种包括Android、iOS、HTML、CSS、PHP、Python等等等等。

6.橡皮鸭法

此方法的关键点在于,将自己的问题大声地宣之于口,解释给橡皮鸭或者其他没有生命的物体,哪怕是烤面包机亦可。

在你解说的时候,往往会灵机一现突然想到答案(或者发现有不对的地方)。

学习基本原理

很多东西之所以会成为拦路虎,是因为我们自己本身的错误理解或者不熟悉正在使用的技术所造成的。

例如,使用API意味着需要了解API是如何工作的,如何使用POST和GET请求,以及如何解析JSON数据。甚至连如何接收JSON数据也需要知道。

想要建立一个iOS应用程序,光学习Objective-C是不够的——至少这不足以构建我心目中的app。曾经的我就犯过这样的错误。

更糟糕的是,我时常会卡住,即使有论坛解说、网上教程以及书籍章节的解释,但是这些通通跳过了一些基本原理——以为我知道但其实我并不知道。

如果再让我重新学习,我一定好好掌握HTML和CSS的基础知识。如果再让我做app我绝对不会再像现在这样盲目开始,而是会先打好基础。

第一门语言

任何语言都是财富,哪怕我学的HTML和CSS至今也没有用武之地,我依然不觉得学习它们是浪费时间。

初学者一开始可以试试用HTML和CSS建立网站。这些其实都是标记语言,因此可能对你建立手机或者web应用程序没多大帮助。但是即使没有用处,我们在学习的过程中还是能获得很多的知识和经验,方便我们学习下一门编程语言。

如果你刚开始学代码但不知道从何处着手,可是挑选自己喜欢的书本、教程或者在线课程,只要你觉得ok就别犹豫。一旦你有了确切的目标,还可以马上转去学习其他不同的编程语言。

找一个自己真心想做的项目

我自认是个还算用功的人,先是在十几岁的时候学习了HTML和CSS,然后又在几年前学了有关Ruby的基础知识,以及最近又将目标放在了Python上面。

然后我又决定去学习Objective-C,不过我学习Objective-C不是因为我更喜欢它也不是因为看到别人在学我也眼馋,而是因为我想做一个iOS应用程序——我真心非常想亲自做一个。

可以说,学习Objective-C语言的激情比以往任何一种语言都要来得高昂。

最重要的是,当我碰到各种难题时,当我沮丧时,我都没有想过要放弃——因为这是我真心想做的项目。即便是小小的一个进步,都是我坚持下去的动力。

如果你正在考虑学习编码并且没有其他任何限制条件,那就选择自己真正热爱和构建项目所需要的编程语言。

每个人的学习过程都不尽相同,所以你的经历经验可能与我的也存在不同,不过如果你正在起步阶段或者正在考虑学习编码,我真心希望我的经验教训能帮你学得更快。


译文链接:http://www.codeceo.com/article/what-to-do-if-be-programmer.html
英文原文:What I would do differently if I was learning to code today
翻译作者:码农网 – 小峰