如果我可以重新学习iOS开发(转)
在过去的几个月里,我一直在学习用Objective-C编写iOS app,最后我开始理清思绪。这比我想象中要难很多,也花了太长时间。
我经常遇到困难、感到沮丧,修复bug比实际写代码要花太多时间。但是,在我的手机上把玩我从头开发的app有一种让人惊奇的感觉。
用这种方式我学到了很多,除了开发iOS app,还有平常的编程。我还遇到了一些问题,如果用不同的方法学习Objective-C,或许我就可以避免了。
回头看,如果我今天要学习编程,那么我会做一些不一样的事情。
找到一名编程小伙伴
我还找到一种学习方法,那就是有一个可以交谈的、活生生的人。
我的合伙创始人Josh,主要做Python开发,实际上和我一起学习Objective-C,并为我解答了很多编程理论方面的问题(“怎么让一个if语句再次起作用?”),在我真正遇到难题时帮我调试。
至少有了极具耐心的编程伙伴,他可以解释基本的编程原则,这是莫大的帮助。在我用Objective-C搞清楚具体细节之前,Josh经常帮助我思考解决某个问题的大部分逻辑方法。
善用资源
如果你不够幸运,身边缺少有耐心的程序员解答问题,那么,其它一些地方可以让你从真实的人那里获得帮助:
关于具体语法或实现的问题,Stack Overflow是我最近访问最多的网站之一。我自己还没有在那儿问过问题(由于该社区对初学者相当友好,我对提问持谨慎态度),因为我很少需要去问——通过浏览其他人的问题的答案,我的大部分问题就得到解决了。
Treehouse通过视频课程教授编程,还建立了社区论坛,你可以在这里讨论有困难的bug,或者你在听课过程中碰到的具体练习。
在你需要帮助的时候,askadev支持你联系到有经验的开发者。我还没有尝试过这项服务,因此我不知道有多大用处、或是否囊括了所有编程语言,不过它是免费的,下次你有需要,不妨一试。
如果你想给有经验的开发者支付现金来获得帮助,Codementor会把你和熟悉你在学的语言的人匹配到一起。它们涵盖了Android、iOS、HTML、CSS、PHP、Python,以及很多技术。
小黄鸭问题的解决
如果你以前没有看到,《小黄鸭式解决问题》的博文是非常有用的。具体操作是:对着一个小黄鸭或其它静物,比如面包机,阐述你的问题,大声点儿。大声讲述问题的过程,经常有助于你自己意识到答案(或至少知道错在哪里了)。我已经发现,大声地讨论我的代码是一种难以置信的好习惯,每次在我找别人帮忙之前,我都要尽量这样做。
学习规范
在我学习编程的时光里,最影响我的就是对于我正在使用技术的误解和陌生。比如,开发API意味着我需要理解API的工作原理、怎样使用POST和GET请求、怎样分析JSON数据,甚至我需要掌握接收JSON数据。
学习Objective-C不是开发iOS app所需要知道的全部,至少,不是我想开发的那种。我犯了个错误,我认为只要知道Objective-C就行了。甚至更糟糕的,我经常遇到困难,因为Stack Overflow回答问题的人、在线教程和书籍章节都在解释如何用Objective-C开发,完全跳过了必需的、我需要知道的、基于web的原则,因为他们认为我知道了。
如果我今天重新开始,我将首先补充、积累HTML和CSS方面的知识。当我开始碰到一些我不太了解的新技术时,在准备用Objective-C实现之前,我会大概了解一下。
任何语言都可以起步
如果你真的不确定从哪里开始,或者你想开发什么,请不要因此受到影响。虽然我花时间学习Ruby和Python、还没有用它们完成任何项目,但是我不觉得时间被浪费了。
初学者通常的起点是学习HTML和CSS去开发网站。它们实际上是标记语言,如果你想开发移动或web app,貌似学习HTML和CSS是浪费时间。但是在这种情况下,你将获得知识和经验,对你继续学习编程语言是有帮助的。
如果你急切希望开始学习编程却不知道从哪儿开始,就挑一本书、教程或在线课程,只要你喜欢,就搞定它!一旦你对想开发的东西有了更好的理解,你总是可以选择学习一种不同的语言。
找到你真正关心的项目
对我而言,最大的学习曲线可能就是找到让我坚持学习代码的动机。过去我尝试了很多次:在我小时候学习HTML和CSS,几年后学习Ruby的基础知识,最近在学Python。
我决定学习Objective-C,不是因为它胜过了Ruby或Python我才喜欢,也不是因为我认识学Objective-C的人,只是因为我有一个iOS app的想法清单,我想完成——我真的想去开发。
我学习Objective-C的动机比以前学习任何其它语言都要强烈,因为我想开发的私人项目在鼓励着我。
最重要的是,随着难度加大,我感到沮丧、遇到困难时,我没有放弃——因为我正在开发我真正关心的项目。每次我设法实现一些新功能,运行良好,得到的收获甚至更好了,因为它是我有激情的项目的一部分。
如果你正在考虑学习编程,而你没有选择语言或平台的任何限制,我明确建议选择你真正有激情的项目,这样才能为项目需要所选择的语言打下基础。
每个人的学习方法都不同,因此你可能有着与我不同的经历,不过如果你只是刚起步、或在考虑学习编程的事情,那么希望我的经验和错误能帮你学得更快。
注1:小黄鸭调试法,又称橡皮鸭调试法,黄鸭除虫法(Rubber Duck Debugging)是软件工程中使用的调试代码方法之一。就是在程序的调试、纠错或测试过程中,耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感。http://zh.wikipedia.org/wiki/%E5%B0%8F%E9%BB%84%E9%B8%AD%E8%B0%83%E8%AF%95%E6%B3%95
(原文:What I would do differently if I was learning to code today 译者:腊八粥)
转自:http://www.cocoachina.com/programmer/20141128/10353.html
如果我可以重新学习iOS开发(转)的更多相关文章
- 【零基础学习iOS开发】【转载】
原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...
- 10 个学习iOS开发的最佳网站(转)
10 个学习iOS开发的最佳网站 作者 jopen 2012-09-26 08:59:56 1) Apple Learning Objective C Objective-C,通常写作ObjC和较少用 ...
- 那些在学习iOS开发前就应该知道的事(part 2)
英文原文:Things I wish I had known before starting iOS development—Part 2 http://www.cocoachina.com/ios/ ...
- Objective-C专题,是学习iOS开发的前奏(转)
第一个OC的类 来源:http://www.cnblogs.com/mjios/archive/2013/04/06/3002814.html 本文目录 一.语法简介 二.用Xcode创建第一个OC的 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】02-准备
在上一讲中,介绍了什么是iOS开发.说简单一点,iOS开发,就是开发运行在iPhone或者iPad上的软件.这么一说完,应该有很多人就会产生一些疑惑,比如学习iOS开发是不是一定要买iPhone?需不 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇
从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序
前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...
- 学习iOS开发的前言
一.什么是iOS 要想学习iOS开发,首先要搞清楚什么是iOS.iOS其实是一款操作系统,就像平时我们在电脑上用的XP.Win7,都是操作系统. 那什么是操作系统呢?操作系统其实是一种软件,是直接运行 ...
- 【零基础学习iOS开发】【01-前言】01-开篇
本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...
- 零基础学习iOS开发
零基础学习iOS开发不管你是否涉足过IT领域,只要你对iOS开发感兴趣,都可以阅读此专题. [零基础学习iOS开发][02-C语言]11-函数的声明和定义 摘要: 在上一讲中,简单介绍了函数的定义和使 ...
随机推荐
- python操作Excel文件
参考: http://www.cnblogs.com/tianyajuanke/p/4048844.html http://blog.chinaunix.net/uid-24701781-id-334 ...
- QPS计算方法
2016年3月14日 13:55:39 星期一 好久没写文章了, 神烦.....
- PHP json_encode / json_decode
2015年3月26日 14:14:16 PHP的json函数对几个特殊值的处理笔记 <?php //----------编码 $a = array(); $b = json_encode($a) ...
- 使用php脚本查看已开启的扩展
php安装时会将扩展包编译进去,对于一个正在运行中的数据库,查看php的扩展开启状况,第一种方式是通过配置文件查看,另外是通过phpinfo函数查看所有的配置,另外是使用php内置函数来查看,通过脚本 ...
- CentOS基础指令备忘
功能 指令 可用参数 示例 说明 新建文件夹 mkdir mkdir etc/temp 在当前目录的etc文件夹下新建temp文件夹 新建文件 vi vi abc.sh 新建名为abc.sh的 ...
- WdatePicker组件不显示
突然发现时间组件不显示了,以为是浏览器的问题.在本地服务器测试了一下发现一切正常. 怀疑是前段时间中毒引起的,用工具比对了一下WdatePicker的文件包,发现My97DatePicker.htm这 ...
- 【编程题目】在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。
第 17 题(字符串):题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 思路:此题非常容易. 最开始是想开辟一块空间存储每个字符出现的次数. 但转念一想,似乎 ...
- jquery[siblings]取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合
取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合,用于筛选同辈元素的表达式 $("#pageList").click(function(){ $(this).pa ...
- xmpp即时通讯的笔记(摘抄)
xmpp的使用: 即时通讯 instant messaging(IM) : -->实时收发信息! 即时通讯相关软件: **QQ,MSN,GoogleTalk,AIM,Jabber(XMPP别名 ...
- iOS 本人必装插件
本人觉得比较好用也实用的Xcode插件记录: 1. Alcatraz 插件通过它来管理 : https://github.com/alcatraz/Alcatraz.git 2. Cocoa ...